WARNING: proceeding, even though we could not create PATH aliases: Refusing to create helper binaries under temporary dir "/tmp" (codex_home: AbsolutePathBuf("/tmp/codex-home"))
Reading additional input from stdin...
{"type":"thread.started","thread_id":"01a0c67c-96dd-7123-9bd6-57582971485c"}
{"type":"turn.started"}
2026-09-22T00:20:49.228957Z ERROR codex_api::endpoint::responses_websocket: failed to connect to websocket: HTTP error: 404 Not Found, url: wss://app-llmproxy.dataannotation.tech/api/llm_proxy/openai/v1/responses
2026-09-22T00:20:49.420575Z ERROR codex_api::endpoint::responses_websocket: failed to connect to websocket: HTTP error: 404 Not Found, url: wss://app-llmproxy.dataannotation.tech/api/llm_proxy/openai/v1/responses
2026-09-22T00:20:49.814112Z ERROR codex_api::endpoint::responses_websocket: failed to connect to websocket: HTTP error: 404 Not Found, url: wss://app-llmproxy.dataannotation.tech/api/llm_proxy/openai/v1/responses
{"type":"error","message":"Reconnecting... 2/5 (unexpected status 404 Not Found: d9\r\n{\"error\":{\"message\":\"LlmProxy::Error: Unknown request URL: GET /api/llm_proxy/openai/v1/responses.\",\"type\":\"invalid_request_error\",\"code\":\"unknown_url\",\"context\":{\"request_id\":\"14a7f074-82f4-4e8c-9322-16ac01cdcf7c\"}}}, url: wss://app-llmproxy.dataannotation.tech/api/llm_proxy/openai/v1/responses, cf-ray: a3ed2557f85e4d08-BOS, request id: 14a7f074-82f4-4e8c-9322-16ac01cdcf7c)"}
2026-09-22T00:20:50.351510Z ERROR codex_api::endpoint::responses_websocket: failed to connect to websocket: HTTP error: 404 Not Found, url: wss://app-llmproxy.dataannotation.tech/api/llm_proxy/openai/v1/responses
{"type":"error","message":"Reconnecting... 3/5 (unexpected status 404 Not Found: d9\r\n{\"error\":{\"message\":\"LlmProxy::Error: Unknown request URL: GET /api/llm_proxy/openai/v1/responses.\",\"type\":\"invalid_request_error\",\"code\":\"unknown_url\",\"context\":{\"request_id\":\"677ba8bd-388b-4b03-8e1d-fba80237d563\"}}}, url: wss://app-llmproxy.dataannotation.tech/api/llm_proxy/openai/v1/responses, cf-ray: a3ed255b7dea8f6e-BOS, request id: 677ba8bd-388b-4b03-8e1d-fba80237d563)"}
2026-09-22T00:20:51.273643Z ERROR codex_api::endpoint::responses_websocket: failed to connect to websocket: HTTP error: 404 Not Found, url: wss://app-llmproxy.dataannotation.tech/api/llm_proxy/openai/v1/responses
{"type":"error","message":"Reconnecting... 4/5 (unexpected status 404 Not Found: d9\r\n{\"error\":{\"message\":\"LlmProxy::Error: Unknown request URL: GET /api/llm_proxy/openai/v1/responses.\",\"type\":\"invalid_request_error\",\"code\":\"unknown_url\",\"context\":{\"request_id\":\"80b328bd-4fc0-482f-8aa9-f484a0274ef4\"}}}, url: wss://app-llmproxy.dataannotation.tech/api/llm_proxy/openai/v1/responses, cf-ray: a3ed25613a5d6523-BOS, request id: 80b328bd-4fc0-482f-8aa9-f484a0274ef4)"}
2026-09-22T00:20:52.852452Z ERROR codex_api::endpoint::responses_websocket: failed to connect to websocket: HTTP error: 404 Not Found, url: wss://app-llmproxy.dataannotation.tech/api/llm_proxy/openai/v1/responses
{"type":"error","message":"Reconnecting... 5/5 (unexpected status 404 Not Found: d9\r\n{\"error\":{\"message\":\"LlmProxy::Error: Unknown request URL: GET /api/llm_proxy/openai/v1/responses.\",\"type\":\"invalid_request_error\",\"code\":\"unknown_url\",\"context\":{\"request_id\":\"36108f8e-11cd-40e2-9ba2-15479eb90714\"}}}, url: wss://app-llmproxy.dataannotation.tech/api/llm_proxy/openai/v1/responses, cf-ray: a3ed256b386368b4-BOS, request id: 36108f8e-11cd-40e2-9ba2-15479eb90714)"}
2026-09-22T00:20:56.145517Z ERROR codex_api::endpoint::responses_websocket: failed to connect to websocket: HTTP error: 404 Not Found, url: wss://app-llmproxy.dataannotation.tech/api/llm_proxy/openai/v1/responses
{"type":"item.completed","item":{"id":"item_0","type":"error","message":"Falling back from WebSockets to HTTPS transport. unexpected status 404 Not Found: d9\r\n{\"error\":{\"message\":\"LlmProxy::Error: Unknown request URL: GET /api/llm_proxy/openai/v1/responses.\",\"type\":\"invalid_request_error\",\"code\":\"unknown_url\",\"context\":{\"request_id\":\"43117554-f4a3-4622-9d74-9dff1611560f\"}}}, url: wss://app-llmproxy.dataannotation.tech/api/llm_proxy/openai/v1/responses, cf-ray: a3ed257fcf7a97e9-BOS, request id: 43117554-f4a3-4622-9d74-9dff1611560f"}}
{"type":"item.completed","item":{"id":"item_1","type":"agent_message","text":"I’ll trace the cloning request lifecycle for `pro_v2`—submission, queue/worker dispatch, and status serialization—then patch the mismatch and run the relevant tests."}}
{"type":"item.started","item":{"id":"item_2","type":"command_execution","command":"/bin/bash -lc \"pwd && rg --files -g '\"'!node_modules'\"' -g '\"'!vendor'\"' | sed -n '1,240p'\"","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_2","type":"command_execution","command":"/bin/bash -lc \"pwd && rg --files -g '\"'!node_modules'\"' -g '\"'!vendor'\"' | sed -n '1,240p'\"","aggregated_output":"/workspace\nvoice-synthsizer-job-handler/salutation/salutation_service.js\nvoice-synthsizer-job-handler/salutation/salutation_model.js\nvoice-synthsizer-job-handler/salutation/index.js\nvoice-synthsizer-job-handler/pm2-development.yml\nvoice-synthsizer-job-handler/recording/recording_model.js\nvoice-synthsizer-job-handler/recording/index.js\nvoice-synthsizer-job-handler/index.js\nvoice-synthsizer-job-handler/package.json\nvoice-synthsizer-job-handler/recording_salutation/recording_salutation_model.js\nvoice-synthsizer-job-handler/recording_salutation/index.js\nvoice-synthsizer-job-handler/pm2-production.yml\nrequirements.prod.gpu.txt\nvoice-synthsizer-job-handler/job/job_service.js\npackage.json\nvoice-synthsizer-job-handler/job/index.js\nvoice-synthsizer-job-handler/job/job_model.js\nvoice-synthsizer-job-handler/user_audio_profile/index.js\nvoice-synthsizer-job-handler/user_audio_profile/user_audio_profile_model.js\nvoice-synthsizer-job-handler/user_audio_profile/user_audio_profile_service.js\nrequirements.dev.local.txt\napp/services/s3/index.js\napp/services/s3/s3_service.js\nvoice-cloning/train_config.py\nvoice-cloning/score_models.py\nvoice-cloning/minimize_cloned_voice_model.py\nvoice-cloning/synthesize_speech.py\napp/services/utils/index.js\napp/services/utils/deleteFile.js\napp/services/utils/logService.js\napp/services/utils/bugsnag.js\nvoice-cloning/utils/transcription_utils.py\nvoice-cloning/utils/matching_utils.py\nvoice-cloning/utils/synthesize_utils.py\nvoice-cloning/utils/scoring_utils.py\nvoice-cloning/train_multispeaker_baseline_model.py\napp/services/voice_cloning/voice_cloning_model.js\napp/services/voice_cloning/index.js\napp/services/voice_cloning/voice_cloning_service.js\napp/services/sqs/index.js\napp/services/sqs/sqs_service.js\nrequirements.prod.cpu.txt\nvoice-cloning/assets/speaker_encoder_model/model_se.pth.tar\nvoice-cloning/assets/speaker_encoder_model/config_se.json\nvoice-cloning/assets/wgnd_2_0_unique_names_only.csv.gz\nvoice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv\nvoice-cloning/assets/wgnd_2_0_sources.csv.gz\nvoice-cloning/prepare_datasets.py\nvoice-cloning/score_salutation.py\nrequirements.dev.txt\nrequirements.txt\nREADME.md\nvoice-cloning/clone_voice.py\nvoice-cloning-job-handler/pm2-development.yml\nvoice-cloning-job-handler/index.js\nvoice-cloning-job-handler/package.json\nvoice-cloning/docs/potion-voice-cloning_Installation_Guide.md\nvoice-cloning/score_cloned_voice.py\nvoice-cloning-job-handler/voice_cloning/voice_cloning_model.js\nvoice-cloning-job-handler/user_audio_profile/index.js\nvoice-cloning-job-handler/voice_cloning/index.js\nvoice-cloning-job-handler/voice_cloning/voice_cloning_service.js\nvoice-cloning-job-handler/pm2-production.yml\nvoice-cloning-job-handler/user_audio_profile/user_audio_profile_service.js\nvoice-cloning-job-handler/user_audio_profile/user_audio_profile_model.js\n","exit_code":0,"status":"completed"}}
{"type":"item.started","item":{"id":"item_3","type":"command_execution","command":"/bin/bash -lc \"git status --short && rg -n \\\"pro_v2|tier|clone|status|null\\\" app voice-cloning-job-handler voice-synthsizer-job-handler --glob '*.js' --glob '*.json' --glob '*.py'\"","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_3","type":"command_execution","command":"/bin/bash -lc \"git status --short && rg -n \\\"pro_v2|tier|clone|status|null\\\" app voice-cloning-job-handler voice-synthsizer-job-handler --glob '*.js' --glob '*.json' --glob '*.py'\"","aggregated_output":"app/services/voice_cloning/voice_cloning_model.js:16:    status: {\napp/services/voice_cloning/voice_cloning_model.js:23:      default: null,\napp/services/voice_cloning/voice_cloning_model.js:27:      default: null,\napp/services/voice_cloning/voice_cloning_model.js:31:      default: null,\nvoice-synthsizer-job-handler/salutation/salutation_model.js:17:      default: null\r\nvoice-synthsizer-job-handler/salutation/salutation_model.js:21:      default: null,\r\nvoice-synthsizer-job-handler/salutation/salutation_model.js:26:      default: null,\r\nvoice-synthsizer-job-handler/salutation/salutation_model.js:31:      default: null,\r\nvoice-cloning-job-handler/index.js:139:          await voiceCloningService.update({ _id, status: 'processing' })\nvoice-cloning-job-handler/index.js:142:            status: 'processing',\nvoice-cloning-job-handler/index.js:203:          // clone the voice\nvoice-cloning-job-handler/index.js:206:          const trainingModelCommand = `python3 ../voice-cloning/clone_voice.py --baseline_model_path ../voice-cloning/pretrained-models/checkpoint_365000.pth --speaker_dataset_path ${outPath} --speaker_embeddings_path ${\nvoice-cloning-job-handler/index.js:220:            if (file.includes('vits_potion_clone'))\nvoice-cloning-job-handler/index.js:228:          const minimizeCloningModelCommand = `python3 ../voice-cloning/minimize_cloned_voice_model.py --voice_model_asset_path ${\nvoice-cloning-job-handler/index.js:242:          // Add the  code to update location of generated model and status into DB\nvoice-cloning-job-handler/index.js:243:          await voiceCloningService.update({ _id, status: 'completed' })\nvoice-cloning-job-handler/index.js:255:            status: 'completed',\nvoice-cloning-job-handler/index.js:287:          // update the db to set status as error\nvoice-cloning-job-handler/index.js:288:          await voiceCloningService.update({ _id, status: 'error' })\nvoice-cloning-job-handler/index.js:291:            status: 'error',\nvoice-cloning-job-handler/index.js:301:      console.error('Error while training voice clone', { error })\nvoice-synthsizer-job-handler/recording/recording_model.js:214:      default: null,\nvoice-synthsizer-job-handler/recording/recording_model.js:224:      default: null,\nvoice-synthsizer-job-handler/recording/recording_model.js:239:            default: null,\nvoice-synthsizer-job-handler/recording/recording_model.js:243:            default: null,\nvoice-synthsizer-job-handler/recording/recording_model.js:272:          status: {\nvoice-synthsizer-job-handler/recording/recording_model.js:274:            default: null,\nvoice-synthsizer-job-handler/recording/recording_model.js:284:      default: null,\nvoice-synthsizer-job-handler/recording/recording_model.js:292:      default: null,\nvoice-synthsizer-job-handler/recording/recording_model.js:296:      default: null,\nvoice-synthsizer-job-handler/recording/recording_model.js:302:          default: null,\nvoice-synthsizer-job-handler/recording/recording_model.js:306:          default: null,\nvoice-synthsizer-job-handler/recording/recording_model.js:312:      default: null,\nvoice-synthsizer-job-handler/recording/recording_model.js:321:      default: null,\nvoice-synthsizer-job-handler/recording/recording_model.js:326:      default: null,\nvoice-synthsizer-job-handler/recording/recording_model.js:331:      default: null,\nvoice-synthsizer-job-handler/recording/recording_model.js:335:      default: null,\nvoice-synthsizer-job-handler/recording/recording_model.js:340:      default: null,\nvoice-synthsizer-job-handler/recording/recording_model.js:345:      default: null,\nvoice-synthsizer-job-handler/recording/recording_model.js:350:      default: null,\nvoice-synthsizer-job-handler/recording/recording_model.js:355:      default: null,\nvoice-synthsizer-job-handler/recording/recording_model.js:364:      default: null,\nvoice-synthsizer-job-handler/recording/recording_model.js:369:      default: null,\nvoice-synthsizer-job-handler/recording/recording_model.js:382:      default: null,\nvoice-synthsizer-job-handler/recording/recording_model.js:387:      default: null,\nvoice-synthsizer-job-handler/recording/recording_model.js:399:      default: null,\nvoice-synthsizer-job-handler/index.js:98:            status: 'completed',\nvoice-synthsizer-job-handler/recording_salutation/recording_salutation_model.js:28:      default: null\r\nvoice-synthsizer-job-handler/recording_salutation/recording_salutation_model.js:32:      default: null\r\nvoice-synthsizer-job-handler/recording_salutation/recording_salutation_model.js:61:    status: {\r\nvoice-synthsizer-job-handler/recording_salutation/recording_salutation_model.js:63:      default: null\r\nvoice-cloning-job-handler/voice_cloning/voice_cloning_model.js:16:    status: {\nvoice-cloning-job-handler/voice_cloning/voice_cloning_model.js:23:      default: null,\nvoice-cloning-job-handler/voice_cloning/voice_cloning_model.js:27:      default: null,\nvoice-cloning-job-handler/voice_cloning/voice_cloning_model.js:31:      default: null,\nvoice-synthsizer-job-handler/job/job_model.js:34:    status: {\nvoice-synthsizer-job-handler/job/job_model.js:41:      default: null\nvoice-cloning-job-handler/user_audio_profile/user_audio_profile_model.js:16:    status: {\nvoice-cloning-job-handler/user_audio_profile/user_audio_profile_model.js:23:      default: null,\nvoice-cloning-job-handler/user_audio_profile/user_audio_profile_model.js:27:      default: null,\nvoice-synthsizer-job-handler/user_audio_profile/user_audio_profile_model.js:16:    status: {\nvoice-synthsizer-job-handler/user_audio_profile/user_audio_profile_model.js:23:      default: null,\nvoice-synthsizer-job-handler/user_audio_profile/user_audio_profile_model.js:27:      default: null,\n","exit_code":0,"status":"completed"}}
{"type":"item.started","item":{"id":"item_4","type":"command_execution","command":"/bin/bash -lc \"sed -n '1,260p' app/services/voice_cloning/voice_cloning_service.js && sed -n '1,180p' app/services/voice_cloning/voice_cloning_model.js && sed -n '1,380p' voice-cloning-job-handler/index.js && sed -n '1,220p' README.md && sed -n '1,180p' package.json\"","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_4","type":"command_execution","command":"/bin/bash -lc \"sed -n '1,260p' app/services/voice_cloning/voice_cloning_service.js && sed -n '1,180p' app/services/voice_cloning/voice_cloning_model.js && sed -n '1,380p' voice-cloning-job-handler/index.js && sed -n '1,220p' README.md && sed -n '1,180p' package.json\"","aggregated_output":"const StringifyUtils = require('../utils/logService')\n\nconst create = (VoiceCloningModel) => async (data) => {\n  try {\n    const newModel = new VoiceCloningModel({ ...data })\n    const savedModel = await newModel.save()\n    return savedModel\n  } catch (error) {\n    const details = { data }\n    console.log(\n      'ERROR - VOICE CLONING SERVICE > create',\n      StringifyUtils.potionErrorObj(error, details)\n    )\n    throw error\n  }\n}\n\nconst insertMany = (VoiceCloningModel) => async (data) => {\n  try {\n    const inserted = await VoiceCloningModel.insertMany(data)\n    return inserted\n  } catch (error) {\n    const details = { data }\n    console.log(\n      'ERROR - VOICE CLONING SERVICE > insertMany',\n      StringifyUtils.potionErrorObj(error, details)\n    )\n    throw error\n  }\n}\n\nconst read = (VoiceCloningModel) => async (filter) => {\n  try {\n    const foundModel = await VoiceCloningModel.findOne({\n      ...filter,\n      deleted: false,\n    })\n    return foundModel\n  } catch (error) {\n    const details = { filter }\n    console.log(\n      'ERROR - VOICE CLONING SERVICE > read',\n      StringifyUtils.potionErrorObj(error, details)\n    )\n    throw error\n  }\n}\n\nconst find = (VoiceCloningModel) => async (filter) => {\n  try {\n    const foundModels = await VoiceCloningModel.find({\n      ...filter,\n      deleted: false,\n    })\n    return foundModels\n  } catch (error) {\n    const details = { filter }\n    console.log(\n      'ERROR - VOICE CLONING SERVICE > find',\n      StringifyUtils.potionErrorObj(error, details)\n    )\n    throw error\n  }\n}\n\nconst update = (VoiceCloningModel) => async (data) => {\n  try {\n    const updatedModel = await VoiceCloningModel.findOneAndUpdate(\n      { _id: data._id },\n      data,\n      {\n        new: true,\n      }\n    )\n    return updatedModel\n  } catch (error) {\n    const details = { data }\n    console.log(\n      'ERROR - VOICE CLONING SERVICE > update',\n      StringifyUtils.potionErrorObj(error, details)\n    )\n    throw error\n  }\n}\n\nconst remove = (VoiceCloningModel) => async (filter) => {\n  try {\n    const updatedModel = await VoiceCloningModel.findOneAndUpdate(\n      { ...filter },\n      {\n        $set: {\n          deleted: true,\n        },\n      },\n      { new: true }\n    )\n    return updatedModel\n  } catch (error) {\n    const details = { filter }\n    console.log(\n      'ERROR - VOICE CLONING SERVICE > remove',\n      StringifyUtils.potionErrorObj(error, details)\n    )\n    throw error\n  }\n}\n\nconst removeMany = (VoiceCloningModel) => async (filter) => {\n  try {\n    const updatedModel = await VoiceCloningModel.updateMany(\n      { ...filter },\n      {\n        $set: {\n          deleted: true,\n        },\n      },\n      { new: true }\n    )\n    return updatedModel\n  } catch (error) {\n    const details = { filter }\n    console.log(\n      'ERROR - VOICE CLONING SERVICE > removeMany',\n      StringifyUtils.potionErrorObj(error, details)\n    )\n    throw error\n  }\n}\n\nmodule.exports = (VoiceCloningModel) => {\n  return {\n    create: create(VoiceCloningModel),\n    insertMany: insertMany(VoiceCloningModel),\n    read: read(VoiceCloningModel),\n    remove: remove(VoiceCloningModel),\n    removeMany: removeMany(VoiceCloningModel),\n    update: update(VoiceCloningModel),\n    find: find(VoiceCloningModel),\n  }\n}\nconst mongoose = require('mongoose')\nconst Schema = mongoose.Schema\n\nconst VoiceCloningSchema = Schema(\n  {\n    userId: {\n      type: Schema.Types.ObjectId,\n      ref: 'User',\n      required: true,\n    },\n    userAudioProfileId: {\n      type: Schema.Types.ObjectId,\n      ref: 'UserAudioProfile',\n      required: true,\n    },\n    status: {\n      type: String,\n      required: false,\n      default: 'created',\n    },\n    input: {\n      type: Schema.Types.Mixed,\n      default: null,\n    },\n    training_model: {\n      type: Schema.Types.Mixed,\n      default: null,\n    },\n    metadata: {\n      type: Schema.Types.Mixed,\n      default: null,\n    },\n    deleted: {\n      type: Boolean,\n      required: true,\n      default: false,\n    },\n  },\n  {\n    timestamps: true,\n  }\n)\n\nmodule.exports = mongoose.model('VoiceCloning', VoiceCloningSchema)\nconst fs = require('fs')\nconst https = require('https')\nconst exec = require('child_process').exec\nconst AWS = require('aws-sdk')\n\nconst Bugsnag = require('@bugsnag/js')\nconst mongoose = require('mongoose')\nconst version = require('./package.json').version\nconst sqs = require('../app/services/sqs')\nconst s3 = require('../app/services/s3')\nconst voiceCloningService = require('./voice_cloning')\nconst userAudioProfileService = require('./user_audio_profile')\n\nAWS.config.update({ region: 'us-west-2' })\nconst sqsQueueUrl = process.env.SQS_URL\nconst mongoUriDev = process.env.MONGODB_URI_DEV\nconst mongoUriStaging = process.env.MONGODB_URI_STAGING\nconst mongoUriProd = process.env.MONGODB_URI_PROD\nlet throttleMessageFetching = true\nconst APP_ENV = process.env.POTION_APP_ENV\n\nconst cloudFrontUrlProd = process.env.CLOUDFRONT_URL_PROD\nconst cloudFrontUrlDev = process.env.CLOUDFRONT_URL_DEV\nconst cloudFrontUrlStaging = process.env.CLOUDFRONT_URL_STAGING\n\nconst updateUrl = (str, cloudFrontUrl) => {\n  const host = new URL(str).host\n  return str.replace(`https://${host}`, cloudFrontUrl)\n}\n\nfunction connectDB(dbUri, retryCount = 0) {\n  return new Promise((resolve, reject) => {\n    console.log('Connection Attempt : ', retryCount)\n    mongoose.set('strictQuery', true)\n    mongoose\n      .connect(dbUri)\n      .then((msg) => {\n        console.log('Connected to Mongo DB !')\n        resolve()\n      })\n      .catch((err) => {\n        console.log('Failed to connect dns mongo: ', err)\n        if (retryCount < 6) {\n          retryCount++\n          connectDB(dbUri, retryCount)\n        }\n      })\n  })\n}\n\nfunction execShellCommand(cmd, logPath) {\n  // const exec = require(\"child_process\").exec;\n  return new Promise((resolve, reject) => {\n    exec(cmd, { maxBuffer: 1024 * 1000000 }, async (error, stdout, stderr) => {\n      if (error) {\n        console.log('Error while proccessing python command', error)\n        reject(error)\n      }\n      // console.log('Stdout --- ', stdout)\n      // console.log('Stderror --- ', stderr)\n      await fs.promises.writeFile(`${logPath}/error.log`, stderr)\n      await fs.promises.writeFile(`${logPath}/info.log`, stdout)\n\n      resolve()\n    })\n  })\n}\n\nasync function getFile(waveUrl, path) {\n  return new Promise((resolve) => {\n    https.get(waveUrl, (res) => {\n      const writeStream = fs.createWriteStream(path)\n\n      res.pipe(writeStream)\n\n      writeStream.on('finish', () => {\n        writeStream.close()\n        resolve()\n      })\n    })\n  })\n}\n\nfunction pad(s) {\n  while (s.length < 3) s = '0' + s // IN future we will need padding to 4\n  return s\n}\n\nconst processQueue = () => {\n  /* eslint-disable no-async-promise-executor */\n  return new Promise(async (resolve, reject) => {\n    try {\n      const response = await sqs.fetchMessageFromSQS(sqsQueueUrl)\n\n      if (\n        typeof response.Messages !== 'undefined' &&\n        response.Messages.length > 0\n      ) {\n        throttleMessageFetching = false\n        const job = JSON.parse(response.Messages[0].Body)\n        const receiptHandle = response.Messages[0].ReceiptHandle\n        console.log('job===', job)\n\n        const { metadata, input, _id, userAudioProfileId } = job._doc\n        console.log('userAudioProfileId', userAudioProfileId)\n        console.log('_id', _id)\n        const { env } = job\n        console.log('env', env)\n\n        console.log('metadata------', metadata)\n        console.log('input', input)\n        const DB_URI =\n          env === 'production'\n            ? mongoUriProd\n            : env === 'staging'\n            ? mongoUriStaging\n            : mongoUriDev\n\n        console.log('DB_URI ', DB_URI)\n        await connectDB(DB_URI)\n\n        const cloudFrontUrl =\n          env === 'production'\n            ? cloudFrontUrlProd\n            : env === 'staging'\n            ? cloudFrontUrlStaging\n            : cloudFrontUrlDev\n\n        try {\n          await sqs.deleteMessageFromSQS(sqsQueueUrl, receiptHandle)\n\n          const { directoryName } = metadata\n          console.log('directoryName', directoryName)\n          const logPath = `/mnt/efs/potion-voice/${env}/${directoryName}`\n          if (!fs.existsSync(logPath)) {\n            fs.mkdirSync(logPath, { recursive: true })\n          }\n          // update the db model to processing\n          await voiceCloningService.update({ _id, status: 'processing' })\n          await userAudioProfileService.update({\n            _id: userAudioProfileId,\n            status: 'processing',\n          })\n\n          // create directory for userid-useraudioprofileid if not exist\n          const rootPath = `/tmp/${directoryName}`\n          const wavePath = `${rootPath}/wav48/1`\n          if (!fs.existsSync(wavePath)) {\n            fs.mkdirSync(wavePath, { recursive: true })\n          }\n\n          const txtPath = `${rootPath}/txt/1`\n          if (!fs.existsSync(txtPath)) {\n            fs.mkdirSync(txtPath, { recursive: true })\n          }\n          // download the training data files and put it in respective directories\n          for (let index = 0; index < input.length; index++) {\n            const item = input[index]\n\n            const { waveUrl, originalText } = item\n            // download wave file\n            const waveFilePath = `${wavePath}/1_${pad('' + (index + 1))}.wav`\n\n            await getFile(updateUrl(waveUrl, cloudFrontUrl), waveFilePath)\n\n            const txtFilePath = `${txtPath}/1_${pad('' + (index + 1))}.txt`\n            await fs.promises.writeFile(txtFilePath, originalText)\n          }\n\n          const zipFileName = directoryName + '.tgz'\n\n          // /tmp/directoryName.tgz\n\n          await execShellCommand(\n            `cd /tmp && tar czvf ${zipFileName}  ${directoryName}`,\n            logPath\n          )\n          console.log('ZIP created ', zipFileName)\n\n          // re-sample audio\n          const SAMPLING_LABEL = `Time Taken for re-sampling ${directoryName}`\n          console.time(SAMPLING_LABEL)\n\n          const outputPath = `/mnt/efs/potion-voice/${env}/${directoryName}`\n\n          const samplingCommand = `python3 ../voice-cloning/prepare_datasets.py --dataset_preset potion_voice_cloning --dataset_archive_path /tmp/${zipFileName} --output_path ${outputPath}`\n          console.log('samplingCommand ', samplingCommand)\n          const samplingResponse = await execShellCommand(\n            samplingCommand,\n            logPath\n          )\n          console.timeEnd(SAMPLING_LABEL)\n\n          // /mnt/efs/potion-voice/${env}/speakrs.pth\n          // /mnt/efs/potion-voice/${env}/txt\n          // /mnt/efs/potion-voice/${env}/${directoryName}/wav\n\n          const outPath = `/mnt/efs/potion-voice/${env}/${directoryName}/sr22050/${directoryName}`\n\n          const resultsPath = outPath + '/results'\n\n          //update pth file for cloning\n          // clone the voice\n          const VOICE_CLONING_LABEL = `Time Taken for voice cloning ${directoryName}`\n          console.time(VOICE_CLONING_LABEL)\n          const trainingModelCommand = `python3 ../voice-cloning/clone_voice.py --baseline_model_path ../voice-cloning/pretrained-models/checkpoint_365000.pth --speaker_dataset_path ${outPath} --speaker_embeddings_path ${\n            outPath + '/speakers.pth'\n          } --output_path ${resultsPath}`\n\n          console.log('Training Model Command', trainingModelCommand)\n          const trainingResponse = await execShellCommand(\n            trainingModelCommand,\n            logPath\n          )\n\n          console.timeEnd(VOICE_CLONING_LABEL)\n\n          let generatedDirectoryName = ''\n          fs.readdirSync(`${resultsPath}/`).forEach((file) => {\n            if (file.includes('vits_potion_clone'))\n              // use output from above to get right path and directory name\n              generatedDirectoryName = file\n          })\n\n          // minimize cloning model\n          const VOICE_MINIMIZE_LABEL = `Time Taken for voice minimizing cloning ${directoryName}`\n          console.time(VOICE_MINIMIZE_LABEL)\n          const minimizeCloningModelCommand = `python3 ../voice-cloning/minimize_cloned_voice_model.py --voice_model_asset_path ${\n            resultsPath + '/' + generatedDirectoryName + '/'\n          } --voice_model_name checkpoint_365200.pth`\n\n          console.log(\n            'Minimize Cloning Model Command',\n            minimizeCloningModelCommand\n          )\n          const minimizeCloning = await execShellCommand(\n            minimizeCloningModelCommand,\n            logPath\n          )\n          console.timeEnd(VOICE_MINIMIZE_LABEL)\n\n          // Add the  code to update location of generated model and status into DB\n          await voiceCloningService.update({ _id, status: 'completed' })\n\n          const training_model_path = {\n            voice_model_path: `${resultsPath}/${generatedDirectoryName}/checkpoint_365200.pth`,\n            voice_model_config_path: `${resultsPath}/${generatedDirectoryName}/config.json`,\n            voice_model_speakers_file_path: `${outPath}/speakers.pth`, // TODO update the name to voice model speakers embeddings\n            voice_model_light_path: `${resultsPath}/${generatedDirectoryName}/checkpoint_365200_light.pth`,\n            voice_model_config_light_path: `${resultsPath}/${generatedDirectoryName}/config_light.json`,\n          }\n\n          await userAudioProfileService.update({\n            _id: userAudioProfileId,\n            status: 'completed',\n            training_model_path,\n          })\n\n          // add code to put that model into S3\n          let keys = Object.keys(training_model_path)\n\n          const training_model_s3_path = {}\n\n          for (let index = 0; index < keys.length; index++) {\n            const path = training_model_path[keys[index]]\n            const s3Path = await s3.upload({\n              filePath: path,\n              fileName: `${directoryName}/${path.split('/').pop()}`,\n              bucket: `potion-voice-users-training-model/${env}`,\n            })\n            training_model_s3_path[keys[index]] = s3Path\n          }\n          //  add S3 path to user audio profile model\n          await userAudioProfileService.update({\n            _id: userAudioProfileId,\n            training_model_s3_path,\n          })\n        } catch (error) {\n          console.log('error********************', error)\n          Bugsnag.notify(\n            new Error(\n              `Unable to train for voice cloning videos ` + JSON.stringify(job)\n            )\n          )\n          Bugsnag.notify(error)\n\n          // update the db to set status as error\n          await voiceCloningService.update({ _id, status: 'error' })\n          await userAudioProfileService.update({\n            _id: userAudioProfileId,\n            status: 'error',\n          })\n\n          resolve() // to continue working on new jobs\n        }\n      } else {\n        throttleMessageFetching = true\n      }\n      resolve()\n    } catch (error) {\n      console.error('Error while training voice clone', { error })\n      Bugsnag.notify(error)\n      resolve() // to continue working on new jobs\n    } finally {\n      mongoose.connection.close()\n    }\n  })\n}\n\nfunction sleep(ms) {\n  return new Promise((resolve) => {\n    setTimeout(resolve, ms)\n  })\n}\nconst init = async () => {\n  console.log('potion Voice Clone Process Started')\n  Bugsnag.start({\n    appVersion: APP_ENV + version,\n    apiKey: process.env.BUGSNAG_BACKEND_KEY,\n    releaseStage: process.env.NODE_ENV,\n  })\n\n  try {\n    while (true) {\n      await processQueue()\n      if (throttleMessageFetching) await sleep(2000)\n    }\n  } catch (error) {\n    Bugsnag.notify(error)\n  }\n}\ninit()\n# potion-voice\nPotion's Text-to-Speech Service (multi-speaker baseline model training, voice cloning and speech synthesising)\n{\n  \"name\": \"potion-voice\",\n  \"version\": \"1.0.0\",\n  \"description\": \"This will handle the voice cloning jobs\",\n  \"main\": \"index.js\",\n  \"scripts\": {},\n  \"dependencies\": {\n    \"@bugsnag/js\": \"^7.3.5\",\n    \"aws-sdk\": \"^2.752.0\",\n    \"fs-extra\": \"^9.0.1\",\n    \"mongoose\": \"^6.8.0\",\n    \"pm2\": \"^5.2.0\",\n    \"rimraf\": \"^3.0.2\",\n    \"uuid\": \"^8.3.2\"\n  },\n  \"devDependencies\": {\n    \"aws-code-deploy\": \"^1.0.11\"\n  },\n  \"author\": \"potion Team\",\n  \"license\": \"ISC\"\n}\n","exit_code":0,"status":"completed"}}
{"type":"item.completed","item":{"id":"item_5","type":"agent_message","text":"The current worker has no tier routing at all: every message is forced through the legacy VITS pipeline and assumes a Mongoose `_doc` envelope. I’m checking the producer/message contracts and adjacent workers now, because `pro_v2` likely uses a newer payload shape that explains both non-processing and `null` status results."}}
{"type":"item.started","item":{"id":"item_6","type":"command_execution","command":"/bin/bash -lc \"find . -maxdepth 3 -type f -not -path './.git/*' -print | sort && git log --oneline --decorate -15 && git branch -a && sed -n '1,220p' app/services/sqs/sqs_service.js && sed -n '1,180p' app/services/sqs/index.js && sed -n '1,180p' app/services/voice_cloning/index.js && sed -n '1,180p' voice-cloning-job-handler/voice_cloning/voice_cloning_model.js && sed -n '1,220p' voice-cloning-job-handler/package.json && sed -n '1,240p' voice-cloning-job-handler/pm2-development.yml && sed -n '1,240p' voice-cloning-job-handler/pm2-production.yml\"","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_6","type":"command_execution","command":"/bin/bash -lc \"find . -maxdepth 3 -type f -not -path './.git/*' -print | sort && git log --oneline --decorate -15 && git branch -a && sed -n '1,220p' app/services/sqs/sqs_service.js && sed -n '1,180p' app/services/sqs/index.js && sed -n '1,180p' app/services/voice_cloning/index.js && sed -n '1,180p' voice-cloning-job-handler/voice_cloning/voice_cloning_model.js && sed -n '1,220p' voice-cloning-job-handler/package.json && sed -n '1,240p' voice-cloning-job-handler/pm2-development.yml && sed -n '1,240p' voice-cloning-job-handler/pm2-production.yml\"","aggregated_output":"./.claude/settings.json\n./.gitignore\n./.styx_prs/pr_1.json\n./.styx_prs/pr_10.json\n./.styx_prs/pr_11.json\n./.styx_prs/pr_12.json\n./.styx_prs/pr_13.json\n./.styx_prs/pr_14.json\n./.styx_prs/pr_15.json\n./.styx_prs/pr_16.json\n./.styx_prs/pr_17.json\n./.styx_prs/pr_18.json\n./.styx_prs/pr_19.json\n./.styx_prs/pr_2.json\n./.styx_prs/pr_20.json\n./.styx_prs/pr_21.json\n./.styx_prs/pr_22.json\n./.styx_prs/pr_23.json\n./.styx_prs/pr_24.json\n./.styx_prs/pr_25.json\n./.styx_prs/pr_26.json\n./.styx_prs/pr_27.json\n./.styx_prs/pr_28.json\n./.styx_prs/pr_3.json\n./.styx_prs/pr_4.json\n./.styx_prs/pr_5.json\n./.styx_prs/pr_6.json\n./.styx_prs/pr_7.json\n./.styx_prs/pr_8.json\n./.styx_prs/pr_9.json\n./README.md\n./node_modules/acorn-walk/CHANGELOG.md\n./node_modules/acorn-walk/LICENSE\n./node_modules/acorn-walk/README.md\n./node_modules/acorn-walk/package.json\n./node_modules/acorn/CHANGELOG.md\n./node_modules/acorn/LICENSE\n./node_modules/acorn/README.md\n./node_modules/acorn/package.json\n./node_modules/agent-base/README.md\n./node_modules/agent-base/package.json\n./node_modules/amp-message/Readme.md\n./node_modules/amp-message/index.js\n./node_modules/amp-message/package.json\n./node_modules/amp/Readme.md\n./node_modules/amp/index.js\n./node_modules/amp/package.json\n./node_modules/ansi-colors/LICENSE\n./node_modules/ansi-colors/README.md\n./node_modules/ansi-colors/index.js\n./node_modules/ansi-colors/package.json\n./node_modules/ansi-colors/symbols.js\n./node_modules/ansi-styles/index.d.ts\n./node_modules/ansi-styles/index.js\n./node_modules/ansi-styles/license\n./node_modules/ansi-styles/package.json\n./node_modules/ansi-styles/readme.md\n./node_modules/anymatch/LICENSE\n./node_modules/anymatch/README.md\n./node_modules/anymatch/index.d.ts\n./node_modules/anymatch/index.js\n./node_modules/anymatch/package.json\n./node_modules/argparse/CHANGELOG.md\n./node_modules/argparse/LICENSE\n./node_modules/argparse/README.md\n./node_modules/argparse/index.js\n./node_modules/argparse/package.json\n./node_modules/ast-types/LICENSE\n./node_modules/ast-types/README.md\n./node_modules/ast-types/fork.d.ts\n./node_modules/ast-types/fork.js\n./node_modules/ast-types/main.d.ts\n./node_modules/ast-types/main.js\n./node_modules/ast-types/package.json\n./node_modules/ast-types/tsconfig.json\n./node_modules/ast-types/types.d.ts\n./node_modules/ast-types/types.js\n./node_modules/async-listener/.travis.yml\n./node_modules/async-listener/LICENSE\n./node_modules/async-listener/README.md\n./node_modules/async-listener/es6-wrapped-promise.js\n./node_modules/async-listener/glue.js\n./node_modules/async-listener/index.js\n./node_modules/async-listener/package.json\n./node_modules/async/CHANGELOG.md\n./node_modules/async/LICENSE\n./node_modules/async/README.md\n./node_modules/async/all.js\n./node_modules/async/allLimit.js\n./node_modules/async/allSeries.js\n./node_modules/async/any.js\n./node_modules/async/anyLimit.js\n./node_modules/async/anySeries.js\n./node_modules/async/apply.js\n./node_modules/async/applyEach.js\n./node_modules/async/applyEachSeries.js\n./node_modules/async/asyncify.js\n./node_modules/async/auto.js\n./node_modules/async/autoInject.js\n./node_modules/async/bower.json\n./node_modules/async/cargo.js\n./node_modules/async/cargoQueue.js\n./node_modules/async/compose.js\n./node_modules/async/concat.js\n./node_modules/async/concatLimit.js\n./node_modules/async/concatSeries.js\n./node_modules/async/constant.js\n./node_modules/async/detect.js\n./node_modules/async/detectLimit.js\n./node_modules/async/detectSeries.js\n./node_modules/async/dir.js\n./node_modules/async/doDuring.js\n./node_modules/async/doUntil.js\n./node_modules/async/doWhilst.js\n./node_modules/async/during.js\n./node_modules/async/each.js\n./node_modules/async/eachLimit.js\n./node_modules/async/eachOf.js\n./node_modules/async/eachOfLimit.js\n./node_modules/async/eachOfSeries.js\n./node_modules/async/eachSeries.js\n./node_modules/async/ensureAsync.js\n./node_modules/async/every.js\n./node_modules/async/everyLimit.js\n./node_modules/async/everySeries.js\n./node_modules/async/filter.js\n./node_modules/async/filterLimit.js\n./node_modules/async/filterSeries.js\n./node_modules/async/find.js\n./node_modules/async/findLimit.js\n./node_modules/async/findSeries.js\n./node_modules/async/flatMap.js\n./node_modules/async/flatMapLimit.js\n./node_modules/async/flatMapSeries.js\n./node_modules/async/foldl.js\n./node_modules/async/foldr.js\n./node_modules/async/forEach.js\n./node_modules/async/forEachLimit.js\n./node_modules/async/forEachOf.js\n./node_modules/async/forEachOfLimit.js\n./node_modules/async/forEachOfSeries.js\n./node_modules/async/forEachSeries.js\n./node_modules/async/forever.js\n./node_modules/async/groupBy.js\n./node_modules/async/groupByLimit.js\n./node_modules/async/groupBySeries.js\n./node_modules/async/index.js\n./node_modules/async/inject.js\n./node_modules/async/log.js\n./node_modules/async/map.js\n./node_modules/async/mapLimit.js\n./node_modules/async/mapSeries.js\n./node_modules/async/mapValues.js\n./node_modules/async/mapValuesLimit.js\n./node_modules/async/mapValuesSeries.js\n./node_modules/async/memoize.js\n./node_modules/async/nextTick.js\n./node_modules/async/package.json\n./node_modules/async/parallel.js\n./node_modules/async/parallelLimit.js\n./node_modules/async/priorityQueue.js\n./node_modules/async/queue.js\n./node_modules/async/race.js\n./node_modules/async/reduce.js\n./node_modules/async/reduceRight.js\n./node_modules/async/reflect.js\n./node_modules/async/reflectAll.js\n./node_modules/async/reject.js\n./node_modules/async/rejectLimit.js\n./node_modules/async/rejectSeries.js\n./node_modules/async/retry.js\n./node_modules/async/retryable.js\n./node_modules/async/select.js\n./node_modules/async/selectLimit.js\n./node_modules/async/selectSeries.js\n./node_modules/async/seq.js\n./node_modules/async/series.js\n./node_modules/async/setImmediate.js\n./node_modules/async/some.js\n./node_modules/async/someLimit.js\n./node_modules/async/someSeries.js\n./node_modules/async/sortBy.js\n./node_modules/async/timeout.js\n./node_modules/async/times.js\n./node_modules/async/timesLimit.js\n./node_modules/async/timesSeries.js\n./node_modules/async/transform.js\n./node_modules/async/tryEach.js\n./node_modules/async/unmemoize.js\n./node_modules/async/until.js\n./node_modules/async/waterfall.js\n./node_modules/async/whilst.js\n./node_modules/async/wrapSync.js\n./node_modules/at-least-node/LICENSE\n./node_modules/at-least-node/README.md\n./node_modules/at-least-node/index.js\n./node_modules/at-least-node/package.json\n./node_modules/aws-code-deploy/LICENSE\n./node_modules/aws-code-deploy/README.md\n./node_modules/aws-code-deploy/composer.json\n./node_modules/aws-code-deploy/package.json\n./node_modules/aws-sdk/CHANGELOG.md\n./node_modules/aws-sdk/CODE_OF_CONDUCT.md\n./node_modules/aws-sdk/LICENSE.txt\n./node_modules/aws-sdk/NOTICE.txt\n./node_modules/aws-sdk/README.md\n./node_modules/aws-sdk/browser.js\n./node_modules/aws-sdk/buildspec.yml\n./node_modules/aws-sdk/global.d.ts\n./node_modules/aws-sdk/global.js\n./node_modules/aws-sdk/index.d.ts\n./node_modules/aws-sdk/index.js\n./node_modules/aws-sdk/package.json\n./node_modules/aws-sdk/react-native.js\n./node_modules/axios/CHANGELOG.md\n./node_modules/axios/LICENSE\n./node_modules/axios/README.md\n./node_modules/axios/SECURITY.md\n./node_modules/axios/UPGRADE_GUIDE.md\n./node_modules/axios/index.d.ts\n./node_modules/axios/index.js\n./node_modules/axios/package.json\n./node_modules/balanced-match/LICENSE.md\n./node_modules/balanced-match/README.md\n./node_modules/balanced-match/index.js\n./node_modules/balanced-match/package.json\n./node_modules/base64-js/LICENSE\n./node_modules/base64-js/README.md\n./node_modules/base64-js/base64js.min.js\n./node_modules/base64-js/index.d.ts\n./node_modules/base64-js/index.js\n./node_modules/base64-js/package.json\n./node_modules/binary-extensions/binary-extensions.json\n./node_modules/binary-extensions/binary-extensions.json.d.ts\n./node_modules/binary-extensions/index.d.ts\n./node_modules/binary-extensions/index.js\n./node_modules/binary-extensions/license\n./node_modules/binary-extensions/package.json\n./node_modules/binary-extensions/readme.md\n./node_modules/blessed/.npmignore\n./node_modules/blessed/CHANGELOG.md\n./node_modules/blessed/LICENSE\n./node_modules/blessed/README.md\n./node_modules/blessed/index.js\n./node_modules/blessed/package.json\n./node_modules/bodec/LICENSE\n./node_modules/bodec/README.md\n./node_modules/bodec/bodec-node.js\n./node_modules/bodec/bodec.js\n./node_modules/bodec/package.json\n./node_modules/bowser/LICENSE\n./node_modules/bowser/README.md\n./node_modules/bowser/bundled.js\n./node_modules/bowser/es5.js\n./node_modules/bowser/index.d.ts\n./node_modules/bowser/package.json\n./node_modules/brace-expansion/LICENSE\n./node_modules/brace-expansion/README.md\n./node_modules/brace-expansion/index.js\n./node_modules/brace-expansion/package.json\n./node_modules/braces/CHANGELOG.md\n./node_modules/braces/LICENSE\n./node_modules/braces/README.md\n./node_modules/braces/index.js\n./node_modules/braces/package.json\n./node_modules/bson/LICENSE.md\n./node_modules/bson/README.md\n./node_modules/bson/bower.json\n./node_modules/bson/bson.d.ts\n./node_modules/bson/package.json\n./node_modules/buffer-from/LICENSE\n./node_modules/buffer-from/index.js\n./node_modules/buffer-from/package.json\n./node_modules/buffer-from/readme.md\n./node_modules/buffer/.travis.yml\n./node_modules/buffer/AUTHORS.md\n./node_modules/buffer/LICENSE\n./node_modules/buffer/README.md\n./node_modules/buffer/index.js\n./node_modules/buffer/package.json\n./node_modules/byline/LICENSE\n./node_modules/byline/README.md\n./node_modules/byline/package.json\n./node_modules/bytes/History.md\n./node_modules/bytes/LICENSE\n./node_modules/bytes/Readme.md\n./node_modules/bytes/index.js\n./node_modules/bytes/package.json\n./node_modules/chalk/index.d.ts\n./node_modules/chalk/license\n./node_modules/chalk/package.json\n./node_modules/chalk/readme.md\n./node_modules/charm/README.markdown\n./node_modules/charm/index.js\n./node_modules/charm/package.json\n./node_modules/chokidar/LICENSE\n./node_modules/chokidar/README.md\n./node_modules/chokidar/index.js\n./node_modules/chokidar/package.json\n./node_modules/cli-tableau/CHANGELOG.md\n./node_modules/cli-tableau/LICENSE\n./node_modules/cli-tableau/README.md\n./node_modules/cli-tableau/package.json\n./node_modules/color-convert/CHANGELOG.md\n./node_modules/color-convert/LICENSE\n./node_modules/color-convert/README.md\n./node_modules/color-convert/conversions.js\n./node_modules/color-convert/index.js\n./node_modules/color-convert/package.json\n./node_modules/color-convert/route.js\n./node_modules/color-name/LICENSE\n./node_modules/color-name/README.md\n./node_modules/color-name/index.js\n./node_modules/color-name/package.json\n./node_modules/commander/CHANGELOG.md\n./node_modules/commander/LICENSE\n./node_modules/commander/Readme.md\n./node_modules/commander/index.js\n./node_modules/commander/package.json\n./node_modules/concat-map/.travis.yml\n./node_modules/concat-map/LICENSE\n./node_modules/concat-map/README.markdown\n./node_modules/concat-map/index.js\n./node_modules/concat-map/package.json\n./node_modules/continuation-local-storage/.eslintrc\n./node_modules/continuation-local-storage/.travis.yml\n./node_modules/continuation-local-storage/CHANGELOG.md\n./node_modules/continuation-local-storage/LICENSE\n./node_modules/continuation-local-storage/README.md\n./node_modules/continuation-local-storage/context.js\n./node_modules/continuation-local-storage/package.json\n./node_modules/core-util-is/LICENSE\n./node_modules/core-util-is/README.md\n./node_modules/core-util-is/package.json\n./node_modules/croner/LICENSE\n./node_modules/croner/README.md\n./node_modules/croner/SECURITY.md\n./node_modules/croner/croner.png\n./node_modules/croner/package.json\n./node_modules/culvert/LICENSE\n./node_modules/culvert/README.md\n./node_modules/culvert/channel.js\n./node_modules/culvert/consume.js\n./node_modules/culvert/package.json\n./node_modules/data-uri-to-buffer/README.md\n./node_modules/data-uri-to-buffer/package.json\n./node_modules/dayjs/.editorconfig\n./node_modules/dayjs/CHANGELOG.md\n./node_modules/dayjs/LICENSE\n./node_modules/dayjs/README.md\n./node_modules/dayjs/dayjs.min.js\n./node_modules/dayjs/index.d.ts\n./node_modules/dayjs/locale.json\n./node_modules/dayjs/package.json\n./node_modules/debug/LICENSE\n./node_modules/debug/README.md\n./node_modules/debug/package.json\n./node_modules/deep-is/.travis.yml\n./node_modules/deep-is/LICENSE\n./node_modules/deep-is/README.markdown\n./node_modules/deep-is/index.js\n./node_modules/deep-is/package.json\n./node_modules/degenerator/README.md\n./node_modules/degenerator/package.json\n./node_modules/depd/History.md\n./node_modules/depd/LICENSE\n./node_modules/depd/Readme.md\n./node_modules/depd/index.js\n./node_modules/depd/package.json\n./node_modules/emitter-listener/.travis.yml\n./node_modules/emitter-listener/README.md\n./node_modules/emitter-listener/listener.js\n./node_modules/emitter-listener/package.json\n./node_modules/end-of-stream/LICENSE\n./node_modules/end-of-stream/README.md\n./node_modules/end-of-stream/index.js\n./node_modules/end-of-stream/package.json\n./node_modules/enquirer/CHANGELOG.md\n./node_modules/enquirer/LICENSE\n./node_modules/enquirer/README.md\n./node_modules/enquirer/index.d.ts\n./node_modules/enquirer/index.js\n./node_modules/enquirer/package.json\n./node_modules/error-stack-parser/CHANGELOG.md\n./node_modules/error-stack-parser/LICENSE\n./node_modules/error-stack-parser/README.md\n./node_modules/error-stack-parser/error-stack-parser.d.ts\n./node_modules/error-stack-parser/error-stack-parser.js\n./node_modules/error-stack-parser/package.json\n./node_modules/escape-string-regexp/index.d.ts\n./node_modules/escape-string-regexp/index.js\n./node_modules/escape-string-regexp/license\n./node_modules/escape-string-regexp/package.json\n./node_modules/escape-string-regexp/readme.md\n./node_modules/escodegen/LICENSE.BSD\n./node_modules/escodegen/README.md\n./node_modules/escodegen/escodegen.js\n./node_modules/escodegen/package.json\n./node_modules/esprima/ChangeLog\n./node_modules/esprima/LICENSE.BSD\n./node_modules/esprima/README.md\n./node_modules/esprima/package.json\n./node_modules/estraverse/.jshintrc\n./node_modules/estraverse/LICENSE.BSD\n./node_modules/estraverse/README.md\n./node_modules/estraverse/estraverse.js\n./node_modules/estraverse/gulpfile.js\n./node_modules/estraverse/package.json\n./node_modules/esutils/LICENSE.BSD\n./node_modules/esutils/README.md\n./node_modules/esutils/package.json\n./node_modules/eventemitter2/CHANGELOG.md\n./node_modules/eventemitter2/LICENSE.txt\n./node_modules/eventemitter2/README.md\n./node_modules/eventemitter2/eventemitter2.d.ts\n./node_modules/eventemitter2/index.js\n./node_modules/eventemitter2/package.json\n./node_modules/events/.npmignore\n./node_modules/events/.travis.yml\n./node_modules/events/.zuul.yml\n./node_modules/events/History.md\n./node_modules/events/LICENSE\n./node_modules/events/Readme.md\n./node_modules/events/events.js\n./node_modules/events/package.json\n./node_modules/fast-json-patch/LICENSE.txt\n./node_modules/fast-json-patch/README.md\n./node_modules/fast-json-patch/index.d.ts\n./node_modules/fast-json-patch/index.js\n./node_modules/fast-json-patch/index.mjs\n./node_modules/fast-json-patch/index.ts\n./node_modules/fast-json-patch/jasmine-run.mjs\n./node_modules/fast-json-patch/package.json\n./node_modules/fast-json-patch/tsc-to-mjs.sh\n./node_modules/fast-json-patch/webpack.config.js\n./node_modules/fast-levenshtein/LICENSE.md\n./node_modules/fast-levenshtein/README.md\n./node_modules/fast-levenshtein/levenshtein.js\n./node_modules/fast-levenshtein/package.json\n./node_modules/fclone/.npmignore\n./node_modules/fclone/.travis.yml\n./node_modules/fclone/LICENSE\n./node_modules/fclone/README.md\n./node_modules/fclone/bower.json\n./node_modules/fclone/fclone.d.ts\n./node_modules/fclone/package.json\n./node_modules/file-uri-to-path/LICENSE\n./node_modules/file-uri-to-path/README.md\n./node_modules/file-uri-to-path/package.json\n./node_modules/fill-range/LICENSE\n./node_modules/fill-range/README.md\n./node_modules/fill-range/index.js\n./node_modules/fill-range/package.json\n./node_modules/follow-redirects/LICENSE\n./node_modules/follow-redirects/README.md\n./node_modules/follow-redirects/debug.js\n./node_modules/follow-redirects/http.js\n./node_modules/follow-redirects/https.js\n./node_modules/follow-redirects/index.js\n./node_modules/follow-redirects/package.json\n./node_modules/fs-extra/CHANGELOG.md\n./node_modules/fs-extra/LICENSE\n./node_modules/fs-extra/README.md\n./node_modules/fs-extra/package.json\n./node_modules/fs.realpath/LICENSE\n./node_modules/fs.realpath/README.md\n./node_modules/fs.realpath/index.js\n./node_modules/fs.realpath/old.js\n./node_modules/fs.realpath/package.json\n./node_modules/ftp/LICENSE\n./node_modules/ftp/README.md\n./node_modules/ftp/TODO\n./node_modules/ftp/package.json\n./node_modules/function-bind/.editorconfig\n./node_modules/function-bind/.eslintrc\n./node_modules/function-bind/.jscs.json\n./node_modules/function-bind/.npmignore\n./node_modules/function-bind/.travis.yml\n./node_modules/function-bind/LICENSE\n./node_modules/function-bind/README.md\n./node_modules/function-bind/implementation.js\n./node_modules/function-bind/index.js\n./node_modules/function-bind/package.json\n./node_modules/get-uri/History.md\n./node_modules/get-uri/README.md\n./node_modules/get-uri/package.json\n./node_modules/git-node-fs/.npmignore\n./node_modules/git-node-fs/LICENSE\n./node_modules/git-node-fs/README.md\n./node_modules/git-node-fs/package.json\n./node_modules/git-node-fs/test.js\n./node_modules/git-sha1/LICENSE\n./node_modules/git-sha1/README.md\n./node_modules/git-sha1/git-sha1.js\n./node_modules/git-sha1/package.json\n./node_modules/glob-parent/CHANGELOG.md\n./node_modules/glob-parent/LICENSE\n./node_modules/glob-parent/README.md\n./node_modules/glob-parent/index.js\n./node_modules/glob-parent/package.json\n./node_modules/glob/LICENSE\n./node_modules/glob/README.md\n./node_modules/glob/common.js\n./node_modules/glob/glob.js\n./node_modules/glob/package.json\n./node_modules/glob/sync.js\n./node_modules/graceful-fs/LICENSE\n./node_modules/graceful-fs/README.md\n./node_modules/graceful-fs/clone.js\n./node_modules/graceful-fs/graceful-fs.js\n./node_modules/graceful-fs/legacy-streams.js\n./node_modules/graceful-fs/package.json\n./node_modules/graceful-fs/polyfills.js\n./node_modules/has-flag/index.d.ts\n./node_modules/has-flag/index.js\n./node_modules/has-flag/license\n./node_modules/has-flag/package.json\n./node_modules/has-flag/readme.md\n./node_modules/has/LICENSE-MIT\n./node_modules/has/README.md\n./node_modules/has/package.json\n./node_modules/http-errors/HISTORY.md\n./node_modules/http-errors/LICENSE\n./node_modules/http-errors/README.md\n./node_modules/http-errors/index.js\n./node_modules/http-errors/package.json\n./node_modules/http-proxy-agent/README.md\n./node_modules/http-proxy-agent/package.json\n./node_modules/https-proxy-agent/README.md\n./node_modules/https-proxy-agent/package.json\n./node_modules/iconv-lite/Changelog.md\n./node_modules/iconv-lite/LICENSE\n./node_modules/iconv-lite/README.md\n./node_modules/iconv-lite/package.json\n./node_modules/ieee754/LICENSE\n./node_modules/ieee754/README.md\n./node_modules/ieee754/index.js\n./node_modules/ieee754/package.json\n./node_modules/inflight/LICENSE\n./node_modules/inflight/README.md\n./node_modules/inflight/inflight.js\n./node_modules/inflight/package.json\n./node_modules/inherits/LICENSE\n./node_modules/inherits/README.md\n./node_modules/inherits/inherits.js\n./node_modules/inherits/inherits_browser.js\n./node_modules/inherits/package.json\n./node_modules/ini/LICENSE\n./node_modules/ini/README.md\n./node_modules/ini/ini.js\n./node_modules/ini/package.json\n./node_modules/ip-address/LICENSE\n./node_modules/ip-address/README.md\n./node_modules/ip-address/package.json\n./node_modules/ip/README.md\n./node_modules/ip/package.json\n./node_modules/is-binary-path/index.d.ts\n./node_modules/is-binary-path/index.js\n./node_modules/is-binary-path/license\n./node_modules/is-binary-path/package.json\n./node_modules/is-binary-path/readme.md\n./node_modules/is-core-module/.eslintrc\n./node_modules/is-core-module/.nycrc\n./node_modules/is-core-module/CHANGELOG.md\n./node_modules/is-core-module/LICENSE\n./node_modules/is-core-module/README.md\n./node_modules/is-core-module/core.json\n./node_modules/is-core-module/index.js\n./node_modules/is-core-module/package.json\n./node_modules/is-extglob/LICENSE\n./node_modules/is-extglob/README.md\n./node_modules/is-extglob/index.js\n./node_modules/is-extglob/package.json\n./node_modules/is-glob/LICENSE\n./node_modules/is-glob/README.md\n./node_modules/is-glob/index.js\n./node_modules/is-glob/package.json\n./node_modules/is-number/LICENSE\n./node_modules/is-number/README.md\n./node_modules/is-number/index.js\n./node_modules/is-number/package.json\n./node_modules/isarray/.npmignore\n./node_modules/isarray/.travis.yml\n./node_modules/isarray/Makefile\n./node_modules/isarray/README.md\n./node_modules/isarray/component.json\n./node_modules/isarray/index.js\n./node_modules/isarray/package.json\n./node_modules/isarray/test.js\n./node_modules/iserror/.gitattributes\n./node_modules/iserror/.npmignore\n./node_modules/iserror/.travis.yml\n./node_modules/iserror/CONTRIBUTING.md\n./node_modules/iserror/LICENSE\n./node_modules/iserror/README.md\n./node_modules/iserror/index.js\n./node_modules/iserror/package.json\n./node_modules/iserror/test.js\n./node_modules/jmespath/LICENSE\n./node_modules/jmespath/README.md\n./node_modules/jmespath/bower.json\n./node_modules/jmespath/jmespath.js\n./node_modules/jmespath/jp.js\n./node_modules/jmespath/package.json\n./node_modules/js-git/BACKERS-2.md\n./node_modules/js-git/BACKERS.md\n./node_modules/js-git/LICENSE\n./node_modules/js-git/README.md\n./node_modules/js-git/SPONSORS.md\n./node_modules/js-git/package.json\n./node_modules/json-stringify-safe/.npmignore\n./node_modules/json-stringify-safe/CHANGELOG.md\n./node_modules/json-stringify-safe/LICENSE\n./node_modules/json-stringify-safe/Makefile\n./node_modules/json-stringify-safe/README.md\n./node_modules/json-stringify-safe/package.json\n./node_modules/json-stringify-safe/stringify.js\n./node_modules/jsonfile/CHANGELOG.md\n./node_modules/jsonfile/LICENSE\n./node_modules/jsonfile/README.md\n./node_modules/jsonfile/index.js\n./node_modules/jsonfile/package.json\n./node_modules/jsonfile/utils.js\n./node_modules/kareem/LICENSE\n./node_modules/kareem/README.md\n./node_modules/kareem/index.js\n./node_modules/kareem/package.json\n./node_modules/lazy/.npmignore\n./node_modules/lazy/README.md\n./node_modules/lazy/lazy.js\n./node_modules/lazy/lazy.js~\n./node_modules/lazy/package.json\n./node_modules/lazy/package.json~\n./node_modules/levn/LICENSE\n./node_modules/levn/README.md\n./node_modules/levn/package.json\n./node_modules/lodash/LICENSE\n./node_modules/lodash/README.md\n./node_modules/lodash/_DataView.js\n./node_modules/lodash/_Hash.js\n./node_modules/lodash/_LazyWrapper.js\n./node_modules/lodash/_ListCache.js\n./node_modules/lodash/_LodashWrapper.js\n./node_modules/lodash/_Map.js\n./node_modules/lodash/_MapCache.js\n./node_modules/lodash/_Promise.js\n./node_modules/lodash/_Set.js\n./node_modules/lodash/_SetCache.js\n./node_modules/lodash/_Stack.js\n./node_modules/lodash/_Symbol.js\n./node_modules/lodash/_Uint8Array.js\n./node_modules/lodash/_WeakMap.js\n./node_modules/lodash/_apply.js\n./node_modules/lodash/_arrayAggregator.js\n./node_modules/lodash/_arrayEach.js\n./node_modules/lodash/_arrayEachRight.js\n./node_modules/lodash/_arrayEvery.js\n./node_modules/lodash/_arrayFilter.js\n./node_modules/lodash/_arrayIncludes.js\n./node_modules/lodash/_arrayIncludesWith.js\n./node_modules/lodash/_arrayLikeKeys.js\n./node_modules/lodash/_arrayMap.js\n./node_modules/lodash/_arrayPush.js\n./node_modules/lodash/_arrayReduce.js\n./node_modules/lodash/_arrayReduceRight.js\n./node_modules/lodash/_arraySample.js\n./node_modules/lodash/_arraySampleSize.js\n./node_modules/lodash/_arrayShuffle.js\n./node_modules/lodash/_arraySome.js\n./node_modules/lodash/_asciiSize.js\n./node_modules/lodash/_asciiToArray.js\n./node_modules/lodash/_asciiWords.js\n./node_modules/lodash/_assignMergeValue.js\n./node_modules/lodash/_assignValue.js\n./node_modules/lodash/_assocIndexOf.js\n./node_modules/lodash/_baseAggregator.js\n./node_modules/lodash/_baseAssign.js\n./node_modules/lodash/_baseAssignIn.js\n./node_modules/lodash/_baseAssignValue.js\n./node_modules/lodash/_baseAt.js\n./node_modules/lodash/_baseClamp.js\n./node_modules/lodash/_baseClone.js\n./node_modules/lodash/_baseConforms.js\n./node_modules/lodash/_baseConformsTo.js\n./node_modules/lodash/_baseCreate.js\n./node_modules/lodash/_baseDelay.js\n./node_modules/lodash/_baseDifference.js\n./node_modules/lodash/_baseEach.js\n./node_modules/lodash/_baseEachRight.js\n./node_modules/lodash/_baseEvery.js\n./node_modules/lodash/_baseExtremum.js\n./node_modules/lodash/_baseFill.js\n./node_modules/lodash/_baseFilter.js\n./node_modules/lodash/_baseFindIndex.js\n./node_modules/lodash/_baseFindKey.js\n./node_modules/lodash/_baseFlatten.js\n./node_modules/lodash/_baseFor.js\n./node_modules/lodash/_baseForOwn.js\n./node_modules/lodash/_baseForOwnRight.js\n./node_modules/lodash/_baseForRight.js\n./node_modules/lodash/_baseFunctions.js\n./node_modules/lodash/_baseGet.js\n./node_modules/lodash/_baseGetAllKeys.js\n./node_modules/lodash/_baseGetTag.js\n./node_modules/lodash/_baseGt.js\n./node_modules/lodash/_baseHas.js\n./node_modules/lodash/_baseHasIn.js\n./node_modules/lodash/_baseInRange.js\n./node_modules/lodash/_baseIndexOf.js\n./node_modules/lodash/_baseIndexOfWith.js\n./node_modules/lodash/_baseIntersection.js\n./node_modules/lodash/_baseInverter.js\n./node_modules/lodash/_baseInvoke.js\n./node_modules/lodash/_baseIsArguments.js\n./node_modules/lodash/_baseIsArrayBuffer.js\n./node_modules/lodash/_baseIsDate.js\n./node_modules/lodash/_baseIsEqual.js\n./node_modules/lodash/_baseIsEqualDeep.js\n./node_modules/lodash/_baseIsMap.js\n./node_modules/lodash/_baseIsMatch.js\n./node_modules/lodash/_baseIsNaN.js\n./node_modules/lodash/_baseIsNative.js\n./node_modules/lodash/_baseIsRegExp.js\n./node_modules/lodash/_baseIsSet.js\n./node_modules/lodash/_baseIsTypedArray.js\n./node_modules/lodash/_baseIteratee.js\n./node_modules/lodash/_baseKeys.js\n./node_modules/lodash/_baseKeysIn.js\n./node_modules/lodash/_baseLodash.js\n./node_modules/lodash/_baseLt.js\n./node_modules/lodash/_baseMap.js\n./node_modules/lodash/_baseMatches.js\n./node_modules/lodash/_baseMatchesProperty.js\n./node_modules/lodash/_baseMean.js\n./node_modules/lodash/_baseMerge.js\n./node_modules/lodash/_baseMergeDeep.js\n./node_modules/lodash/_baseNth.js\n./node_modules/lodash/_baseOrderBy.js\n./node_modules/lodash/_basePick.js\n./node_modules/lodash/_basePickBy.js\n./node_modules/lodash/_baseProperty.js\n./node_modules/lodash/_basePropertyDeep.js\n./node_modules/lodash/_basePropertyOf.js\n./node_modules/lodash/_basePullAll.js\n./node_modules/lodash/_basePullAt.js\n./node_modules/lodash/_baseRandom.js\n./node_modules/lodash/_baseRange.js\n./node_modules/lodash/_baseReduce.js\n./node_modules/lodash/_baseRepeat.js\n./node_modules/lodash/_baseRest.js\n./node_modules/lodash/_baseSample.js\n./node_modules/lodash/_baseSampleSize.js\n./node_modules/lodash/_baseSet.js\n./node_modules/lodash/_baseSetData.js\n./node_modules/lodash/_baseSetToString.js\n./node_modules/lodash/_baseShuffle.js\n./node_modules/lodash/_baseSlice.js\n./node_modules/lodash/_baseSome.js\n./node_modules/lodash/_baseSortBy.js\n./node_modules/lodash/_baseSortedIndex.js\n./node_modules/lodash/_baseSortedIndexBy.js\n./node_modules/lodash/_baseSortedUniq.js\n./node_modules/lodash/_baseSum.js\n./node_modules/lodash/_baseTimes.js\n./node_modules/lodash/_baseToNumber.js\n./node_modules/lodash/_baseToPairs.js\n./node_modules/lodash/_baseToString.js\n./node_modules/lodash/_baseTrim.js\n./node_modules/lodash/_baseUnary.js\n./node_modules/lodash/_baseUniq.js\n./node_modules/lodash/_baseUnset.js\n./node_modules/lodash/_baseUpdate.js\n./node_modules/lodash/_baseValues.js\n./node_modules/lodash/_baseWhile.js\n./node_modules/lodash/_baseWrapperValue.js\n./node_modules/lodash/_baseXor.js\n./node_modules/lodash/_baseZipObject.js\n./node_modules/lodash/_cacheHas.js\n./node_modules/lodash/_castArrayLikeObject.js\n./node_modules/lodash/_castFunction.js\n./node_modules/lodash/_castPath.js\n./node_modules/lodash/_castRest.js\n./node_modules/lodash/_castSlice.js\n./node_modules/lodash/_charsEndIndex.js\n./node_modules/lodash/_charsStartIndex.js\n./node_modules/lodash/_cloneArrayBuffer.js\n./node_modules/lodash/_cloneBuffer.js\n./node_modules/lodash/_cloneDataView.js\n./node_modules/lodash/_cloneRegExp.js\n./node_modules/lodash/_cloneSymbol.js\n./node_modules/lodash/_cloneTypedArray.js\n./node_modules/lodash/_compareAscending.js\n./node_modules/lodash/_compareMultiple.js\n./node_modules/lodash/_composeArgs.js\n./node_modules/lodash/_composeArgsRight.js\n./node_modules/lodash/_copyArray.js\n./node_modules/lodash/_copyObject.js\n./node_modules/lodash/_copySymbols.js\n./node_modules/lodash/_copySymbolsIn.js\n./node_modules/lodash/_coreJsData.js\n./node_modules/lodash/_countHolders.js\n./node_modules/lodash/_createAggregator.js\n./node_modules/lodash/_createAssigner.js\n./node_modules/lodash/_createBaseEach.js\n./node_modules/lodash/_createBaseFor.js\n./node_modules/lodash/_createBind.js\n./node_modules/lodash/_createCaseFirst.js\n./node_modules/lodash/_createCompounder.js\n./node_modules/lodash/_createCtor.js\n./node_modules/lodash/_createCurry.js\n./node_modules/lodash/_createFind.js\n./node_modules/lodash/_createFlow.js\n./node_modules/lodash/_createHybrid.js\n./node_modules/lodash/_createInverter.js\n./node_modules/lodash/_createMathOperation.js\n./node_modules/lodash/_createOver.js\n./node_modules/lodash/_createPadding.js\n./node_modules/lodash/_createPartial.js\n./node_modules/lodash/_createRange.js\n./node_modules/lodash/_createRecurry.js\n./node_modules/lodash/_createRelationalOperation.js\n./node_modules/lodash/_createRound.js\n./node_modules/lodash/_createSet.js\n./node_modules/lodash/_createToPairs.js\n./node_modules/lodash/_createWrap.js\n./node_modules/lodash/_customDefaultsAssignIn.js\n./node_modules/lodash/_customDefaultsMerge.js\n./node_modules/lodash/_customOmitClone.js\n./node_modules/lodash/_deburrLetter.js\n./node_modules/lodash/_defineProperty.js\n./node_modules/lodash/_equalArrays.js\n./node_modules/lodash/_equalByTag.js\n./node_modules/lodash/_equalObjects.js\n./node_modules/lodash/_escapeHtmlChar.js\n./node_modules/lodash/_escapeStringChar.js\n./node_modules/lodash/_flatRest.js\n./node_modules/lodash/_freeGlobal.js\n./node_modules/lodash/_getAllKeys.js\n./node_modules/lodash/_getAllKeysIn.js\n./node_modules/lodash/_getData.js\n./node_modules/lodash/_getFuncName.js\n./node_modules/lodash/_getHolder.js\n./node_modules/lodash/_getMapData.js\n./node_modules/lodash/_getMatchData.js\n./node_modules/lodash/_getNative.js\n./node_modules/lodash/_getPrototype.js\n./node_modules/lodash/_getRawTag.js\n./node_modules/lodash/_getSymbols.js\n./node_modules/lodash/_getSymbolsIn.js\n./node_modules/lodash/_getTag.js\n./node_modules/lodash/_getValue.js\n./node_modules/lodash/_getView.js\n./node_modules/lodash/_getWrapDetails.js\n./node_modules/lodash/_hasPath.js\n./node_modules/lodash/_hasUnicode.js\n./node_modules/lodash/_hasUnicodeWord.js\n./node_modules/lodash/_hashClear.js\n./node_modules/lodash/_hashDelete.js\n./node_modules/lodash/_hashGet.js\n./node_modules/lodash/_hashHas.js\n./node_modules/lodash/_hashSet.js\n./node_modules/lodash/_initCloneArray.js\n./node_modules/lodash/_initCloneByTag.js\n./node_modules/lodash/_initCloneObject.js\n./node_modules/lodash/_insertWrapDetails.js\n./node_modules/lodash/_isFlattenable.js\n./node_modules/lodash/_isIndex.js\n./node_modules/lodash/_isIterateeCall.js\n./node_modules/lodash/_isKey.js\n./node_modules/lodash/_isKeyable.js\n./node_modules/lodash/_isLaziable.js\n./node_modules/lodash/_isMaskable.js\n./node_modules/lodash/_isMasked.js\n./node_modules/lodash/_isPrototype.js\n./node_modules/lodash/_isStrictComparable.js\n./node_modules/lodash/_iteratorToArray.js\n./node_modules/lodash/_lazyClone.js\n./node_modules/lodash/_lazyReverse.js\n./node_modules/lodash/_lazyValue.js\n./node_modules/lodash/_listCacheClear.js\n./node_modules/lodash/_listCacheDelete.js\n./node_modules/lodash/_listCacheGet.js\n./node_modules/lodash/_listCacheHas.js\n./node_modules/lodash/_listCacheSet.js\n./node_modules/lodash/_mapCacheClear.js\n./node_modules/lodash/_mapCacheDelete.js\n./node_modules/lodash/_mapCacheGet.js\n./node_modules/lodash/_mapCacheHas.js\n./node_modules/lodash/_mapCacheSet.js\n./node_modules/lodash/_mapToArray.js\n./node_modules/lodash/_matchesStrictComparable.js\n./node_modules/lodash/_memoizeCapped.js\n./node_modules/lodash/_mergeData.js\n./node_modules/lodash/_metaMap.js\n./node_modules/lodash/_nativeCreate.js\n./node_modules/lodash/_nativeKeys.js\n./node_modules/lodash/_nativeKeysIn.js\n./node_modules/lodash/_nodeUtil.js\n./node_modules/lodash/_objectToString.js\n./node_modules/lodash/_overArg.js\n./node_modules/lodash/_overRest.js\n./node_modules/lodash/_parent.js\n./node_modules/lodash/_reEscape.js\n./node_modules/lodash/_reEvaluate.js\n./node_modules/lodash/_reInterpolate.js\n./node_modules/lodash/_realNames.js\n./node_modules/lodash/_reorder.js\n./node_modules/lodash/_replaceHolders.js\n./node_modules/lodash/_root.js\n./node_modules/lodash/_safeGet.js\n./node_modules/lodash/_setCacheAdd.js\n./node_modules/lodash/_setCacheHas.js\n./node_modules/lodash/_setData.js\n./node_modules/lodash/_setToArray.js\n./node_modules/lodash/_setToPairs.js\n./node_modules/lodash/_setToString.js\n./node_modules/lodash/_setWrapToString.js\n./node_modules/lodash/_shortOut.js\n./node_modules/lodash/_shuffleSelf.js\n./node_modules/lodash/_stackClear.js\n./node_modules/lodash/_stackDelete.js\n./node_modules/lodash/_stackGet.js\n./node_modules/lodash/_stackHas.js\n./node_modules/lodash/_stackSet.js\n./node_modules/lodash/_strictIndexOf.js\n./node_modules/lodash/_strictLastIndexOf.js\n./node_modules/lodash/_stringSize.js\n./node_modules/lodash/_stringToArray.js\n./node_modules/lodash/_stringToPath.js\n./node_modules/lodash/_toKey.js\n./node_modules/lodash/_toSource.js\n./node_modules/lodash/_trimmedEndIndex.js\n./node_modules/lodash/_unescapeHtmlChar.js\n./node_modules/lodash/_unicodeSize.js\n./node_modules/lodash/_unicodeToArray.js\n./node_modules/lodash/_unicodeWords.js\n./node_modules/lodash/_updateWrapDetails.js\n./node_modules/lodash/_wrapperClone.js\n./node_modules/lodash/add.js\n./node_modules/lodash/after.js\n./node_modules/lodash/array.js\n./node_modules/lodash/ary.js\n./node_modules/lodash/assign.js\n./node_modules/lodash/assignIn.js\n./node_modules/lodash/assignInWith.js\n./node_modules/lodash/assignWith.js\n./node_modules/lodash/at.js\n./node_modules/lodash/attempt.js\n./node_modules/lodash/before.js\n./node_modules/lodash/bind.js\n./node_modules/lodash/bindAll.js\n./node_modules/lodash/bindKey.js\n./node_modules/lodash/camelCase.js\n./node_modules/lodash/capitalize.js\n./node_modules/lodash/castArray.js\n./node_modules/lodash/ceil.js\n./node_modules/lodash/chain.js\n./node_modules/lodash/chunk.js\n./node_modules/lodash/clamp.js\n./node_modules/lodash/clone.js\n./node_modules/lodash/cloneDeep.js\n./node_modules/lodash/cloneDeepWith.js\n./node_modules/lodash/cloneWith.js\n./node_modules/lodash/collection.js\n./node_modules/lodash/commit.js\n./node_modules/lodash/compact.js\n./node_modules/lodash/concat.js\n./node_modules/lodash/cond.js\n./node_modules/lodash/conforms.js\n./node_modules/lodash/conformsTo.js\n./node_modules/lodash/constant.js\n./node_modules/lodash/core.js\n./node_modules/lodash/core.min.js\n./node_modules/lodash/countBy.js\n./node_modules/lodash/create.js\n./node_modules/lodash/curry.js\n./node_modules/lodash/curryRight.js\n./node_modules/lodash/date.js\n./node_modules/lodash/debounce.js\n./node_modules/lodash/deburr.js\n./node_modules/lodash/defaultTo.js\n./node_modules/lodash/defaults.js\n./node_modules/lodash/defaultsDeep.js\n./node_modules/lodash/defer.js\n./node_modules/lodash/delay.js\n./node_modules/lodash/difference.js\n./node_modules/lodash/differenceBy.js\n./node_modules/lodash/differenceWith.js\n./node_modules/lodash/divide.js\n./node_modules/lodash/drop.js\n./node_modules/lodash/dropRight.js\n./node_modules/lodash/dropRightWhile.js\n./node_modules/lodash/dropWhile.js\n./node_modules/lodash/each.js\n./node_modules/lodash/eachRight.js\n./node_modules/lodash/endsWith.js\n./node_modules/lodash/entries.js\n./node_modules/lodash/entriesIn.js\n./node_modules/lodash/eq.js\n./node_modules/lodash/escape.js\n./node_modules/lodash/escapeRegExp.js\n./node_modules/lodash/every.js\n./node_modules/lodash/extend.js\n./node_modules/lodash/extendWith.js\n./node_modules/lodash/fill.js\n./node_modules/lodash/filter.js\n./node_modules/lodash/find.js\n./node_modules/lodash/findIndex.js\n./node_modules/lodash/findKey.js\n./node_modules/lodash/findLast.js\n./node_modules/lodash/findLastIndex.js\n./node_modules/lodash/findLastKey.js\n./node_modules/lodash/first.js\n./node_modules/lodash/flake.lock\n./node_modules/lodash/flake.nix\n./node_modules/lodash/flatMap.js\n./node_modules/lodash/flatMapDeep.js\n./node_modules/lodash/flatMapDepth.js\n./node_modules/lodash/flatten.js\n./node_modules/lodash/flattenDeep.js\n./node_modules/lodash/flattenDepth.js\n./node_modules/lodash/flip.js\n./node_modules/lodash/floor.js\n./node_modules/lodash/flow.js\n./node_modules/lodash/flowRight.js\n./node_modules/lodash/forEach.js\n./node_modules/lodash/forEachRight.js\n./node_modules/lodash/forIn.js\n./node_modules/lodash/forInRight.js\n./node_modules/lodash/forOwn.js\n./node_modules/lodash/forOwnRight.js\n./node_modules/lodash/fp.js\n./node_modules/lodash/fromPairs.js\n./node_modules/lodash/function.js\n./node_modules/lodash/functions.js\n./node_modules/lodash/functionsIn.js\n./node_modules/lodash/get.js\n./node_modules/lodash/groupBy.js\n./node_modules/lodash/gt.js\n./node_modules/lodash/gte.js\n./node_modules/lodash/has.js\n./node_modules/lodash/hasIn.js\n./node_modules/lodash/head.js\n./node_modules/lodash/identity.js\n./node_modules/lodash/inRange.js\n./node_modules/lodash/includes.js\n./node_modules/lodash/index.js\n./node_modules/lodash/indexOf.js\n./node_modules/lodash/initial.js\n./node_modules/lodash/intersection.js\n./node_modules/lodash/intersectionBy.js\n./node_modules/lodash/intersectionWith.js\n./node_modules/lodash/invert.js\n./node_modules/lodash/invertBy.js\n./node_modules/lodash/invoke.js\n./node_modules/lodash/invokeMap.js\n./node_modules/lodash/isArguments.js\n./node_modules/lodash/isArray.js\n./node_modules/lodash/isArrayBuffer.js\n./node_modules/lodash/isArrayLike.js\n./node_modules/lodash/isArrayLikeObject.js\n./node_modules/lodash/isBoolean.js\n./node_modules/lodash/isBuffer.js\n./node_modules/lodash/isDate.js\n./node_modules/lodash/isElement.js\n./node_modules/lodash/isEmpty.js\n./node_modules/lodash/isEqual.js\n./node_modules/lodash/isEqualWith.js\n./node_modules/lodash/isError.js\n./node_modules/lodash/isFinite.js\n./node_modules/lodash/isFunction.js\n./node_modules/lodash/isInteger.js\n./node_modules/lodash/isLength.js\n./node_modules/lodash/isMap.js\n./node_modules/lodash/isMatch.js\n./node_modules/lodash/isMatchWith.js\n./node_modules/lodash/isNaN.js\n./node_modules/lodash/isNative.js\n./node_modules/lodash/isNil.js\n./node_modules/lodash/isNull.js\n./node_modules/lodash/isNumber.js\n./node_modules/lodash/isObject.js\n./node_modules/lodash/isObjectLike.js\n./node_modules/lodash/isPlainObject.js\n./node_modules/lodash/isRegExp.js\n./node_modules/lodash/isSafeInteger.js\n./node_modules/lodash/isSet.js\n./node_modules/lodash/isString.js\n./node_modules/lodash/isSymbol.js\n./node_modules/lodash/isTypedArray.js\n./node_modules/lodash/isUndefined.js\n./node_modules/lodash/isWeakMap.js\n./node_modules/lodash/isWeakSet.js\n./node_modules/lodash/iteratee.js\n./node_modules/lodash/join.js\n./node_modules/lodash/kebabCase.js\n./node_modules/lodash/keyBy.js\n./node_modules/lodash/keys.js\n./node_modules/lodash/keysIn.js\n./node_modules/lodash/lang.js\n./node_modules/lodash/last.js\n./node_modules/lodash/lastIndexOf.js\n./node_modules/lodash/lodash.js\n./node_modules/lodash/lodash.min.js\n./node_modules/lodash/lowerCase.js\n./node_modules/lodash/lowerFirst.js\n./node_modules/lodash/lt.js\n./node_modules/lodash/lte.js\n./node_modules/lodash/map.js\n./node_modules/lodash/mapKeys.js\n./node_modules/lodash/mapValues.js\n./node_modules/lodash/matches.js\n./node_modules/lodash/matchesProperty.js\n./node_modules/lodash/math.js\n./node_modules/lodash/max.js\n./node_modules/lodash/maxBy.js\n./node_modules/lodash/mean.js\n./node_modules/lodash/meanBy.js\n./node_modules/lodash/memoize.js\n./node_modules/lodash/merge.js\n./node_modules/lodash/mergeWith.js\n./node_modules/lodash/method.js\n./node_modules/lodash/methodOf.js\n./node_modules/lodash/min.js\n./node_modules/lodash/minBy.js\n./node_modules/lodash/mixin.js\n./node_modules/lodash/multiply.js\n./node_modules/lodash/negate.js\n./node_modules/lodash/next.js\n./node_modules/lodash/noop.js\n./node_modules/lodash/now.js\n./node_modules/lodash/nth.js\n./node_modules/lodash/nthArg.js\n./node_modules/lodash/number.js\n./node_modules/lodash/object.js\n./node_modules/lodash/omit.js\n./node_modules/lodash/omitBy.js\n./node_modules/lodash/once.js\n./node_modules/lodash/orderBy.js\n./node_modules/lodash/over.js\n./node_modules/lodash/overArgs.js\n./node_modules/lodash/overEvery.js\n./node_modules/lodash/overSome.js\n./node_modules/lodash/package.json\n./node_modules/lodash/pad.js\n./node_modules/lodash/padEnd.js\n./node_modules/lodash/padStart.js\n./node_modules/lodash/parseInt.js\n./node_modules/lodash/partial.js\n./node_modules/lodash/partialRight.js\n./node_modules/lodash/partition.js\n./node_modules/lodash/pick.js\n./node_modules/lodash/pickBy.js\n./node_modules/lodash/plant.js\n./node_modules/lodash/property.js\n./node_modules/lodash/propertyOf.js\n./node_modules/lodash/pull.js\n./node_modules/lodash/pullAll.js\n./node_modules/lodash/pullAllBy.js\n./node_modules/lodash/pullAllWith.js\n./node_modules/lodash/pullAt.js\n./node_modules/lodash/random.js\n./node_modules/lodash/range.js\n./node_modules/lodash/rangeRight.js\n./node_modules/lodash/rearg.js\n./node_modules/lodash/reduce.js\n./node_modules/lodash/reduceRight.js\n./node_modules/lodash/reject.js\n./node_modules/lodash/release.md\n./node_modules/lodash/remove.js\n./node_modules/lodash/repeat.js\n./node_modules/lodash/replace.js\n./node_modules/lodash/rest.js\n./node_modules/lodash/result.js\n./node_modules/lodash/reverse.js\n./node_modules/lodash/round.js\n./node_modules/lodash/sample.js\n./node_modules/lodash/sampleSize.js\n./node_modules/lodash/seq.js\n./node_modules/lodash/set.js\n./node_modules/lodash/setWith.js\n./node_modules/lodash/shuffle.js\n./node_modules/lodash/size.js\n./node_modules/lodash/slice.js\n./node_modules/lodash/snakeCase.js\n./node_modules/lodash/some.js\n./node_modules/lodash/sortBy.js\n./node_modules/lodash/sortedIndex.js\n./node_modules/lodash/sortedIndexBy.js\n./node_modules/lodash/sortedIndexOf.js\n./node_modules/lodash/sortedLastIndex.js\n./node_modules/lodash/sortedLastIndexBy.js\n./node_modules/lodash/sortedLastIndexOf.js\n./node_modules/lodash/sortedUniq.js\n./node_modules/lodash/sortedUniqBy.js\n./node_modules/lodash/split.js\n./node_modules/lodash/spread.js\n./node_modules/lodash/startCase.js\n./node_modules/lodash/startsWith.js\n./node_modules/lodash/string.js\n./node_modules/lodash/stubArray.js\n./node_modules/lodash/stubFalse.js\n./node_modules/lodash/stubObject.js\n./node_modules/lodash/stubString.js\n./node_modules/lodash/stubTrue.js\n./node_modules/lodash/subtract.js\n./node_modules/lodash/sum.js\n./node_modules/lodash/sumBy.js\n./node_modules/lodash/tail.js\n./node_modules/lodash/take.js\n./node_modules/lodash/takeRight.js\n./node_modules/lodash/takeRightWhile.js\n./node_modules/lodash/takeWhile.js\n./node_modules/lodash/tap.js\n./node_modules/lodash/template.js\n./node_modules/lodash/templateSettings.js\n./node_modules/lodash/throttle.js\n./node_modules/lodash/thru.js\n./node_modules/lodash/times.js\n./node_modules/lodash/toArray.js\n./node_modules/lodash/toFinite.js\n./node_modules/lodash/toInteger.js\n./node_modules/lodash/toIterator.js\n./node_modules/lodash/toJSON.js\n./node_modules/lodash/toLength.js\n./node_modules/lodash/toLower.js\n./node_modules/lodash/toNumber.js\n./node_modules/lodash/toPairs.js\n./node_modules/lodash/toPairsIn.js\n./node_modules/lodash/toPath.js\n./node_modules/lodash/toPlainObject.js\n./node_modules/lodash/toSafeInteger.js\n./node_modules/lodash/toString.js\n./node_modules/lodash/toUpper.js\n./node_modules/lodash/transform.js\n./node_modules/lodash/trim.js\n./node_modules/lodash/trimEnd.js\n./node_modules/lodash/trimStart.js\n./node_modules/lodash/truncate.js\n./node_modules/lodash/unary.js\n./node_modules/lodash/unescape.js\n./node_modules/lodash/union.js\n./node_modules/lodash/unionBy.js\n./node_modules/lodash/unionWith.js\n./node_modules/lodash/uniq.js\n./node_modules/lodash/uniqBy.js\n./node_modules/lodash/uniqWith.js\n./node_modules/lodash/uniqueId.js\n./node_modules/lodash/unset.js\n./node_modules/lodash/unzip.js\n./node_modules/lodash/unzipWith.js\n./node_modules/lodash/update.js\n./node_modules/lodash/updateWith.js\n./node_modules/lodash/upperCase.js\n./node_modules/lodash/upperFirst.js\n./node_modules/lodash/util.js\n./node_modules/lodash/value.js\n./node_modules/lodash/valueOf.js\n./node_modules/lodash/values.js\n./node_modules/lodash/valuesIn.js\n./node_modules/lodash/without.js\n./node_modules/lodash/words.js\n./node_modules/lodash/wrap.js\n./node_modules/lodash/wrapperAt.js\n./node_modules/lodash/wrapperChain.js\n./node_modules/lodash/wrapperLodash.js\n./node_modules/lodash/wrapperReverse.js\n./node_modules/lodash/wrapperValue.js\n./node_modules/lodash/xor.js\n./node_modules/lodash/xorBy.js\n./node_modules/lodash/xorWith.js\n./node_modules/lodash/zip.js\n./node_modules/lodash/zipObject.js\n./node_modules/lodash/zipObjectDeep.js\n./node_modules/lodash/zipWith.js\n./node_modules/log-driver/.npmignore\n./node_modules/log-driver/.travis.yml\n./node_modules/log-driver/LICENSE\n./node_modules/log-driver/Makefile\n./node_modules/log-driver/README.md\n./node_modules/log-driver/index.js\n./node_modules/log-driver/package.json\n./node_modules/lru-cache/LICENSE\n./node_modules/lru-cache/README.md\n./node_modules/lru-cache/index.js\n./node_modules/lru-cache/package.json\n./node_modules/memory-pager/.travis.yml\n./node_modules/memory-pager/LICENSE\n./node_modules/memory-pager/README.md\n./node_modules/memory-pager/index.js\n./node_modules/memory-pager/package.json\n./node_modules/memory-pager/test.js\n./node_modules/minimatch/LICENSE\n./node_modules/minimatch/README.md\n./node_modules/minimatch/minimatch.js\n./node_modules/minimatch/package.json\n./node_modules/mkdirp/CHANGELOG.md\n./node_modules/mkdirp/LICENSE\n./node_modules/mkdirp/index.js\n./node_modules/mkdirp/package.json\n./node_modules/mkdirp/readme.markdown\n./node_modules/module-details-from-path/.npmignore\n./node_modules/module-details-from-path/.travis.yml\n./node_modules/module-details-from-path/LICENSE\n./node_modules/module-details-from-path/README.md\n./node_modules/module-details-from-path/index.js\n./node_modules/module-details-from-path/package.json\n./node_modules/module-details-from-path/test.js\n./node_modules/mongodb-connection-string-url/.esm-wrapper.mjs\n./node_modules/mongodb-connection-string-url/LICENSE\n./node_modules/mongodb-connection-string-url/README.md\n./node_modules/mongodb-connection-string-url/package.json\n./node_modules/mongodb/LICENSE.md\n./node_modules/mongodb/README.md\n./node_modules/mongodb/mongodb.d.ts\n./node_modules/mongodb/package.json\n./node_modules/mongodb/tsconfig.json\n./node_modules/mongoose/.eslintrc.js\n./node_modules/mongoose/.mocharc.yml\n./node_modules/mongoose/LICENSE.md\n./node_modules/mongoose/README.md\n./node_modules/mongoose/SECURITY.md\n./node_modules/mongoose/browser.js\n./node_modules/mongoose/deno.lock\n./node_modules/mongoose/index.js\n./node_modules/mongoose/lgtm.yml\n./node_modules/mongoose/package.json\n./node_modules/mongoose/tsconfig.json\n./node_modules/mpath/.travis.yml\n./node_modules/mpath/History.md\n./node_modules/mpath/LICENSE\n./node_modules/mpath/README.md\n./node_modules/mpath/SECURITY.md\n./node_modules/mpath/index.js\n./node_modules/mpath/package.json\n./node_modules/mquery/.eslintignore\n./node_modules/mquery/.eslintrc.json\n./node_modules/mquery/.travis.yml\n./node_modules/mquery/History.md\n./node_modules/mquery/LICENSE\n./node_modules/mquery/Makefile\n./node_modules/mquery/README.md\n./node_modules/mquery/SECURITY.md\n./node_modules/mquery/package.json\n./node_modules/ms/index.js\n./node_modules/ms/license.md\n./node_modules/ms/package.json\n./node_modules/ms/readme.md\n./node_modules/mute-stream/LICENSE\n./node_modules/mute-stream/README.md\n./node_modules/mute-stream/mute.js\n./node_modules/mute-stream/package.json\n./node_modules/needle/README.md\n./node_modules/needle/license.txt\n./node_modules/needle/package.json\n./node_modules/netmask/CHANGELOG.md\n./node_modules/netmask/CREDITS.md\n./node_modules/netmask/README.md\n./node_modules/netmask/package.json\n./node_modules/normalize-path/LICENSE\n./node_modules/normalize-path/README.md\n./node_modules/normalize-path/index.js\n./node_modules/normalize-path/package.json\n./node_modules/nssocket/.npmignore\n./node_modules/nssocket/.travis.yml\n./node_modules/nssocket/LICENSE\n./node_modules/nssocket/README.md\n./node_modules/nssocket/package.json\n./node_modules/once/LICENSE\n./node_modules/once/README.md\n./node_modules/once/once.js\n./node_modules/once/package.json\n./node_modules/optionator/CHANGELOG.md\n./node_modules/optionator/LICENSE\n./node_modules/optionator/README.md\n./node_modules/optionator/package.json\n./node_modules/pac-proxy-agent/README.md\n./node_modules/pac-proxy-agent/package.json\n./node_modules/pac-resolver/README.md\n./node_modules/pac-resolver/package.json\n./node_modules/pako/CHANGELOG.md\n./node_modules/pako/LICENSE\n./node_modules/pako/README.md\n./node_modules/pako/index.js\n./node_modules/pako/package.json\n./node_modules/path-is-absolute/index.js\n./node_modules/path-is-absolute/license\n./node_modules/path-is-absolute/package.json\n./node_modules/path-is-absolute/readme.md\n./node_modules/path-parse/LICENSE\n./node_modules/path-parse/README.md\n./node_modules/path-parse/index.js\n./node_modules/path-parse/package.json\n./node_modules/picomatch/CHANGELOG.md\n./node_modules/picomatch/LICENSE\n./node_modules/picomatch/README.md\n./node_modules/picomatch/index.js\n./node_modules/picomatch/package.json\n./node_modules/pidusage/CHANGELOG.md\n./node_modules/pidusage/LICENSE\n./node_modules/pidusage/README.md\n./node_modules/pidusage/index.js\n./node_modules/pidusage/package.json\n./node_modules/pm2-axon-rpc/.travis.yml\n./node_modules/pm2-axon-rpc/History.md\n./node_modules/pm2-axon-rpc/Makefile\n./node_modules/pm2-axon-rpc/Readme.md\n./node_modules/pm2-axon-rpc/example.js\n./node_modules/pm2-axon-rpc/index.js\n./node_modules/pm2-axon-rpc/package.json\n./node_modules/pm2-axon/History.md\n./node_modules/pm2-axon/LICENSE\n./node_modules/pm2-axon/Readme.md\n./node_modules/pm2-axon/index.js\n./node_modules/pm2-axon/package.json\n./node_modules/pm2-deploy/LICENSE\n./node_modules/pm2-deploy/README.md\n./node_modules/pm2-deploy/deploy\n./node_modules/pm2-deploy/deploy.js\n./node_modules/pm2-deploy/package.json\n./node_modules/pm2-multimeter/README.markdown\n./node_modules/pm2-multimeter/index.js\n./node_modules/pm2-multimeter/package.json\n./node_modules/pm2-sysmonit/LICENSE-APACHE.txt\n./node_modules/pm2-sysmonit/README.md\n./node_modules/pm2-sysmonit/index.js\n./node_modules/pm2-sysmonit/package.json\n./node_modules/pm2/.gitattributes\n./node_modules/pm2/.mocharc.js\n./node_modules/pm2/.travis.yml\n./node_modules/pm2/CHANGELOG.md\n./node_modules/pm2/CONTRIBUTING.md\n./node_modules/pm2/GNU-AGPL-3.0.txt\n./node_modules/pm2/LICENSE\n./node_modules/pm2/README.md\n./node_modules/pm2/constants.js\n./node_modules/pm2/e2e_time\n./node_modules/pm2/index.js\n./node_modules/pm2/package.json\n./node_modules/pm2/paths.js\n./node_modules/pm2/pm2\n./node_modules/pm2/unit_time\n./node_modules/prelude-ls/CHANGELOG.md\n./node_modules/prelude-ls/LICENSE\n./node_modules/prelude-ls/README.md\n./node_modules/prelude-ls/package.json\n./node_modules/promptly/.editorconfig\n./node_modules/promptly/.jshintrc\n./node_modules/promptly/.npmignore\n./node_modules/promptly/.travis.yml\n./node_modules/promptly/LICENSE\n./node_modules/promptly/README.md\n./node_modules/promptly/index.js\n./node_modules/promptly/package.json\n./node_modules/proxy-agent/History.md\n./node_modules/proxy-agent/README.md\n./node_modules/proxy-agent/index.d.ts\n./node_modules/proxy-agent/index.js\n./node_modules/proxy-agent/package.json\n./node_modules/proxy-from-env/.eslintrc\n./node_modules/proxy-from-env/.travis.yml\n./node_modules/proxy-from-env/LICENSE\n./node_modules/proxy-from-env/README.md\n./node_modules/proxy-from-env/index.js\n./node_modules/proxy-from-env/package.json\n./node_modules/proxy-from-env/test.js\n./node_modules/pump/.travis.yml\n./node_modules/pump/LICENSE\n./node_modules/pump/README.md\n./node_modules/pump/index.js\n./node_modules/pump/package.json\n./node_modules/pump/test-browser.js\n./node_modules/pump/test-node.js\n./node_modules/punycode/LICENSE-MIT.txt\n./node_modules/punycode/README.md\n./node_modules/punycode/package.json\n./node_modules/punycode/punycode.js\n./node_modules/querystring/.History.md.un~\n./node_modules/querystring/.Readme.md.un~\n./node_modules/querystring/.package.json.un~\n./node_modules/querystring/.travis.yml\n./node_modules/querystring/History.md\n./node_modules/querystring/License.md\n./node_modules/querystring/Readme.md\n./node_modules/querystring/decode.js\n./node_modules/querystring/encode.js\n./node_modules/querystring/index.js\n./node_modules/querystring/package.json\n./node_modules/raw-body/HISTORY.md\n./node_modules/raw-body/LICENSE\n./node_modules/raw-body/README.md\n./node_modules/raw-body/SECURITY.md\n./node_modules/raw-body/index.d.ts\n./node_modules/raw-body/index.js\n./node_modules/raw-body/package.json\n./node_modules/read/LICENSE\n./node_modules/read/README.md\n./node_modules/read/package.json\n./node_modules/readable-stream/.npmignore\n./node_modules/readable-stream/LICENSE\n./node_modules/readable-stream/README.md\n./node_modules/readable-stream/duplex.js\n./node_modules/readable-stream/float.patch\n./node_modules/readable-stream/package.json\n./node_modules/readable-stream/passthrough.js\n./node_modules/readable-stream/readable.js\n./node_modules/readable-stream/transform.js\n./node_modules/readable-stream/writable.js\n./node_modules/readdirp/LICENSE\n./node_modules/readdirp/README.md\n./node_modules/readdirp/index.d.ts\n./node_modules/readdirp/index.js\n./node_modules/readdirp/package.json\n./node_modules/require-in-the-middle/LICENSE\n./node_modules/require-in-the-middle/README.md\n./node_modules/require-in-the-middle/index.js\n./node_modules/require-in-the-middle/package.json\n./node_modules/resolve/.editorconfig\n./node_modules/resolve/.eslintrc\n./node_modules/resolve/LICENSE\n./node_modules/resolve/SECURITY.md\n./node_modules/resolve/appveyor.yml\n./node_modules/resolve/async.js\n./node_modules/resolve/index.js\n./node_modules/resolve/package.json\n./node_modules/resolve/readme.markdown\n./node_modules/resolve/sync.js\n./node_modules/rimraf/CHANGELOG.md\n./node_modules/rimraf/LICENSE\n./node_modules/rimraf/README.md\n./node_modules/rimraf/bin.js\n./node_modules/rimraf/package.json\n./node_modules/rimraf/rimraf.js\n./node_modules/run-series/LICENSE\n./node_modules/run-series/README.md\n./node_modules/run-series/index.js\n./node_modules/run-series/package.json\n./node_modules/safe-buffer/LICENSE\n./node_modules/safe-buffer/README.md\n./node_modules/safe-buffer/index.d.ts\n./node_modules/safe-buffer/index.js\n./node_modules/safe-buffer/package.json\n./node_modules/safer-buffer/LICENSE\n./node_modules/safer-buffer/Porting-Buffer.md\n./node_modules/safer-buffer/Readme.md\n./node_modules/safer-buffer/dangerous.js\n./node_modules/safer-buffer/package.json\n./node_modules/safer-buffer/safer.js\n./node_modules/safer-buffer/tests.js\n./node_modules/sax/LICENSE\n./node_modules/sax/LICENSE-W3C.html\n./node_modules/sax/README.md\n./node_modules/sax/package.json\n./node_modules/semver/LICENSE\n./node_modules/semver/README.md\n./node_modules/semver/index.js\n./node_modules/semver/package.json\n./node_modules/semver/preload.js\n./node_modules/semver/range.bnf\n./node_modules/setprototypeof/LICENSE\n./node_modules/setprototypeof/README.md\n./node_modules/setprototypeof/index.d.ts\n./node_modules/setprototypeof/index.js\n./node_modules/setprototypeof/package.json\n./node_modules/shimmer/.travis.yml\n./node_modules/shimmer/LICENSE\n./node_modules/shimmer/README.md\n./node_modules/shimmer/index.js\n./node_modules/shimmer/package.json\n./node_modules/sift/MIT-LICENSE.txt\n./node_modules/sift/README.md\n./node_modules/sift/index.d.ts\n./node_modules/sift/index.js\n./node_modules/sift/package.json\n./node_modules/sift/sift.csp.min.js\n./node_modules/sift/sift.csp.min.js.map\n./node_modules/sift/sift.min.js\n./node_modules/sift/sift.min.js.map\n./node_modules/signal-exit/LICENSE.txt\n./node_modules/signal-exit/README.md\n./node_modules/signal-exit/index.js\n./node_modules/signal-exit/package.json\n./node_modules/signal-exit/signals.js\n./node_modules/smart-buffer/.prettierrc.yaml\n./node_modules/smart-buffer/.travis.yml\n./node_modules/smart-buffer/LICENSE\n./node_modules/smart-buffer/README.md\n./node_modules/smart-buffer/package.json\n./node_modules/socks-proxy-agent/README.md\n./node_modules/socks-proxy-agent/package.json\n./node_modules/socks/.prettierrc.yaml\n./node_modules/socks/.travis.yml\n./node_modules/socks/LICENSE\n./node_modules/socks/README.md\n./node_modules/socks/package.json\n./node_modules/source-map-support/LICENSE.md\n./node_modules/source-map-support/README.md\n./node_modules/source-map-support/browser-source-map-support.js\n./node_modules/source-map-support/package.json\n./node_modules/source-map-support/register.js\n./node_modules/source-map-support/source-map-support.js\n./node_modules/source-map/CHANGELOG.md\n./node_modules/source-map/LICENSE\n./node_modules/source-map/README.md\n./node_modules/source-map/package.json\n./node_modules/source-map/source-map.d.ts\n./node_modules/source-map/source-map.js\n./node_modules/sparse-bitfield/.npmignore\n./node_modules/sparse-bitfield/.travis.yml\n./node_modules/sparse-bitfield/LICENSE\n./node_modules/sparse-bitfield/README.md\n./node_modules/sparse-bitfield/index.js\n./node_modules/sparse-bitfield/package.json\n./node_modules/sparse-bitfield/test.js\n./node_modules/sprintf-js/CHANGELOG.md\n./node_modules/sprintf-js/CONTRIBUTORS.md\n./node_modules/sprintf-js/LICENSE\n./node_modules/sprintf-js/README.md\n./node_modules/sprintf-js/package.json\n./node_modules/stack-generator/.eslintrc.yml\n./node_modules/stack-generator/CHANGELOG.md\n./node_modules/stack-generator/CONTRIBUTING.md\n./node_modules/stack-generator/LICENSE\n./node_modules/stack-generator/README.md\n./node_modules/stack-generator/bower.json\n./node_modules/stack-generator/component.json\n./node_modules/stack-generator/karma.conf.ci.js\n./node_modules/stack-generator/karma.conf.js\n./node_modules/stack-generator/package.json\n./node_modules/stack-generator/stack-generator.js\n./node_modules/stackframe/.eslintrc.yml\n./node_modules/stackframe/CHANGELOG.md\n./node_modules/stackframe/CONTRIBUTING.md\n./node_modules/stackframe/LICENSE\n./node_modules/stackframe/README.md\n./node_modules/stackframe/bower.json\n./node_modules/stackframe/component.json\n./node_modules/stackframe/karma.conf.ci.js\n./node_modules/stackframe/karma.conf.js\n./node_modules/stackframe/package.json\n./node_modules/stackframe/stackframe-tests.ts\n./node_modules/stackframe/stackframe.d.ts\n./node_modules/stackframe/stackframe.js\n./node_modules/statuses/HISTORY.md\n./node_modules/statuses/LICENSE\n./node_modules/statuses/README.md\n./node_modules/statuses/codes.json\n./node_modules/statuses/index.js\n./node_modules/statuses/package.json\n./node_modules/string_decoder/.npmignore\n./node_modules/string_decoder/LICENSE\n./node_modules/string_decoder/README.md\n./node_modules/string_decoder/index.js\n./node_modules/string_decoder/package.json\n./node_modules/supports-color/browser.js\n./node_modules/supports-color/index.js\n./node_modules/supports-color/license\n./node_modules/supports-color/package.json\n./node_modules/supports-color/readme.md\n./node_modules/supports-preserve-symlinks-flag/.eslintrc\n./node_modules/supports-preserve-symlinks-flag/.nycrc\n./node_modules/supports-preserve-symlinks-flag/CHANGELOG.md\n./node_modules/supports-preserve-symlinks-flag/LICENSE\n./node_modules/supports-preserve-symlinks-flag/README.md\n./node_modules/supports-preserve-symlinks-flag/browser.js\n./node_modules/supports-preserve-symlinks-flag/index.js\n./node_modules/supports-preserve-symlinks-flag/package.json\n./node_modules/systeminformation/LICENSE\n./node_modules/systeminformation/README.md\n./node_modules/systeminformation/package.json\n./node_modules/to-regex-range/LICENSE\n./node_modules/to-regex-range/README.md\n./node_modules/to-regex-range/index.js\n./node_modules/to-regex-range/package.json\n./node_modules/toidentifier/HISTORY.md\n./node_modules/toidentifier/LICENSE\n./node_modules/toidentifier/README.md\n./node_modules/toidentifier/index.js\n./node_modules/toidentifier/package.json\n./node_modules/tr46/LICENSE.md\n./node_modules/tr46/README.md\n./node_modules/tr46/index.js\n./node_modules/tr46/package.json\n./node_modules/tslib/CopyrightNotice.txt\n./node_modules/tslib/LICENSE.txt\n./node_modules/tslib/README.md\n./node_modules/tslib/package.json\n./node_modules/tslib/tslib.d.ts\n./node_modules/tslib/tslib.es6.html\n./node_modules/tslib/tslib.es6.js\n./node_modules/tslib/tslib.html\n./node_modules/tslib/tslib.js\n./node_modules/tv4/LICENSE.txt\n./node_modules/tv4/README.md\n./node_modules/tv4/package.json\n./node_modules/tv4/tv4.async-jquery.js\n./node_modules/tv4/tv4.js\n./node_modules/tx2/.travis.yml\n./node_modules/tx2/API.md\n./node_modules/tx2/LICENSE\n./node_modules/tx2/README.md\n./node_modules/tx2/index.js\n./node_modules/tx2/package.json\n./node_modules/type-check/LICENSE\n./node_modules/type-check/README.md\n./node_modules/type-check/package.json\n./node_modules/undici-types/LICENSE\n./node_modules/undici-types/README.md\n./node_modules/undici-types/agent.d.ts\n./node_modules/undici-types/api.d.ts\n./node_modules/undici-types/balanced-pool.d.ts\n./node_modules/undici-types/cache-interceptor.d.ts\n./node_modules/undici-types/cache.d.ts\n./node_modules/undici-types/client-stats.d.ts\n./node_modules/undici-types/client.d.ts\n./node_modules/undici-types/connector.d.ts\n./node_modules/undici-types/content-type.d.ts\n./node_modules/undici-types/cookies.d.ts\n./node_modules/undici-types/diagnostics-channel.d.ts\n./node_modules/undici-types/dispatcher.d.ts\n./node_modules/undici-types/dispatcher1-wrapper.d.ts\n./node_modules/undici-types/env-http-proxy-agent.d.ts\n./node_modules/undici-types/errors.d.ts\n./node_modules/undici-types/eventsource.d.ts\n./node_modules/undici-types/fetch.d.ts\n./node_modules/undici-types/formdata.d.ts\n./node_modules/undici-types/global-dispatcher.d.ts\n./node_modules/undici-types/global-origin.d.ts\n./node_modules/undici-types/h2c-client.d.ts\n./node_modules/undici-types/handlers.d.ts\n./node_modules/undici-types/header.d.ts\n./node_modules/undici-types/index.d.ts\n./node_modules/undici-types/interceptors.d.ts\n./node_modules/undici-types/mock-agent.d.ts\n./node_modules/undici-types/mock-call-history.d.ts\n./node_modules/undici-types/mock-client.d.ts\n./node_modules/undici-types/mock-errors.d.ts\n./node_modules/undici-types/mock-interceptor.d.ts\n./node_modules/undici-types/mock-pool.d.ts\n./node_modules/undici-types/package.json\n./node_modules/undici-types/patch.d.ts\n./node_modules/undici-types/pool-stats.d.ts\n./node_modules/undici-types/pool.d.ts\n./node_modules/undici-types/proxy-agent.d.ts\n./node_modules/undici-types/readable.d.ts\n./node_modules/undici-types/retry-agent.d.ts\n./node_modules/undici-types/retry-handler.d.ts\n./node_modules/undici-types/round-robin-pool.d.ts\n./node_modules/undici-types/snapshot-agent.d.ts\n./node_modules/undici-types/socks5-proxy-agent.d.ts\n./node_modules/undici-types/util.d.ts\n./node_modules/undici-types/utility.d.ts\n./node_modules/undici-types/webidl.d.ts\n./node_modules/undici-types/websocket.d.ts\n./node_modules/universalify/LICENSE\n./node_modules/universalify/README.md\n./node_modules/universalify/index.js\n./node_modules/universalify/package.json\n./node_modules/unpipe/HISTORY.md\n./node_modules/unpipe/LICENSE\n./node_modules/unpipe/README.md\n./node_modules/unpipe/index.js\n./node_modules/unpipe/package.json\n./node_modules/url/.npmignore\n./node_modules/url/.travis.yml\n./node_modules/url/.zuul.yml\n./node_modules/url/LICENSE\n./node_modules/url/README.md\n./node_modules/url/package.json\n./node_modules/url/test.js\n./node_modules/url/url.js\n./node_modules/uuid/CHANGELOG.md\n./node_modules/uuid/CONTRIBUTING.md\n./node_modules/uuid/LICENSE.md\n./node_modules/uuid/README.md\n./node_modules/uuid/package.json\n./node_modules/uuid/wrapper.mjs\n./node_modules/vizion/.travis.yml\n./node_modules/vizion/CHANGELOG.md\n./node_modules/vizion/LICENSE\n./node_modules/vizion/README.md\n./node_modules/vizion/index.js\n./node_modules/vizion/package.json\n./node_modules/vm2/.eslintignore\n./node_modules/vm2/.eslintrc.js\n./node_modules/vm2/CHANGELOG.md\n./node_modules/vm2/LICENSE.md\n./node_modules/vm2/README.md\n./node_modules/vm2/index.d.ts\n./node_modules/vm2/index.js\n./node_modules/vm2/package.json\n./node_modules/webidl-conversions/LICENSE.md\n./node_modules/webidl-conversions/README.md\n./node_modules/webidl-conversions/package.json\n./node_modules/whatwg-url/LICENSE.txt\n./node_modules/whatwg-url/README.md\n./node_modules/whatwg-url/index.js\n./node_modules/whatwg-url/package.json\n./node_modules/whatwg-url/webidl2js-wrapper.js\n./node_modules/word-wrap/LICENSE\n./node_modules/word-wrap/README.md\n./node_modules/word-wrap/index.d.ts\n./node_modules/word-wrap/index.js\n./node_modules/word-wrap/package.json\n./node_modules/wrappy/LICENSE\n./node_modules/wrappy/README.md\n./node_modules/wrappy/package.json\n./node_modules/wrappy/wrappy.js\n./node_modules/ws/LICENSE\n./node_modules/ws/README.md\n./node_modules/ws/browser.js\n./node_modules/ws/index.js\n./node_modules/ws/package.json\n./node_modules/xml2js/LICENSE\n./node_modules/xml2js/README.md\n./node_modules/xml2js/package.json\n./node_modules/xmlbuilder/.npmignore\n./node_modules/xmlbuilder/CHANGELOG.md\n./node_modules/xmlbuilder/LICENSE\n./node_modules/xmlbuilder/README.md\n./node_modules/xmlbuilder/package.json\n./node_modules/xregexp/.npmignore\n./node_modules/xregexp/MIT-LICENSE.txt\n./node_modules/xregexp/README.md\n./node_modules/xregexp/package.json\n./node_modules/xregexp/xregexp-all.js\n./node_modules/yallist/LICENSE\n./node_modules/yallist/README.md\n./node_modules/yallist/iterator.js\n./node_modules/yallist/package.json\n./node_modules/yallist/yallist.js\n./node_modules/yamljs/.npmignore\n./node_modules/yamljs/.travis.yml\n./node_modules/yamljs/Cakefile\n./node_modules/yamljs/LICENSE\n./node_modules/yamljs/README.md\n./node_modules/yamljs/bower.json\n./node_modules/yamljs/index.js\n./node_modules/yamljs/package.json\n./package-lock.json\n./package.json\n./requirements.dev.local.txt\n./requirements.dev.txt\n./requirements.prod.cpu.txt\n./requirements.prod.gpu.txt\n./requirements.txt\n./voice-cloning-job-handler/index.js\n./voice-cloning-job-handler/package.json\n./voice-cloning-job-handler/pm2-development.yml\n./voice-cloning-job-handler/pm2-production.yml\n./voice-cloning-job-handler/user_audio_profile/index.js\n./voice-cloning-job-handler/user_audio_profile/user_audio_profile_model.js\n./voice-cloning-job-handler/user_audio_profile/user_audio_profile_service.js\n./voice-cloning-job-handler/voice_cloning/index.js\n./voice-cloning-job-handler/voice_cloning/voice_cloning_model.js\n./voice-cloning-job-handler/voice_cloning/voice_cloning_service.js\n./voice-cloning/assets/wgnd_2_0_sources.csv.gz\n./voice-cloning/assets/wgnd_2_0_unique_names_only.csv.gz\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv\n./voice-cloning/clone_voice.py\n./voice-cloning/docs/potion-voice-cloning_Installation_Guide.md\n./voice-cloning/minimize_cloned_voice_model.py\n./voice-cloning/prepare_datasets.py\n./voice-cloning/score_cloned_voice.py\n./voice-cloning/score_models.py\n./voice-cloning/score_salutation.py\n./voice-cloning/synthesize_speech.py\n./voice-cloning/train_config.py\n./voice-cloning/train_multispeaker_baseline_model.py\n./voice-cloning/utils/matching_utils.py\n./voice-cloning/utils/scoring_utils.py\n./voice-cloning/utils/synthesize_utils.py\n./voice-cloning/utils/transcription_utils.py\n./voice-synthsizer-job-handler/index.js\n./voice-synthsizer-job-handler/job/index.js\n./voice-synthsizer-job-handler/job/job_model.js\n./voice-synthsizer-job-handler/job/job_service.js\n./voice-synthsizer-job-handler/package-lock.json\n./voice-synthsizer-job-handler/package.json\n./voice-synthsizer-job-handler/pm2-development.yml\n./voice-synthsizer-job-handler/pm2-production.yml\n./voice-synthsizer-job-handler/recording/index.js\n./voice-synthsizer-job-handler/recording/recording_model.js\n./voice-synthsizer-job-handler/recording_salutation/index.js\n./voice-synthsizer-job-handler/recording_salutation/recording_salutation_model.js\n./voice-synthsizer-job-handler/salutation/index.js\n./voice-synthsizer-job-handler/salutation/salutation_model.js\n./voice-synthsizer-job-handler/salutation/salutation_service.js\n./voice-synthsizer-job-handler/user_audio_profile/index.js\n./voice-synthsizer-job-handler/user_audio_profile/user_audio_profile_model.js\n./voice-synthsizer-job-handler/user_audio_profile/user_audio_profile_service.js\n./voice-synthsizer-job-handler/yarn.lock\n15b3565 (HEAD -> master) initial\n* master\nconst AWS = require('aws-sdk')\n\nconst sqs = new AWS.SQS({ apiVersion: '2012-11-05' })\n\nconst StringifyUtils = require('../utils/logService')\n\nconst fetchMessageFromSQS = (sqsQueueUrl, waitTimeInSeconds = 0) => {\n  return new Promise((resolve, reject) => {\n    const params = {\n      WaitTimeSeconds: waitTimeInSeconds,\n      QueueUrl: sqsQueueUrl /* required */,\n    }\n    sqs.receiveMessage(params, function (err, data) {\n      if (err) {\n        reject(err)\n        console.log(\n          `ERROR in fetchJobFromSQS : `,\n          StringifyUtils.stringifyError(err)\n        )\n      } else {\n        resolve(data)\n      }\n    })\n  })\n}\n\nconst deleteMessageFromSQS = (sqsQueueUrl, receiptHandle) => {\n  return new Promise((resolve, reject) => {\n    const params = {\n      ReceiptHandle: receiptHandle,\n      QueueUrl: sqsQueueUrl /* required */,\n    }\n    sqs.deleteMessage(params, function (err, data) {\n      if (err) {\n        reject(err)\n        console.log(\n          `ERROR in sending delete request to AWS.SQS : `,\n          StringifyUtils.stringifyError(err)\n        )\n      } else {\n        console.log(\n          'Successfully sent delete request to AWS.SQS',\n          StringifyUtils.stringifyError(data)\n        )\n        resolve(data)\n      }\n    })\n  })\n}\n\nconst sendMessageToSQS = (sqsQueueUrl, message) => {\n  return new Promise((resolve, reject) => {\n    const params = {\n      MessageBody: message,\n      QueueUrl: sqsQueueUrl /* required */,\n      // MessageGroupId:\n      //   process.env.POTION_APP_ENV ||\n      //   '' + `_` + uuidV4() + '_' + new Date().toISOString(),\n      // MessageDeduplicationId: uuidV4() + `_` + new Date().toISOString()\n    }\n    sqs.sendMessage(params, function (err, data) {\n      if (err) {\n        reject(err)\n        console.log(\n          `ERROR in seding request to AWS.SQS : `,\n          StringifyUtils.stringifyError(err)\n        )\n      } else {\n        console.log(\n          'Successfully sent request to AWS.SQS',\n          StringifyUtils.stringifyError(data)\n        )\n        resolve(data.Location)\n      }\n    })\n  })\n}\n\nmodule.exports = {\n  fetchMessageFromSQS,\n  deleteMessageFromSQS,\n  sendMessageToSQS,\n}\nconst AWS = require('aws-sdk')\nAWS.config.update({ region: 'us-west-2' })\nconst sqsService = require('./sqs_service')\nconst sqs = new AWS.SQS({ apiVersion: '2012-11-05' })\n\nmodule.exports = sqsService\nconst VoiceCloning = require('./voice_cloning_model')\nconst VoiceCloningService = require('./voice_cloning_service')\n\nmodule.exports = VoiceCloningService(VoiceCloning)\nconst mongoose = require('mongoose')\nconst Schema = mongoose.Schema\n\nconst VoiceCloningSchema = Schema(\n  {\n    userId: {\n      type: Schema.Types.ObjectId,\n      ref: 'User',\n      required: true,\n    },\n    userAudioProfileId: {\n      type: Schema.Types.ObjectId,\n      ref: 'UserAudioProfile',\n      required: true,\n    },\n    status: {\n      type: String,\n      required: false,\n      default: 'created',\n    },\n    input: {\n      type: Schema.Types.Mixed,\n      default: null,\n    },\n    training_model: {\n      type: Schema.Types.Mixed,\n      default: null,\n    },\n    metadata: {\n      type: Schema.Types.Mixed,\n      default: null,\n    },\n    deleted: {\n      type: Boolean,\n      required: true,\n      default: false,\n    },\n  },\n  {\n    timestamps: true,\n  }\n)\n\nmodule.exports = mongoose.model('VoiceCloning', VoiceCloningSchema)\n{\n  \"name\": \"voice-cloning-job-handler\",\n  \"version\": \"1.0.0\",\n  \"description\": \"This will handle the voice cloning jobs\",\n  \"main\": \"index.js\",\n  \"scripts\": {\n    \"deploy-production\": \"npx dotenv-cli -e ./app-scripts/env-aws-code-deploy/.env.production.aws-code-deploy node ./app-scripts/deploy-scripts/deploy-production.js\",\n    \"deploy-staging\": \"npx dotenv-cli -e ./app-scripts/env-aws-code-deploy/.env.staging.aws-code-deploy node ./app-scripts/deploy-scripts/deploy-staging.js\"\n  },\n  \"dependencies\": {\n    \"@bugsnag/js\": \"^7.3.5\",\n    \"aws-sdk\": \"^2.752.0\",\n    \"fs-extra\": \"^9.0.1\",\n    \"mongoose\": \"^6.8.0\",\n    \"pm2\": \"^5.2.0\",\n    \"rimraf\": \"^3.0.2\",\n    \"uuid\": \"^8.3.2\"\n  },\n  \"devDependencies\": {\n    \"aws-code-deploy\": \"^1.0.11\"\n  },\n  \"author\": \"potion Team\",\n  \"license\": \"ISC\"\n}apps:\n  - name: training-model\n    script: index.js\n    watch: false\n    autorestart: true\n    instances: 1\n    time: true\n    env:\n      NODE_ENV: 'staging'\n      POTION_APP_ENV: 'staging'\n      SQS_URL: 'https://sqs.us-west-2.amazonaws.com/[REDACTED_AWS_ACCOUNT_1961]/potion-voice-clone-ai-staging.fifo'\n      BUGSNAG_BACKEND_KEY: '[REDACTED_generic-api-key]'\n      MONGODB_URI_DEV: 'mongodb+srv://[REDACTED_MONGO_USER_deve]:scrubbed_1@example.com7.mongodb.net/potion_development?retryWrites=true&w=majority'\n      MONGODB_URI_STAGING: 'mongodb+srv://[REDACTED_MONGO_USER_stag]:scrubbed_2@example.com7.mongodb.net/potion_staging?retryWrites=true&w=majority'\n      MONGODB_URI_PROD: ''\n      CLOUDFRONT_URL_PROD: 'https://videoassets.sendpotion.com'\n      CLOUDFRONT_URL_STAGING: ''\n      CLOUDFRONT_URL_DEV: 'https://d2rmbzmoml90gd.cloudfront.net'\napps:\n  - name: training-model\n    script: index.js\n    watch: false\n    autorestart: true\n    instances: 1\n    time: true\n    env:\n      NODE_ENV: 'production'\n      POTION_APP_ENV: 'production'\n      SQS_URL: 'https://sqs.us-west-2.amazonaws.com/[REDACTED_AWS_ACCOUNT_1961]/potion-voice-clone-ai-production.fifo'\n      BUGSNAG_BACKEND_KEY: '[REDACTED_generic-api-key]'\n      MONGODB_URI_DEV: 'mongodb+srv://[REDACTED_MONGO_USER_deve]:scrubbed_1@example.com7.mongodb.net/potion_development?retryWrites=true&w=majority'\n      MONGODB_URI_STAGING: 'mongodb+srv://[REDACTED_MONGO_USER_stag]:scrubbed_2@example.com7.mongodb.net/potion_staging?retryWrites=true&w=majority'\n      MONGODB_URI_PROD: 'mongodb+srv://[REDACTED_MONGO_USER_prod]:scrubbed_3@example.com.net/potion_production?retryWrites=true&w=majority'\n      CLOUDFRONT_URL_PROD: 'https://videoassets.sendpotion.com'\n      CLOUDFRONT_URL_STAGING: ''\n      CLOUDFRONT_URL_DEV: 'https://d2rmbzmoml90gd.cloudfront.net'\n","exit_code":0,"status":"completed"}}
{"type":"item.started","item":{"id":"item_7","type":"command_execution","command":"/bin/bash -lc \"rg -n -i \\\"pro[_ -]?v2|tier|voice clon|clone\\\" .styx_prs --glob '*.json'\"","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_7","type":"command_execution","command":"/bin/bash -lc \"rg -n -i \\\"pro[_ -]?v2|tier|voice clon|clone\\\" .styx_prs --glob '*.json'\"","aggregated_output":".styx_prs/pr_24.json:137:          \"message\": \"Merge pull request #18 from potion/develop\\n\\nRefined voice cloning settings\",\n.styx_prs/pr_24.json:169:          \"message\": \"Merge branch 'staging' into update-voice-clone-23-05\",\n.styx_prs/pr_24.json:217:          \"message\": \"Merge pull request #19 from potion/update-voice-clone-23-05\\n\\nUpdate voice clone 23 05\",\n.styx_prs/pr_16.json:660:        \"path\": \".prettierrc\",\n.styx_prs/pr_1.json:125:        \"path\": \"voice-cloning/clone_voice.py\",\n.styx_prs/pr_23.json:153:          \"message\": \"Updated requirements: git clone --depth 1 --branch v0.16.0 https://github.com/coqui-ai/TTS onwards addresses the CPU-only processing issues.\",\n.styx_prs/pr_23.json:665:          \"message\": \"Added naturalness score to find_best_cloned_model; improved comments.\",\n.styx_prs/pr_23.json:827:        \"path\": \"voice-cloning/clone_voice.py\",\n.styx_prs/pr_23.json:833:        \"path\": \"voice-cloning/clone_voice_via_continue.py\",\n.styx_prs/pr_23.json:839:        \"path\": \"voice-cloning/docs/Voice Cloning @ 48k Hz Sampling Rate - Step-by-Step.txt\",\n.styx_prs/pr_23.json:857:        \"path\": \"voice-cloning/find_best_cloned_model.py\",\n.styx_prs/pr_23.json:869:        \"path\": \"voice-cloning/minimize_cloned_voice_model.py\",\n.styx_prs/pr_23.json:881:        \"path\": \"voice-cloning/score_cloned_voice.py\",\n.styx_prs/pr_21.json:81:        \"path\": \"voice-cloning/find_best_cloned_model.py\",\n.styx_prs/pr_20.json:89:          \"message\": \"Refined voice cloning to support new capabilities to determine best model; updated recently adde capability to determine best multi-speaker model.\",\n.styx_prs/pr_20.json:153:          \"message\": \"out.cloned_model_path now returns the full path, not just the path to the output folder.\",\n.styx_prs/pr_20.json:553:          \"message\": \"Added new voice conversion option (idea 1: convert from multi-speaker model; idea 2: clone voice, synthesize speech, convert into recorded template; ...).\",\n.styx_prs/pr_20.json:585:          \"message\": \"Added new voice cloning approach (using fine-tuning via continue_path).\",\n.styx_prs/pr_20.json:953:          \"message\": \"Merge pull request #18 from potion/develop\\n\\nRefined voice cloning settings\",\n.styx_prs/pr_20.json:985:          \"message\": \"Merge branch 'staging' into update-voice-clone-23-05\",\n.styx_prs/pr_20.json:1033:          \"message\": \"Merge pull request #19 from potion/update-voice-clone-23-05\\n\\nUpdate voice clone 23 05\",\n.styx_prs/pr_20.json:1161:          \"message\": \"Updated requirements: git clone --depth 1 --branch v0.16.0 https://github.com/coqui-ai/TTS onwards addresses the CPU-only processing issues.\",\n.styx_prs/pr_20.json:1673:          \"message\": \"Added naturalness score to find_best_cloned_model; improved comments.\",\n.styx_prs/pr_20.json:1895:        \"path\": \"voice-cloning/clone_voice.py\",\n.styx_prs/pr_20.json:1901:        \"path\": \"voice-cloning/clone_voice_via_continue.py\",\n.styx_prs/pr_20.json:1913:        \"path\": \"voice-cloning/docs/Voice Cloning @ 48k Hz Sampling Rate - Step-by-Step.txt\",\n.styx_prs/pr_20.json:1931:        \"path\": \"voice-cloning/find_best_cloned_model.py\",\n.styx_prs/pr_20.json:1943:        \"path\": \"voice-cloning/minimize_cloned_voice_model.py\",\n.styx_prs/pr_20.json:1961:        \"path\": \"voice-cloning/score_cloned_voice.py\",\n.styx_prs/pr_2.json:81:        \"path\": \"voice-cloning/clone_voice.py\",\n.styx_prs/pr_4.json:3:  \"title\": \"Feature 4023 voice clone handler\",\n.styx_prs/pr_4.json:15:  \"headRefName\": \"feature-4023-voice-clone-handler\",\n.styx_prs/pr_4.json:57:          \"message\": \"Added base code for voice cloning\",\n.styx_prs/pr_4.json:361:          \"message\": \"Merge branch 'main' into feature-4023-voice-clone-handler\",\n.styx_prs/pr_4.json:505:          \"message\": \"Merge branch 'main' into feature-4023-voice-clone-handler\",\n.styx_prs/pr_4.json:601:          \"message\": \"Merge branch 'feature-4023-voice-clone-handler' of https://github.com/potion/potion-voice into feature-4023-voice-clone-handler\",\n.styx_prs/pr_4.json:633:          \"message\": \"Update clone_voice.py\",\n.styx_prs/pr_4.json:833:        \"path\": \"voice-cloning/clone_voice.py\",\n.styx_prs/pr_22.json:87:        \"path\": \"voice-cloning/clone_voice_via_continue.py\",\n.styx_prs/pr_22.json:99:        \"path\": \"voice-cloning/find_best_cloned_model.py\",\n.styx_prs/pr_22.json:117:        \"path\": \"voice-cloning/score_cloned_voice.py\",\n.styx_prs/pr_15.json:48:          \"message\": \"Refined voice cloning to support new capabilities to determine best model; updated recently adde capability to determine best multi-speaker model.\",\n.styx_prs/pr_15.json:112:          \"message\": \"out.cloned_model_path now returns the full path, not just the path to the output folder.\",\n.styx_prs/pr_15.json:362:        \"path\": \"voice-cloning/clone_voice.py\",\n.styx_prs/pr_15.json:374:        \"path\": \"voice-cloning/find_best_cloned_model.py\",\n.styx_prs/pr_15.json:392:        \"path\": \"voice-cloning/score_cloned_voice.py\",\n.styx_prs/pr_3.json:65:        \"path\": \"voice-cloning/clone_voice.py\",\n.styx_prs/pr_8.json:114:        \"path\": \".prettierrc\",\n.styx_prs/pr_19.json:3:  \"title\": \"Update voice clone 23 05\",\n.styx_prs/pr_19.json:15:  \"headRefName\": \"update-voice-clone-23-05\",\n.styx_prs/pr_19.json:153:          \"message\": \"Merge branch 'staging' into update-voice-clone-23-05\",\n.styx_prs/pr_11.json:516:        \"path\": \".prettierrc\",\n.styx_prs/pr_18.json:3:  \"title\": \"Refined voice cloning settings\",\n.styx_prs/pr_18.json:4:  \"body\": \"Update settings for voice cloning.\",\n.styx_prs/pr_18.json:249:          \"message\": \"Added new voice conversion option (idea 1: convert from multi-speaker model; idea 2: clone voice, synthesize speech, convert into recorded template; ...).\",\n.styx_prs/pr_18.json:281:          \"message\": \"Added new voice cloning approach (using fine-tuning via continue_path).\",\n.styx_prs/pr_18.json:600:        \"path\": \"voice-cloning/clone_voice.py\",\n.styx_prs/pr_18.json:606:        \"path\": \"voice-cloning/clone_voice_via_continue.py\",\n.styx_prs/pr_28.json:297:          \"message\": \"48k Voice cloning documentation now based on clone_voice_via_continue_n_natqa.py; adjusted default cloning parameters.\",\n.styx_prs/pr_28.json:313:          \"message\": \"find_best_cloned_model.py now also checks for minimum quality nat & sim scores; returns None for best_model if they are not met.\",\n.styx_prs/pr_28.json:417:        \"path\": \"voice-cloning/clone_voice_via_continue.py\",\n.styx_prs/pr_28.json:423:        \"path\": \"voice-cloning/clone_voice_via_continue_n_natqa.py\",\n.styx_prs/pr_28.json:429:        \"path\": \"voice-cloning/docs/Voice Cloning @ 48k Hz Sampling Rate - Step-by-Step.txt\",\n.styx_prs/pr_28.json:441:        \"path\": \"voice-cloning/find_best_cloned_model.py\",\n","exit_code":0,"status":"completed"}}
{"type":"item.started","item":{"id":"item_8","type":"command_execution","command":"/bin/bash -lc \"for f in .styx_prs/*.json; do jq -r '[input_filename, .number, .title, .headRefName, .state] | @tsv' \\\"\"'$f\"; done | sort -V'","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_8","type":"command_execution","command":"/bin/bash -lc \"for f in .styx_prs/*.json; do jq -r '[input_filename, .number, .title, .headRefName, .state] | @tsv' \\\"\"'$f\"; done | sort -V'","aggregated_output":".styx_prs/pr_1.json\t1\tInitial commit\tinitialCommit\tMERGED\n.styx_prs/pr_2.json\t2\tInitial commit\tinitialCommit\tMERGED\n.styx_prs/pr_3.json\t3\tFurther coquai/TTS v0.6.2 compatibiliuty changes\tinitialCommit\tMERGED\n.styx_prs/pr_4.json\t4\tFeature 4023 voice clone handler\tfeature-4023-voice-clone-handler\tMERGED\n.styx_prs/pr_5.json\t5\tAdded the filename fix\thotfix-update-filename\tMERGED\n.styx_prs/pr_6.json\t6\tUpdated the cloud front access and code\tfix-bucket-access-for-sentences\tMERGED\n.styx_prs/pr_7.json\t7\tAdded change in yml file\tfix-bucket-access-for-sentences\tMERGED\n.styx_prs/pr_8.json\t8\tupdated mongoose version 6.x\tPR-update-mongoose-version-to-6.x\tMERGED\n.styx_prs/pr_9.json\t9\tupdate DB uri\tupdate-db-uri\tMERGED\n.styx_prs/pr_10.json\t10\tupdated code for using original text\tupdate-voice-cloning-to-use-original-text\tMERGED\n.styx_prs/pr_11.json\t11\tVoice ai v2 changes\tvoice-ai-v2-changes\tMERGED\n.styx_prs/pr_12.json\t12\tAi 490 adv synth\tai-490-adv-synth\tMERGED\n.styx_prs/pr_13.json\t13\tAdded sr48000 for wave\tfix-output-for-wav\tMERGED\n.styx_prs/pr_14.json\t14\tNew feature score model\tnew-feature-score-model\tMERGED\n.styx_prs/pr_15.json\t15\tNew feature score model\tnew-feature-score-model\tMERGED\n.styx_prs/pr_16.json\t16\tStaging > Main\tstaging\tMERGED\n.styx_prs/pr_17.json\t17\tNew feature updates\tnew-feature-updates\tMERGED\n.styx_prs/pr_18.json\t18\tRefined voice cloning settings\tdevelop\tMERGED\n.styx_prs/pr_19.json\t19\tUpdate voice clone 23 05\tupdate-voice-clone-23-05\tMERGED\n.styx_prs/pr_20.json\t20\tStaging > Main\tstaging\tOPEN\n.styx_prs/pr_21.json\t21\tDev find best fixup\tdev-find-best-fixup\tMERGED\n.styx_prs/pr_22.json\t22\tDev cpu only\tdev-cpu-only\tMERGED\n.styx_prs/pr_23.json\t23\tDevelop\tdevelop\tMERGED\n.styx_prs/pr_24.json\t24\tDevelop 07 08 code updates\tdevelop-07-08\tMERGED\n.styx_prs/pr_25.json\t25\tAdded code for cloning script\tdevelop-07-08-updates\tMERGED\n.styx_prs/pr_26.json\t26\tAdded changes for sr 48000\tdevelop-07-08-updates\tMERGED\n.styx_prs/pr_27.json\t27\tupdated model name\tdevelop\tMERGED\n.styx_prs/pr_28.json\t28\tGCP support, upgraded TTS, new model with cleaner data\tdevelop\tOPEN\n","exit_code":0,"status":"completed"}}
{"type":"item.started","item":{"id":"item_9","type":"command_execution","command":"/bin/bash -lc \"jq 'keys' .styx_prs/pr_11.json && jq -r '.body, \\\"FILES:\\\", (.files[]? | [.path, (.additions|tostring), (.deletions|tostring)] | @tsv)' .styx_prs/pr_11.json && jq -r '.body, \\\"FILES:\\\", (.files[]? | [.path, (.additions|tostring), (.deletions|tostring)] | @tsv)' .styx_prs/pr_12.json && jq -r '.body, \\\"FILES:\\\", (.files[]? | [.path, (.additions|tostring), (.deletions|tostring)] | @tsv)' .styx_prs/pr_24.json\"","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_9","type":"command_execution","command":"/bin/bash -lc \"jq 'keys' .styx_prs/pr_11.json && jq -r '.body, \\\"FILES:\\\", (.files[]? | [.path, (.additions|tostring), (.deletions|tostring)] | @tsv)' .styx_prs/pr_11.json && jq -r '.body, \\\"FILES:\\\", (.files[]? | [.path, (.additions|tostring), (.deletions|tostring)] | @tsv)' .styx_prs/pr_12.json && jq -r '.body, \\\"FILES:\\\", (.files[]? | [.path, (.additions|tostring), (.deletions|tostring)] | @tsv)' .styx_prs/pr_24.json\"","aggregated_output":"[\n  \"additions\",\n  \"assignees\",\n  \"author\",\n  \"baseRefName\",\n  \"body\",\n  \"changedFiles\",\n  \"closedAt\",\n  \"comments\",\n  \"commits\",\n  \"createdAt\",\n  \"deletions\",\n  \"files\",\n  \"headRefName\",\n  \"isDraft\",\n  \"labels\",\n  \"mergeCommit\",\n  \"mergedAt\",\n  \"mergedBy\",\n  \"milestone\",\n  \"number\",\n  \"requestedReviewers\",\n  \"reviews\",\n  \"state\",\n  \"title\",\n  \"url\"\n]\n\nFILES:\njq: error (at .styx_prs/pr_11.json:582): Cannot index array with string \"path\"\n","exit_code":5,"status":"failed"}}
{"type":"item.started","item":{"id":"item_10","type":"command_execution","command":"/bin/bash -lc \"jq '.files | type, (if type == \\\"object\\\" then keys else .[0] end)' .styx_prs/pr_11.json && jq '.files' .styx_prs/pr_11.json | sed -n '1,120p'\"","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_10","type":"command_execution","command":"/bin/bash -lc \"jq '.files | type, (if type == \\\"object\\\" then keys else .[0] end)' .styx_prs/pr_11.json && jq '.files' .styx_prs/pr_11.json | sed -n '1,120p'\"","aggregated_output":"\"object\"\n[\n  \"nodes\"\n]\n{\n  \"nodes\": [\n    {\n      \"path\": \".gitignore\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \".prettierrc\",\n      \"additions\": 0,\n      \"deletions\": 7,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/index.js\",\n      \"additions\": 56,\n      \"deletions\": 11,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package-lock.json\",\n      \"additions\": 0,\n      \"deletions\": 1782,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package.json\",\n      \"additions\": 1,\n      \"deletions\": 1,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/user_audio_profile/user_audio_profile_service.js\",\n      \"additions\": 8,\n      \"deletions\": 10,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/voice_cloning/voice_cloning_service.js\",\n      \"additions\": 0,\n      \"deletions\": 2,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/index.js\",\n      \"additions\": 53,\n      \"deletions\": 56,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/index.js\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/recording_salutation_model.js\",\n      \"additions\": 76,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    }\n  ]\n}\n","exit_code":0,"status":"completed"}}
{"type":"item.started","item":{"id":"item_11","type":"command_execution","command":"/bin/bash -lc \"jq -r '.body // \\\"\\\", \\\"FILES:\\\", (.files.nodes[] | [.path, (.additions|tostring), (.deletions|tostring)] | @tsv), \\\"COMMITS:\\\", (.commits.nodes[]? | [.commit.oid, .commit.messageHeadline] | @tsv)' .styx_prs/pr_11.json && git count-objects -v && git fsck --no-reflogs --unreachable 2>/dev/null | sed -n '1,80p'\"","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_11","type":"command_execution","command":"/bin/bash -lc \"jq -r '.body // \\\"\\\", \\\"FILES:\\\", (.files.nodes[] | [.path, (.additions|tostring), (.deletions|tostring)] | @tsv), \\\"COMMITS:\\\", (.commits.nodes[]? | [.commit.oid, .commit.messageHeadline] | @tsv)' .styx_prs/pr_11.json && git count-objects -v && git fsck --no-reflogs --unreachable 2>/dev/null | sed -n '1,80p'\"","aggregated_output":"","exit_code":0,"status":"completed"}}
{"type":"item.started","item":{"id":"item_12","type":"command_execution","command":"/bin/bash -lc \"git cat-file -t a616fd33178b70105d5cb40694e74e2c1df124da 2>&1 && git show --stat --oneline --decorate a616fd33178b70105d5cb40694e74e2c1df124da -- && git show a616fd33178b70105d5cb40694e74e2c1df124da:voice-cloning-job-handler/index.js | sed -n '1,380p'\"","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_12","type":"command_execution","command":"/bin/bash -lc \"git cat-file -t a616fd33178b70105d5cb40694e74e2c1df124da 2>&1 && git show --stat --oneline --decorate a616fd33178b70105d5cb40694e74e2c1df124da -- && git show a616fd33178b70105d5cb40694e74e2c1df124da:voice-cloning-job-handler/index.js | sed -n '1,380p'\"","aggregated_output":"fatal: git cat-file: could not get object info\n","exit_code":128,"status":"failed"}}
{"type":"item.started","item":{"id":"item_13","type":"command_execution","command":"/bin/bash -lc \"git remote -v && jq -r '.url, .baseRefName, .headRefName, (.comments.nodes[]?.body // empty)' .styx_prs/pr_11.json | sed -n '1,160p' && jq -r '.commits.nodes[] | keys_unsorted | @json' .styx_prs/pr_11.json | head\"","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_13","type":"command_execution","command":"/bin/bash -lc \"git remote -v && jq -r '.url, .baseRefName, .headRefName, (.comments.nodes[]?.body // empty)' .styx_prs/pr_11.json | sed -n '1,160p' && jq -r '.commits.nodes[] | keys_unsorted | @json' .styx_prs/pr_11.json | head\"","aggregated_output":"https://github.com/potion/potion-voice/pull/11\nstaging\nvoice-ai-v2-changes\n[\"commit\"]\n[\"commit\"]\n[\"commit\"]\n[\"commit\"]\n[\"commit\"]\n[\"commit\"]\n[\"commit\"]\n[\"commit\"]\n[\"commit\"]\n[\"commit\"]\n","exit_code":0,"status":"completed"}}
{"type":"item.started","item":{"id":"item_14","type":"command_execution","command":"/bin/bash -lc \"git ls-remote https://github.com/potion/potion-voice.git HEAD refs/heads/main refs/heads/develop refs/heads/staging 2>&1 | sed -n '1,80p'\"","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_14","type":"command_execution","command":"/bin/bash -lc \"git ls-remote https://github.com/potion/potion-voice.git HEAD refs/heads/main refs/heads/develop refs/heads/staging 2>&1 | sed -n '1,80p'\"","aggregated_output":"fatal: could not read Username for 'https://github.com': No such device or address\n","exit_code":0,"status":"completed"}}
{"type":"item.started","item":{"id":"item_15","type":"command_execution","command":"/bin/bash -lc \"sed -n '1,220p' package.json && git ls-tree -r --name-only HEAD | sed -n '1,260p' && git show --stat --oneline HEAD && find . -path './node_modules' -prune -o -type f \\\\( -name '*test*' -o -name '*spec*' \\\\) -print\"","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_15","type":"command_execution","command":"/bin/bash -lc \"sed -n '1,220p' package.json && git ls-tree -r --name-only HEAD | sed -n '1,260p' && git show --stat --oneline HEAD && find . -path './node_modules' -prune -o -type f \\\\( -name '*test*' -o -name '*spec*' \\\\) -print\"","aggregated_output":"15b3565 initial\n .claude/settings.json                              |       1 +\n .gitignore                                         |     165 +\n .styx_prs/pr_1.json                                |     150 +\n .styx_prs/pr_10.json                               |     101 +\n .styx_prs/pr_11.json                               |     583 +\n .styx_prs/pr_12.json                               |     129 +\n .styx_prs/pr_13.json                               |      76 +\n .styx_prs/pr_14.json                               |     107 +\n .styx_prs/pr_15.json                               |     417 +\n .styx_prs/pr_16.json                               |     751 +\n .styx_prs/pr_17.json                               |     263 +\n .styx_prs/pr_18.json                               |     661 +\n .styx_prs/pr_19.json                               |     234 +\n .styx_prs/pr_2.json                                |     100 +\n .styx_prs/pr_20.json                               |    2052 +\n .styx_prs/pr_21.json                               |      94 +\n .styx_prs/pr_22.json                               |     130 +\n .styx_prs/pr_23.json                               |     948 +\n .styx_prs/pr_24.json                               |     298 +\n .styx_prs/pr_25.json                               |      72 +\n .styx_prs/pr_26.json                               |      72 +\n .styx_prs/pr_27.json                               |      76 +\n .styx_prs/pr_28.json                               |     508 +\n .styx_prs/pr_3.json                                |      78 +\n .styx_prs/pr_4.json                                |     930 +\n .styx_prs/pr_5.json                                |      85 +\n .styx_prs/pr_6.json                                |      97 +\n .styx_prs/pr_7.json                                |      91 +\n .styx_prs/pr_8.json                                |     193 +\n .styx_prs/pr_9.json                                |     119 +\n README.md                                          |       2 +\n app/services/s3/index.js                           |      61 +\n app/services/s3/s3_service.js                      |       0\n app/services/sqs/index.js                          |       6 +\n app/services/sqs/sqs_service.js                    |      83 +\n app/services/utils/bugsnag.js                      |      18 +\n app/services/utils/deleteFile.js                   |       9 +\n app/services/utils/index.js                        |      19 +\n app/services/utils/logService.js                   |      14 +\n app/services/voice_cloning/index.js                |       4 +\n app/services/voice_cloning/voice_cloning_model.js  |      44 +\n .../voice_cloning/voice_cloning_service.js         |     140 +\n package.json                                       |      21 +\n requirements.dev.local.txt                         |      12 +\n requirements.dev.txt                               |      12 +\n requirements.prod.cpu.txt                          |      10 +\n requirements.prod.gpu.txt                          |      10 +\n requirements.txt                                   |      11 +\n voice-cloning-job-handler/index.js                 |     332 +\n voice-cloning-job-handler/package.json             |      24 +\n voice-cloning-job-handler/pm2-development.yml      |      18 +\n voice-cloning-job-handler/pm2-production.yml       |      18 +\n .../user_audio_profile/index.js                    |       4 +\n .../user_audio_profile/user_audio_profile_model.js |      40 +\n .../user_audio_profile_service.js                  |     140 +\n voice-cloning-job-handler/voice_cloning/index.js   |       4 +\n .../voice_cloning/voice_cloning_model.js           |      44 +\n .../voice_cloning/voice_cloning_service.js         |     141 +\n .../assets/speaker_encoder_model/config_se.json    |     121 +\n .../assets/speaker_encoder_model/model_se.pth.tar  |     Bin 0 -> 44610930 bytes\n voice-cloning/assets/wgnd_2_0_sources.csv.gz       |     Bin 0 -> 21825148 bytes\n .../assets/wgnd_2_0_unique_names_only.csv.gz       |     Bin 0 -> 11967143 bytes\n ...2_0_unique_names_only_limited_special_chars.csv | 3270538 +++++++++++++++++\n voice-cloning/clone_voice.py                       |     226 +\n .../potion-voice-cloning_Installation_Guide.md     |     764 +\n voice-cloning/minimize_cloned_voice_model.py       |     120 +\n voice-cloning/prepare_datasets.py                  |     191 +\n voice-cloning/score_cloned_voice.py                |     179 +\n voice-cloning/score_models.py                      |     219 +\n voice-cloning/score_salutation.py                  |     161 +\n voice-cloning/synthesize_speech.py                 |     144 +\n voice-cloning/train_config.py                      |      48 +\n voice-cloning/train_multispeaker_baseline_model.py |     238 +\n voice-cloning/utils/matching_utils.py              |      22 +\n voice-cloning/utils/scoring_utils.py               |      37 +\n voice-cloning/utils/synthesize_utils.py            |      77 +\n voice-cloning/utils/transcription_utils.py         |      94 +\n voice-synthsizer-job-handler/index.js              |     267 +\n voice-synthsizer-job-handler/job/index.js          |       4 +\n voice-synthsizer-job-handler/job/job_model.js      |      54 +\n voice-synthsizer-job-handler/job/job_service.js    |     136 +\n voice-synthsizer-job-handler/package.json          |      23 +\n voice-synthsizer-job-handler/pm2-development.yml   |      13 +\n voice-synthsizer-job-handler/pm2-production.yml    |      14 +\n voice-synthsizer-job-handler/recording/index.js    |       4 +\n .../recording/recording_model.js                   |     406 +\n .../recording_salutation/index.js                  |       3 +\n .../recording_salutation_model.js                  |      76 +\n voice-synthsizer-job-handler/salutation/index.js   |       4 +\n .../salutation/salutation_model.js                 |      44 +\n .../salutation/salutation_service.js               |      87 +\n .../user_audio_profile/index.js                    |       4 +\n .../user_audio_profile/user_audio_profile_model.js |      40 +\n .../user_audio_profile_service.js                  |     142 +\n 94 files changed, 3285322 insertions(+)\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv\n","exit_code":0,"status":"completed"}}
{"type":"item.started","item":{"id":"item_16","type":"command_execution","command":"/bin/bash -lc \"cat .claude/settings.json && git status --porcelain=v2 && rg -n -i \\\"plan|premium|professional|version|model_type|voice.*tier|clone.*tier\\\" . --glob '\"'!node_modules/**'\"' --glob '\"'!.git/**'\"' --glob '\"'!.styx_prs/**'\"'\"","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_16","type":"command_execution","command":"/bin/bash -lc \"cat .claude/settings.json && git status --porcelain=v2 && rg -n -i \\\"plan|premium|professional|version|model_type|voice.*tier|clone.*tier\\\" . --glob '\"'!node_modules/**'\"' --glob '\"'!.git/**'\"' --glob '\"'!.styx_prs/**'\"'\"","aggregated_output":"{\"permissions\":{\"deny\":[\"WebFetch\",\"WebSearch\"]}}\n./voice-synthsizer-job-handler/recording/recording_model.js:95:    previewGifsVersion: {\n./voice-synthsizer-job-handler/index.js:6:const version = require('./package.json').version\n./voice-synthsizer-job-handler/index.js:254:    appVersion: APP_ENV + version,\n./voice-synthsizer-job-handler/package.json:3:  \"version\": \"1.0.0\",\n./package.json:3:  \"version\": \"1.0.0\",\n./app/services/sqs/index.js:4:const sqs = new AWS.SQS({ apiVersion: '2012-11-05' })\n./app/services/sqs/sqs_service.js:3:const sqs = new AWS.SQS({ apiVersion: '2012-11-05' })\n./voice-cloning-job-handler/index.js:8:const version = require('./package.json').version\n./voice-cloning-job-handler/index.js:318:    appVersion: APP_ENV + version,\n./voice-cloning-job-handler/package.json:3:  \"version\": \"1.0.0\",\n./voice-cloning/docs/potion-voice-cloning_Installation_Guide.md:28:1. Disable unattended upgrades. Enter the below command and select 'No'. These Upgrades might cause version mismatch between nvidia-drivers and cuda.\n./voice-cloning/docs/potion-voice-cloning_Installation_Guide.md:32:    Replacing config file /etc/apt/apt.conf.d/20auto-upgrades with new version\n./voice-cloning/docs/potion-voice-cloning_Installation_Guide.md:100:        Setting up swapspace version 1, size = 64 GiB\n./voice-cloning/docs/potion-voice-cloning_Installation_Guide.md:124:1. Install NVIDIA drivers / CUDA support (pytorch required version 11.6 or 12)\n./voice-cloning/docs/potion-voice-cloning_Installation_Guide.md:146:    | NVIDIA-SMI 525.60.13    Driver Version: 525.60.13    CUDA Version: 12.0     |\n./voice-cloning/docs/potion-voice-cloning_Installation_Guide.md:747:        │ NVITOP 0.8.0      Driver Version: 515.65.01      CUDA Driver Version: 11.7  │\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:107126:amnammaplanti\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:156707:aplan\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:156708:aplanarasa\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:156709:aplanarasama\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:156710:aplanarasma\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:156711:aplanarayana\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:156712:aplanaresya\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:156713:aplanarsa\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:156714:aplanarsama\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:156715:aplanarsamma\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:156716:aplanarsammayalmanchal\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:156717:aplanarsanna\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:156718:aplanarsaya\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:156719:aplanarshimha\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:156720:aplanarsiha\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:156721:aplanarsihlu\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:156722:aplanarsimha\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:156723:aplanarsimhacharyalu\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:156724:aplanarsimharaju\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:156725:aplanarsimhulu\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:156726:aplanarsimma\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:156727:aplanaydbalibani\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:156728:aplanaydu\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:156729:aplanaydugolavil\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:156730:aplanayidu\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:156731:aplanayudu\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:156732:aplani\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:156733:aplaniudu\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:156734:aplanna\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:156735:aplanrassa\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:156736:aplanrsamma\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:156737:aplansamma\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:156738:aplanuka\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:156739:aplanydudunanna\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:156740:aplanydukonchad\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:156741:aplanyu\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:162325:applanaidu\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:162326:applanaidyu\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:162327:applanaramma\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:162328:applanarasa\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:162329:applanarasam\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:162330:applanarasama\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:162331:applanarasamma\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:162332:applanarasaya\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:162333:applanarasayam\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:162334:applanarasayya\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:162335:applanarasimhulu\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:162336:applanarasimma\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:162337:applanarasmma\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:162338:applanarayamam\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:162339:applanarayana\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:162340:applanarayanamm\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:162341:applanarsa\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:162342:applanarsaiya\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:162343:applanarsama\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:162344:applanarsamma\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:162345:applanarsayya\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:162346:applanarsda\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:162347:applanarshaya\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:162348:applanarsi\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:162349:applanarsiamma\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:162350:applanarsipatnana\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:162351:applanasa\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:162352:applanasamma\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:162353:applanaydu\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:162354:applanayudu\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:162355:applanidu\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:162356:applannareddy\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:162357:applanrsa\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:162358:applanydu\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:186134:ashakriplani\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:359155:bhukyadeeplanaya\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:361509:bhuplan\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:406697:booplani\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:407569:boplani\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:436098:bukkechamplanay\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:436569:bukyaruplanayak\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:457593:carson copland\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:457594:carson-copland\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:475507:champlanaik\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:475508:champlanayak\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:475509:champlanayaka\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:475510:champlanayk\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:489928:chaplan\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:489929:chaplanaik\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:489930:chaplanayak\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:489931:chaplanayaka\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:489932:chaplanjaneyulu\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:489933:chaplanna\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:505430:chemplany\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:513532:chepplana\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:519407:chhamplanayak\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:528525:chiluplanusuja\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:530530:chinaapplanaidu\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:534645:chinaplanaydu\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:543703:chinnachamplanay\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:553613:chinnaplanydu\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:554051:chinnapplanaidu\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:554052:chinnapplanydu\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:561987:chinplangnan\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:583905:choplanayak\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:600971:conversion\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:601076:coplan\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:601077:copland\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:649832:deaplanaik\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:652897:deeplanaik\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:652898:deeplanayak\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:652899:deeplanayaka\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:685681:dharmasuriplanyd\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:705721:diplanamak\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:705722:diplanayak\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:705723:diplanayaka\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:726410:dplanayke\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:810318:esrooplanaik\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:938516:goplanayak\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:938517:goplani\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:938518:goplaniadu\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:1096992:islavatruplanaya\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:1137184:jamplanayaka\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:1149044:japlanaydu\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:1151555:jarplanagraju\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:1164812:jayplan\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:1212126:jplani\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:1236353:kadplanna\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:1237121:kaduplanna\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:1256916:kalplana\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:1295176:kaplan\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:1295177:kaplana\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:1378863:kirplani\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:1382960:kizheplan\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:1418832:koplan\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:1418833:koplang\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:1423951:korrachamplanayaka\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:1439157:koupland\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:1444231:krheplanthu\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:1444909:kriplani\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:1468945:kumplanayakdung\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:1476558:kuplanayak\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:1476559:kuplani\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:1478129:kuranplankudi\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:1605622:magiplana\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:1682834:maria conversion\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:1738256:merdhnplanli\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:1808716:mudesamplanayak\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2075648:pamplany\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2088979:paplanna\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2108798:pasplanagamma\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2130714:pedaplanydu\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2134499:peddachamplanay\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2140335:peddapplanaidu\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2187243:plan\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2187244:planagi\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2187245:planakala\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2187246:planallamma\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2187247:plananayak\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2187248:planati\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2187249:plancha\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2187250:plandey\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2187251:plandunjal\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2187252:plandunki\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2187253:planers\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2187254:plangtode\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2187255:plani\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2187256:planiandi\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2187257:planjery\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2187258:planklin\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2187259:planklinsukumar\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2187260:plankudy\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2187261:plant\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2187262:planti\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2187263:plantopa\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2259461:pushpland\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2302692:rajagoaplan\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2302855:rajagoplan\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2320277:ramaapplanaidu\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2333890:ramavatchamplan\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2401753:riplanaya\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2412321:rooplanaik\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2412322:rooplanayq\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2427572:ruplanaayak\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2427573:ruplanaik\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2427574:ruplanayak\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2427575:ruplanayaka\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2430267:ruuplanayk\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2436015:sabavatdeeplanay\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2437432:sabhavatruplanay\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2482687:samplanayak\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2482688:samplanayaka\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2501804:sanplannapuarna\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2601977:sharatkriplani\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2714491:somplanydu\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2767944:sugalichamplanay\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2767956:sugalideeplanayak\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2768075:sugaliruplanayak\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2768105:sugalitiplanayak\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2768106:sugalitiplanayaka\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2796536:surplanydu\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2846443:taplanli\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2910640:tiplanayaka\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2972439:uplana\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2972440:uplanarsaiah\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2972441:uplanch\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2972442:uplancha\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2972443:uplanchala\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2972444:uplanchavar\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2972445:uplanchawaar\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2972446:uplanchawar\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2972447:uplanchewar\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2972448:uplanchi\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2972449:uplanchivar\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2972450:uplanchiwar\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2972451:uplanchowar\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2972452:uplanchu\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2972453:uplanchwar\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2974796:upplancha\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2974797:upplanchi\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2974798:upplanchy\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2995366:vadtyideeplanayaka\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:3020099:vankudotchamplanayaka\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:3023218:vaplanaydu\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:3075316:venkataapplanayu\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:3080960:venkataplanarshimharaju\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:3080961:venkataplanarshimhulu\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:3080962:venkataplanaydu\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:3098126:venkatplanydu\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:3098296:venkatpthiplanay\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:3111120:venugoplanaidu\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:3137111:viplana\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:3161643:vupplanchi\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:3161644:vupplanchu\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:3205158:yarapatiapplanaid\n","exit_code":0,"status":"completed"}}
{"type":"item.started","item":{"id":"item_17","type":"command_execution","command":"/bin/bash -lc \"rg -n --hidden -F \\\"pro_v2\\\" /workspace /tmp 2>/dev/null | sed -n '1,160p'\"","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_17","type":"command_execution","command":"/bin/bash -lc \"rg -n --hidden -F \\\"pro_v2\\\" /workspace /tmp 2>/dev/null | sed -n '1,160p'\"","aggregated_output":"/tmp/codex-home/sessions/2026/09/22/rollout-2026-09-22T00-20-48-01a0c67c-96dd-7123-9bd6-57582971485c.jsonl:7:{\"timestamp\":\"2026-09-22T00:20:49.255Z\",\"ordinal\":6,\"type\":\"response_item\",\"payload\":{\"type\":\"message\",\"id\":\"msg_01a0c67c-97e7-7e11-b1dd-c848768599a8\",\"role\":\"user\",\"content\":[{\"type\":\"input_text\",\"text\":\"Voice cloning jobs submitted for tier pro_v2 are failing to process or returning null states. Fix the system so pro_v2 cloning requests execute properly.\\n\"}],\"internal_chat_message_metadata_passthrough\":{\"turn_id\":\"01a0c67c-96f7-72f0-ad72-204807ac3cc9\",\"create_time\":1790036449.2552161,\"content_item_kinds\":[\"user.text\"]}}}\n/tmp/codex-home/sessions/2026/09/22/rollout-2026-09-22T00-20-48-01a0c67c-96dd-7123-9bd6-57582971485c.jsonl:8:{\"timestamp\":\"2026-09-22T00:20:49.258Z\",\"ordinal\":7,\"type\":\"event_msg\",\"payload\":{\"type\":\"item_completed\",\"thread_id\":\"01a0c67c-96dd-7123-9bd6-57582971485c\",\"turn_id\":\"01a0c67c-96f7-72f0-ad72-204807ac3cc9\",\"item\":{\"type\":\"UserMessage\",\"id\":\"01a0c67c-97ea-73e3-8395-7c3b512a5476\",\"content\":[{\"type\":\"text\",\"text\":\"Voice cloning jobs submitted for tier pro_v2 are failing to process or returning null states. Fix the system so pro_v2 cloning requests execute properly.\\n\",\"text_elements\":[]}]},\"started_at_ms\":1790036449258,\"completed_at_ms\":1790036449258}}\n/tmp/codex-home/sessions/2026/09/22/rollout-2026-09-22T00-20-48-01a0c67c-96dd-7123-9bd6-57582971485c.jsonl:11:{\"timestamp\":\"2026-09-22T00:20:58.378Z\",\"ordinal\":10,\"type\":\"event_msg\",\"payload\":{\"type\":\"item_completed\",\"thread_id\":\"01a0c67c-96dd-7123-9bd6-57582971485c\",\"turn_id\":\"01a0c67c-96f7-72f0-ad72-204807ac3cc9\",\"item\":{\"type\":\"AgentMessage\",\"id\":\"msg_0b5ffdda780a68ba016ab1c9e7f0dc87d2bb58fcad6cfbc93f\",\"content\":[{\"type\":\"Text\",\"text\":\"I’ll trace the cloning request lifecycle for `pro_v2`—submission, queue/worker dispatch, and status serialization—then patch the mismatch and run the relevant tests.\"}],\"phase\":\"commentary\"},\"started_at_ms\":1790036457881,\"completed_at_ms\":1790036458378}}\n/tmp/codex-home/sessions/2026/09/22/rollout-2026-09-22T00-20-48-01a0c67c-96dd-7123-9bd6-57582971485c.jsonl:12:{\"timestamp\":\"2026-09-22T00:20:58.380Z\",\"ordinal\":11,\"type\":\"response_item\",\"payload\":{\"type\":\"message\",\"id\":\"msg_0b5ffdda780a68ba016ab1c9e7f0dc87d2bb58fcad6cfbc93f\",\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"I’ll trace the cloning request lifecycle for `pro_v2`—submission, queue/worker dispatch, and status serialization—then patch the mismatch and run the relevant tests.\"}],\"phase\":\"commentary\",\"internal_chat_message_metadata_passthrough\":{\"turn_id\":\"01a0c67c-96f7-72f0-ad72-204807ac3cc9\",\"create_time\":1790036454.964585,\"content_item_kinds\":[\"unknown\"]}}}\n/tmp/codex-home/sessions/2026/09/22/rollout-2026-09-22T00-20-48-01a0c67c-96dd-7123-9bd6-57582971485c.jsonl:20:{\"timestamp\":\"2026-09-22T00:21:03.464Z\",\"ordinal\":19,\"type\":\"response_item\",\"payload\":{\"type\":\"custom_tool_call\",\"id\":\"ctc_0b5ffdda780a68ba016ab1c9eba12487d2ae3a6161458dc57d\",\"status\":\"completed\",\"call_id\":\"call_yfv9NIMlJF6OPuJcmRaZiXbl\",\"name\":\"exec\",\"input\":\"const r = await tools.exec_command({cmd:\\\"git status --short && rg -n \\\\\\\"pro_v2|tier|clone|status|null\\\\\\\" app voice-cloning-job-handler voice-synthsizer-job-handler --glob '*.js' --glob '*.json' --glob '*.py'\\\",\\\"workdir\\\":\\\"/workspace\\\",\\\"yield_time_ms\\\":10000,\\\"max_output_tokens\\\":30000}); text(r.output);\\n\",\"internal_chat_message_metadata_passthrough\":{\"turn_id\":\"01a0c67c-96f7-72f0-ad72-204807ac3cc9\",\"create_time\":1790036458.848874}}}\n/tmp/codex-home/sessions/2026/09/22/rollout-2026-09-22T00-20-48-01a0c67c-96dd-7123-9bd6-57582971485c.jsonl:22:{\"timestamp\":\"2026-09-22T00:21:03.706Z\",\"ordinal\":21,\"type\":\"event_msg\",\"payload\":{\"type\":\"item_completed\",\"thread_id\":\"01a0c67c-96dd-7123-9bd6-57582971485c\",\"turn_id\":\"01a0c67c-96f7-72f0-ad72-204807ac3cc9\",\"item\":{\"type\":\"CommandExecution\",\"id\":\"exec-3abb13ee-f316-469f-b7a1-52e22520b517\",\"process_id\":\"73120\",\"command\":[\"/bin/bash\",\"-lc\",\"git status --short && rg -n \\\"pro_v2|tier|clone|status|null\\\" app voice-cloning-job-handler voice-synthsizer-job-handler --glob '*.js' --glob '*.json' --glob '*.py'\"],\"cwd\":\"file:///workspace\",\"parsed_cmd\":[{\"type\":\"unknown\",\"cmd\":\"git status --short && rg -n \\\"pro_v2|tier|clone|status|null\\\" app voice-cloning-job-handler voice-synthsizer-job-handler --glob '*.js' --glob '*.json' --glob '*.py'\"}],\"source\":\"unified_exec_startup\",\"status\":\"completed\",\"stdout\":\"app/services/voice_cloning/voice_cloning_model.js:16:    status: {\\napp/services/voice_cloning/voice_cloning_model.js:23:      default: null,\\napp/services/voice_cloning/voice_cloning_model.js:27:      default: null,\\napp/services/voice_cloning/voice_cloning_model.js:31:      default: null,\\nvoice-synthsizer-job-handler/salutation/salutation_model.js:17:      default: null\\r\\nvoice-synthsizer-job-handler/salutation/salutation_model.js:21:      default: null,\\r\\nvoice-synthsizer-job-handler/salutation/salutation_model.js:26:      default: null,\\r\\nvoice-synthsizer-job-handler/salutation/salutation_model.js:31:      default: null,\\r\\nvoice-cloning-job-handler/index.js:139:          await voiceCloningService.update({ _id, status: 'processing' })\\nvoice-cloning-job-handler/index.js:142:            status: 'processing',\\nvoice-cloning-job-handler/index.js:203:          // clone the voice\\nvoice-cloning-job-handler/index.js:206:          const trainingModelCommand = `python3 ../voice-cloning/clone_voice.py --baseline_model_path ../voice-cloning/pretrained-models/checkpoint_365000.pth --speaker_dataset_path ${outPath} --speaker_embeddings_path ${\\nvoice-cloning-job-handler/index.js:220:            if (file.includes('vits_potion_clone'))\\nvoice-cloning-job-handler/index.js:228:          const minimizeCloningModelCommand = `python3 ../voice-cloning/minimize_cloned_voice_model.py --voice_model_asset_path ${\\nvoice-cloning-job-handler/index.js:242:          // Add the  code to update location of generated model and status into DB\\nvoice-cloning-job-handler/index.js:243:          await voiceCloningService.update({ _id, status: 'completed' })\\nvoice-cloning-job-handler/index.js:255:            status: 'completed',\\nvoice-cloning-job-handler/index.js:287:          // update the db to set status as error\\nvoice-cloning-job-handler/index.js:288:          await voiceCloningService.update({ _id, status: 'error' })\\nvoice-cloning-job-handler/index.js:291:            status: 'error',\\nvoice-cloning-job-handler/index.js:301:      console.error('Error while training voice clone', { error })\\nvoice-synthsizer-job-handler/recording/recording_model.js:214:      default: null,\\nvoice-synthsizer-job-handler/recording/recording_model.js:224:      default: null,\\nvoice-synthsizer-job-handler/recording/recording_model.js:239:            default: null,\\nvoice-synthsizer-job-handler/recording/recording_model.js:243:            default: null,\\nvoice-synthsizer-job-handler/recording/recording_model.js:272:          status: {\\nvoice-synthsizer-job-handler/recording/recording_model.js:274:            default: null,\\nvoice-synthsizer-job-handler/recording/recording_model.js:284:      default: null,\\nvoice-synthsizer-job-handler/recording/recording_model.js:292:      default: null,\\nvoice-synthsizer-job-handler/recording/recording_model.js:296:      default: null,\\nvoice-synthsizer-job-handler/recording/recording_model.js:302:          default: null,\\nvoice-synthsizer-job-handler/recording/recording_model.js:306:          default: null,\\nvoice-synthsizer-job-handler/recording/recording_model.js:312:      default: null,\\nvoice-synthsizer-job-handler/recording/recording_model.js:321:      default: null,\\nvoice-synthsizer-job-handler/recording/recording_model.js:326:      default: null,\\nvoice-synthsizer-job-handler/recording/recording_model.js:331:      default: null,\\nvoice-synthsizer-job-handler/recording/recording_model.js:335:      default: null,\\nvoice-synthsizer-job-handler/recording/recording_model.js:340:      default: null,\\nvoice-synthsizer-job-handler/recording/recording_model.js:345:      default: null,\\nvoice-synthsizer-job-handler/recording/recording_model.js:350:      default: null,\\nvoice-synthsizer-job-handler/recording/recording_model.js:355:      default: null,\\nvoice-synthsizer-job-handler/recording/recording_model.js:364:      default: null,\\nvoice-synthsizer-job-handler/recording/recording_model.js:369:      default: null,\\nvoice-synthsizer-job-handler/recording/recording_model.js:382:      default: null,\\nvoice-synthsizer-job-handler/recording/recording_model.js:387:      default: null,\\nvoice-synthsizer-job-handler/recording/recording_model.js:399:      default: null,\\nvoice-synthsizer-job-handler/index.js:98:            status: 'completed',\\nvoice-synthsizer-job-handler/recording_salutation/recording_salutation_model.js:28:      default: null\\r\\nvoice-synthsizer-job-handler/recording_salutation/recording_salutation_model.js:32:      default: null\\r\\nvoice-synthsizer-job-handler/recording_salutation/recording_salutation_model.js:61:    status: {\\r\\nvoice-synthsizer-job-handler/recording_salutation/recording_salutation_model.js:63:      default: null\\r\\nvoice-cloning-job-handler/voice_cloning/voice_cloning_model.js:16:    status: {\\nvoice-cloning-job-handler/voice_cloning/voice_cloning_model.js:23:      default: null,\\nvoice-cloning-job-handler/voice_cloning/voice_cloning_model.js:27:      default: null,\\nvoice-cloning-job-handler/voice_cloning/voice_cloning_model.js:31:      default: null,\\nvoice-synthsizer-job-handler/job/job_model.js:34:    status: {\\nvoice-synthsizer-job-handler/job/job_model.js:41:      default: null\\nvoice-cloning-job-handler/user_audio_profile/user_audio_profile_model.js:16:    status: {\\nvoice-cloning-job-handler/user_audio_profile/user_audio_profile_model.js:23:      default: null,\\nvoice-cloning-job-handler/user_audio_profile/user_audio_profile_model.js:27:      default: null,\\nvoice-synthsizer-job-handler/user_audio_profile/user_audio_profile_model.js:16:    status: {\\nvoice-synthsizer-job-handler/user_audio_profile/user_audio_profile_model.js:23:      default: null,\\nvoice-synthsizer-job-handler/user_audio_profile/user_audio_profile_model.js:27:      default: null,\\n\",\"stderr\":\"\",\"aggregated_output\":\"app/services/voice_cloning/voice_cloning_model.js:16:    status: {\\napp/services/voice_cloning/voice_cloning_model.js:23:      default: null,\\napp/services/voice_cloning/voice_cloning_model.js:27:      default: null,\\napp/services/voice_cloning/voice_cloning_model.js:31:      default: null,\\nvoice-synthsizer-job-handler/salutation/salutation_model.js:17:      default: null\\r\\nvoice-synthsizer-job-handler/salutation/salutation_model.js:21:      default: null,\\r\\nvoice-synthsizer-job-handler/salutation/salutation_model.js:26:      default: null,\\r\\nvoice-synthsizer-job-handler/salutation/salutation_model.js:31:      default: null,\\r\\nvoice-cloning-job-handler/index.js:139:          await voiceCloningService.update({ _id, status: 'processing' })\\nvoice-cloning-job-handler/index.js:142:            status: 'processing',\\nvoice-cloning-job-handler/index.js:203:          // clone the voice\\nvoice-cloning-job-handler/index.js:206:          const trainingModelCommand = `python3 ../voice-cloning/clone_voice.py --baseline_model_path ../voice-cloning/pretrained-models/checkpoint_365000.pth --speaker_dataset_path ${outPath} --speaker_embeddings_path ${\\nvoice-cloning-job-handler/index.js:220:            if (file.includes('vits_potion_clone'))\\nvoice-cloning-job-handler/index.js:228:          const minimizeCloningModelCommand = `python3 ../voice-cloning/minimize_cloned_voice_model.py --voice_model_asset_path ${\\nvoice-cloning-job-handler/index.js:242:          // Add the  code to update location of generated model and status into DB\\nvoice-cloning-job-handler/index.js:243:          await voiceCloningService.update({ _id, status: 'completed' })\\nvoice-cloning-job-handler/index.js:255:            status: 'completed',\\nvoice-cloning-job-handler/index.js:287:          // update the db to set status as error\\nvoice-cloning-job-handler/index.js:288:          await voiceCloningService.update({ _id, status: 'error' })\\nvoice-cloning-job-handler/index.js:291:            status: 'error',\\nvoice-cloning-job-handler/index.js:301:      console.error('Error while training voice clone', { error })\\nvoice-synthsizer-job-handler/recording/recording_model.js:214:      default: null,\\nvoice-synthsizer-job-handler/recording/recording_model.js:224:      default: null,\\nvoice-synthsizer-job-handler/recording/recording_model.js:239:            default: null,\\nvoice-synthsizer-job-handler/recording/recording_model.js:243:            default: null,\\nvoice-synthsizer-job-handler/recording/recording_model.js:272:          status: {\\nvoice-synthsizer-job-handler/recording/recording_model.js:274:            default: null,\\nvoice-synthsizer-job-handler/recording/recording_model.js:284:      default: null,\\nvoice-synthsizer-job-handler/recording/recording_model.js:292:      default: null,\\nvoice-synthsizer-job-handler/recording/recording_model.js:296:      default: null,\\nvoice-synthsizer-job-handler/recording/recording_model.js:302:          default: null,\\nvoice-synthsizer-job-handler/recording/recording_model.js:306:          default: null,\\nvoice-synthsizer-job-handler/recording/recording_model.js:312:      default: null,\\nvoice-synthsizer-job-handler/recording/recording_model.js:321:      default: null,\\nvoice-synthsizer-job-handler/recording/recording_model.js:326:      default: null,\\nvoice-synthsizer-job-handler/recording/recording_model.js:331:      default: null,\\nvoice-synthsizer-job-handler/recording/recording_model.js:335:      default: null,\\nvoice-synthsizer-job-handler/recording/recording_model.js:340:      default: null,\\nvoice-synthsizer-job-handler/recording/recording_model.js:345:      default: null,\\nvoice-synthsizer-job-handler/recording/recording_model.js:350:      default: null,\\nvoice-synthsizer-job-handler/recording/recording_model.js:355:      default: null,\\nvoice-synthsizer-job-handler/recording/recording_model.js:364:      default: null,\\nvoice-synthsizer-job-handler/recording/recording_model.js:369:      default: null,\\nvoice-synthsizer-job-handler/recording/recording_model.js:382:      default: null,\\nvoice-synthsizer-job-handler/recording/recording_model.js:387:      default: null,\\nvoice-synthsizer-job-handler/recording/recording_model.js:399:      default: null,\\nvoice-synthsizer-job-handler/index.js:98:            status: 'completed',\\nvoice-synthsizer-job-handler/recording_salutation/recording_salutation_model.js:28:      default: null\\r\\nvoice-synthsizer-job-handler/recording_salutation/recording_salutation_model.js:32:      default: null\\r\\nvoice-synthsizer-job-handler/recording_salutation/recording_salutation_model.js:61:    status: {\\r\\nvoice-synthsizer-job-handler/recording_salutation/recording_salutation_model.js:63:      default: null\\r\\nvoice-cloning-job-handler/voice_cloning/voice_cloning_model.js:16:    status: {\\nvoice-cloning-job-handler/voice_cloning/voice_cloning_model.js:23:      default: null,\\nvoice-cloning-job-handler/voice_cloning/voice_cloning_model.js:27:      default: null,\\nvoice-cloning-job-handler/voice_cloning/voice_cloning_model.js:31:      default: null,\\nvoice-synthsizer-job-handler/job/job_model.js:34:    status: {\\nvoice-synthsizer-job-handler/job/job_model.js:41:      default: null\\nvoice-cloning-job-handler/user_audio_profile/user_audio_profile_model.js:16:    status: {\\nvoice-cloning-job-handler/user_audio_profile/user_audio_profile_model.js:23:      default: null,\\nvoice-cloning-job-handler/user_audio_profile/user_audio_profile_model.js:27:      default: null,\\nvoice-synthsizer-job-handler/user_audio_profile/user_audio_profile_model.js:16:    status: {\\nvoice-synthsizer-job-handler/user_audio_profile/user_audio_profile_model.js:23:      default: null,\\nvoice-synthsizer-job-handler/user_audio_profile/user_audio_profile_model.js:27:      default: null,\\n\",\"exit_code\":0,\"duration\":{\"secs\":0,\"nanos\":78331129},\"formatted_output\":\"app/services/voice_cloning/voice_cloning_model.js:16:    status: {\\napp/services/voice_cloning/voice_cloning_model.js:23:      default: null,\\napp/services/voice_cloning/voice_cloning_model.js:27:      default: null,\\napp/services/voice_cloning/voice_cloning_model.js:31:      default: null,\\nvoice-synthsizer-job-handler/salutation/salutation_model.js:17:      default: null\\r\\nvoice-synthsizer-job-handler/salutation/salutation_model.js:21:      default: null,\\r\\nvoice-synthsizer-job-handler/salutation/salutation_model.js:26:      default: null,\\r\\nvoice-synthsizer-job-handler/salutation/salutation_model.js:31:      default: null,\\r\\nvoice-cloning-job-handler/index.js:139:          await voiceCloningService.update({ _id, status: 'processing' })\\nvoice-cloning-job-handler/index.js:142:            status: 'processing',\\nvoice-cloning-job-handler/index.js:203:          // clone the voice\\nvoice-cloning-job-handler/index.js:206:          const trainingModelCommand = `python3 ../voice-cloning/clone_voice.py --baseline_model_path ../voice-cloning/pretrained-models/checkpoint_365000.pth --speaker_dataset_path ${outPath} --speaker_embeddings_path ${\\nvoice-cloning-job-handler/index.js:220:            if (file.includes('vits_potion_clone'))\\nvoice-cloning-job-handler/index.js:228:          const minimizeCloningModelCommand = `python3 ../voice-cloning/minimize_cloned_voice_model.py --voice_model_asset_path ${\\nvoice-cloning-job-handler/index.js:242:          // Add the  code to update location of generated model and status into DB\\nvoice-cloning-job-handler/index.js:243:          await voiceCloningService.update({ _id, status: 'completed' })\\nvoice-cloning-job-handler/index.js:255:            status: 'completed',\\nvoice-cloning-job-handler/index.js:287:          // update the db to set status as error\\nvoice-cloning-job-handler/index.js:288:          await voiceCloningService.update({ _id, status: 'error' })\\nvoice-cloning-job-handler/index.js:291:            status: 'error',\\nvoice-cloning-job-handler/index.js:301:      console.error('Error while training voice clone', { error })\\nvoice-synthsizer-job-handler/recording/recording_model.js:214:      default: null,\\nvoice-synthsizer-job-handler/recording/recording_model.js:224:      default: null,\\nvoice-synthsizer-job-handler/recording/recording_model.js:239:            default: null,\\nvoice-synthsizer-job-handler/recording/recording_model.js:243:            default: null,\\nvoice-synthsizer-job-handler/recording/recording_model.js:272:          status: {\\nvoice-synthsizer-job-handler/recording/recording_model.js:274:            default: null,\\nvoice-synthsizer-job-handler/recording/recording_model.js:284:      default: null,\\nvoice-synthsizer-job-handler/recording/recording_model.js:292:      default: null,\\nvoice-synthsizer-job-handler/recording/recording_model.js:296:      default: null,\\nvoice-synthsizer-job-handler/recording/recording_model.js:302:          default: null,\\nvoice-synthsizer-job-handler/recording/recording_model.js:306:          default: null,\\nvoice-synthsizer-job-handler/recording/recording_model.js:312:      default: null,\\nvoice-synthsizer-job-handler/recording/recording_model.js:321:      default: null,\\nvoice-synthsizer-job-handler/recording/recording_model.js:326:      default: null,\\nvoice-synthsizer-job-handler/recording/recording_model.js:331:      default: null,\\nvoice-synthsizer-job-handler/recording/recording_model.js:335:      default: null,\\nvoice-synthsizer-job-handler/recording/recording_model.js:340:      default: null,\\nvoice-synthsizer-job-handler/recording/recording_model.js:345:      default: null,\\nvoice-synthsizer-job-handler/recording/recording_model.js:350:      default: null,\\nvoice-synthsizer-job-handler/recording/recording_model.js:355:      default: null,\\nvoice-synthsizer-job-handler/recording/recording_model.js:364:      default: null,\\nvoice-synthsizer-job-handler/recording/recording_model.js:369:      default: null,\\nvoice-synthsizer-job-handler/recording/recording_model.js:382:      default: null,\\nvoice-synthsizer-job-handler/recording/recording_model.js:387:      default: null,\\nvoice-synthsizer-job-handler/recording/recording_model.js:399:      default: null,\\nvoice-synthsizer-job-handler/index.js:98:            status: 'completed',\\nvoice-synthsizer-job-handler/recording_salutation/recording_salutation_model.js:28:      default: null\\r\\nvoice-synthsizer-job-handler/recording_salutation/recording_salutation_model.js:32:      default: null\\r\\nvoice-synthsizer-job-handler/recording_salutation/recording_salutation_model.js:61:    status: {\\r\\nvoice-synthsizer-job-handler/recording_salutation/recording_salutation_model.js:63:      default: null\\r\\nvoice-cloning-job-handler/voice_cloning/voice_cloning_model.js:16:    status: {\\nvoice-cloning-job-handler/voice_cloning/voice_cloning_model.js:23:      default: null,\\nvoice-cloning-job-handler/voice_cloning/voice_cloning_model.js:27:      default: null,\\nvoice-cloning-job-handler/voice_cloning/voice_cloning_model.js:31:      default: null,\\nvoice-synthsizer-job-handler/job/job_model.js:34:    status: {\\nvoice-synthsizer-job-handler/job/job_model.js:41:      default: null\\nvoice-cloning-job-handler/user_audio_profile/user_audio_profile_model.js:16:    status: {\\nvoice-cloning-job-handler/user_audio_profile/user_audio_profile_model.js:23:      default: null,\\nvoice-cloning-job-handler/user_audio_profile/user_audio_profile_model.js:27:      default: null,\\nvoice-synthsizer-job-handler/user_audio_profile/user_audio_profile_model.js:16:    status: {\\nvoice-synthsizer-job-handler/user_audio_profile/user_audio_profile_model.js:23:      default: null,\\nvoice-synthsizer-job-handler/user_audio_profile/user_audio_profile_model.js:27:      default: null,\\n\"},\"started_at_ms\":1790036463628,\"completed_at_ms\":1790036463706}}\n/tmp/codex-home/sessions/2026/09/22/rollout-2026-09-22T00-20-48-01a0c67c-96dd-7123-9bd6-57582971485c.jsonl:34:{\"timestamp\":\"2026-09-22T00:21:09.039Z\",\"ordinal\":33,\"type\":\"event_msg\",\"payload\":{\"type\":\"item_completed\",\"thread_id\":\"01a0c67c-96dd-7123-9bd6-57582971485c\",\"turn_id\":\"01a0c67c-96f7-72f0-ad72-204807ac3cc9\",\"item\":{\"type\":\"AgentMessage\",\"id\":\"msg_0b5ffdda780a68ba016ab1c9f223c087d28f38a3fea67a2a95\",\"content\":[{\"type\":\"Text\",\"text\":\"The current worker has no tier routing at all: every message is forced through the legacy VITS pipeline and assumes a Mongoose `_doc` envelope. I’m checking the producer/message contracts and adjacent workers now, because `pro_v2` likely uses a newer payload shape that explains both non-processing and `null` status results.\"}],\"phase\":\"commentary\"},\"started_at_ms\":1790036468078,\"completed_at_ms\":1790036469039}}\n/tmp/codex-home/sessions/2026/09/22/rollout-2026-09-22T00-20-48-01a0c67c-96dd-7123-9bd6-57582971485c.jsonl:35:{\"timestamp\":\"2026-09-22T00:21:09.041Z\",\"ordinal\":34,\"type\":\"response_item\",\"payload\":{\"type\":\"message\",\"id\":\"msg_0b5ffdda780a68ba016ab1c9f223c087d28f38a3fea67a2a95\",\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"The current worker has no tier routing at all: every message is forced through the legacy VITS pipeline and assumes a Mongoose `_doc` envelope. I’m checking the producer/message contracts and adjacent workers now, because `pro_v2` likely uses a newer payload shape that explains both non-processing and `null` status results.\"}],\"phase\":\"commentary\",\"internal_chat_message_metadata_passthrough\":{\"turn_id\":\"01a0c67c-96f7-72f0-ad72-204807ac3cc9\",\"create_time\":1790036465.026481,\"content_item_kinds\":[\"unknown\"]}}}\n/tmp/codex-home/sessions/2026/09/22/rollout-2026-09-22T00-20-48-01a0c67c-96dd-7123-9bd6-57582971485c.jsonl:113:{\"timestamp\":\"2026-09-22T00:21:56.423Z\",\"ordinal\":112,\"type\":\"response_item\",\"payload\":{\"type\":\"custom_tool_call\",\"id\":\"ctc_0b5ffdda780a68ba016ab1ca22219487d2b5db212afe099081\",\"status\":\"completed\",\"call_id\":\"call_SdQOqQGChpHsT03YodezR2yc\",\"name\":\"exec\",\"input\":\"const r = await tools.exec_command({cmd:\\\"rg -n --hidden -F \\\\\\\"pro_v2\\\\\\\" /workspace /tmp 2>/dev/null | sed -n '1,160p'\\\",\\\"workdir\\\":\\\"/workspace\\\",\\\"yield_time_ms\\\":10000,\\\"max_output_tokens\\\":10000}); text(r.output);\\n\",\"internal_chat_message_metadata_passthrough\":{\"turn_id\":\"01a0c67c-96f7-72f0-ad72-204807ac3cc9\",\"create_time\":1790036507.165699}}}\n","exit_code":0,"status":"completed"}}
{"type":"item.started","item":{"id":"item_18","type":"command_execution","command":"/bin/bash -lc \"diff -u app/services/voice_cloning/voice_cloning_model.js voice-cloning-job-handler/voice_cloning/voice_cloning_model.js || true\ndiff -u app/services/voice_cloning/voice_cloning_service.js voice-cloning-job-handler/voice_cloning/voice_cloning_service.js || true\nsed -n '1,220p' voice-cloning-job-handler/user_audio_profile/user_audio_profile_model.js\nsed -n '1,240p' voice-cloning-job-handler/user_audio_profile/user_audio_profile_service.js\nsed -n '1,340p' voice-synthsizer-job-handler/index.js\"","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_18","type":"command_execution","command":"/bin/bash -lc \"diff -u app/services/voice_cloning/voice_cloning_model.js voice-cloning-job-handler/voice_cloning/voice_cloning_model.js || true\ndiff -u app/services/voice_cloning/voice_cloning_service.js voice-cloning-job-handler/voice_cloning/voice_cloning_service.js || true\nsed -n '1,220p' voice-cloning-job-handler/user_audio_profile/user_audio_profile_model.js\nsed -n '1,240p' voice-cloning-job-handler/user_audio_profile/user_audio_profile_service.js\nsed -n '1,340p' voice-synthsizer-job-handler/index.js\"","aggregated_output":"--- app/services/voice_cloning/voice_cloning_service.js\t2026-08-04 09:10:08.000000000 +0000\n+++ voice-cloning-job-handler/voice_cloning/voice_cloning_service.js\t2026-08-04 09:10:08.000000000 +0000\n@@ -1,4 +1,4 @@\n-const StringifyUtils = require('../utils/logService')\n+const StringifyUtils = require('../../app/services/utils/logService')\n \n const create = (VoiceCloningModel) => async (data) => {\n   try {\n@@ -72,6 +72,7 @@\n         new: true,\n       }\n     )\n+\n     return updatedModel\n   } catch (error) {\n     const details = { data }\nconst mongoose = require('mongoose')\nconst Schema = mongoose.Schema\n\nconst UserAudioProfileSchema = Schema(\n  {\n    userId: {\n      type: Schema.Types.ObjectId,\n      ref: 'User',\n      required: true,\n    },\n    name: {\n      type: String,\n      required: true,\n      default: '',\n    },\n    status: {\n      type: String,\n      required: false,\n      default: 'created',\n    },\n    training_model_path: {\n      type: Schema.Types.Mixed,\n      default: null,\n    },\n    training_model_s3_path: {\n      type: Schema.Types.Mixed,\n      default: null,\n    },\n    deleted: {\n      type: Boolean,\n      required: true,\n      default: false,\n    },\n  },\n  {\n    timestamps: true,\n  }\n)\n\nmodule.exports = mongoose.model('UserAudioProfile', UserAudioProfileSchema)\nconst StringifyUtils = require('../../app/services/utils/logService')\n\nconst create = (UserAudioProfileModel) => async (data) => {\n  try {\n    const newModel = new UserAudioProfileModel({ ...data })\n    const savedModel = await newModel.save()\n    return savedModel\n  } catch (error) {\n    const details = { data }\n    console.log(\n      'ERROR - USER AUDIO PROFILE SERVICE > create',\n      StringifyUtils.potionErrorObj(error, details)\n    )\n    throw error\n  }\n}\n\nconst insertMany = (UserAudioProfileModel) => async (data) => {\n  try {\n    const inserted = await UserAudioProfileModel.insertMany(data)\n    return inserted\n  } catch (error) {\n    const details = { data }\n    console.log(\n      'ERROR - USER AUDIO PROFILE SERVICE > insertMany',\n      StringifyUtils.potionErrorObj(error, details)\n    )\n    throw error\n  }\n}\n\nconst read = (UserAudioProfileModel) => async (filter) => {\n  try {\n    const foundModel = await UserAudioProfileModel.findOne({\n      ...filter,\n      deleted: false,\n    })\n    return foundModel\n  } catch (error) {\n    const details = { filter }\n    console.log(\n      'ERROR - USER AUDIO PROFILE SERVICE > read',\n      StringifyUtils.potionErrorObj(error, details)\n    )\n    throw error\n  }\n}\n\nconst find = (UserAudioProfileModel) => async (filter) => {\n  try {\n    const foundModels = await UserAudioProfileModel.find({\n      ...filter,\n      deleted: false,\n    })\n    return foundModels\n  } catch (error) {\n    const details = { filter }\n    console.log(\n      'ERROR - USER AUDIO PROFILE SERVICE > find',\n      StringifyUtils.potionErrorObj(error, details)\n    )\n    throw error\n  }\n}\n\nconst update = (UserAudioProfileModel) => async (data) => {\n  try {\n    const updatedModel = await UserAudioProfileModel.findOneAndUpdate(\n      { _id: data._id },\n      data,\n      {\n        new: true,\n      }\n    )\n    return updatedModel\n  } catch (error) {\n    const details = { data }\n    console.log(\n      'ERROR - USER AUDIO PROFILE SERVICE > update',\n      StringifyUtils.potionErrorObj(error, details)\n    )\n    throw error\n  }\n}\n\nconst remove = (UserAudioProfileModel) => async (filter) => {\n  try {\n    const updatedModel = await UserAudioProfileModel.findOneAndUpdate(\n      { ...filter },\n      {\n        $set: {\n          deleted: true,\n        },\n      },\n      { new: true }\n    )\n    return updatedModel\n  } catch (error) {\n    const details = { filter }\n    console.log(\n      'ERROR - USER AUDIO PROFILE SERVICE > remove',\n      StringifyUtils.potionErrorObj(error, details)\n    )\n    throw error\n  }\n}\n\nconst removeMany = (UserAudioProfileModel) => async (filter) => {\n  try {\n    const updatedModel = await UserAudioProfileModel.updateMany(\n      { ...filter },\n      {\n        $set: {\n          deleted: true,\n        },\n      },\n      { new: true }\n    )\n    return updatedModel\n  } catch (error) {\n    const details = { filter }\n    console.log(\n      'ERROR - USER AUDIO PROFILE SERVICE > removeMany',\n      StringifyUtils.potionErrorObj(error, details)\n    )\n    throw error\n  }\n}\n\nmodule.exports = (UserAudioProfileModel) => {\n  return {\n    create: create(UserAudioProfileModel),\n    insertMany: insertMany(UserAudioProfileModel),\n    read: read(UserAudioProfileModel),\n    remove: remove(UserAudioProfileModel),\n    removeMany: removeMany(UserAudioProfileModel),\n    update: update(UserAudioProfileModel),\n    find: find(UserAudioProfileModel),\n  }\n}\nconst fs = require('fs')\nconst exec = require('child_process').exec\nconst AWS = require('aws-sdk')\nconst Bugsnag = require('@bugsnag/js')\nconst uuid = require('uuid').v4\nconst version = require('./package.json').version\nconst sqs = require('../app/services/sqs')\nconst s3 = require('../app/services/s3')\nconst userAudioProfileService = require('./user_audio_profile')\nconst recordingModel = require('./recording')\nconst recordingSalutationModel = require('./recording_salutation')\nconst jobService = require('./job')\nconst salutationService = require('./salutation')\nlet throttleMessageFetching = true\nAWS.config.update({ region: 'us-west-2' })\nconst sqsQueueUrl = process.env.SQS_URL\nconst mongoUriDev = process.env.MONGODB_URI_DEV\nconst mongoUriStaging = process.env.MONGODB_URI_STAGING\nconst mongoUriProd = process.env.MONGODB_URI_PROD\nconst APP_ENV = process.env.POTION_APP_ENV\nconst mongoose = require('mongoose')\n\nfunction execShellCommand(cmd) {\n  // const exec = require(\"child_process\").exec;\n  return new Promise((resolve, reject) => {\n    exec(cmd, { maxBuffer: 1024 * 1000000 }, (error, stdout, stderr) => {\n      if (error) {\n        console.log('Error while processing python command', error)\n        reject(error)\n      }\n      console.log('Stdout --- ', stdout)\n      console.log('Std error --- ', stderr)\n      resolve(stdout || stderr)\n    })\n  })\n}\n\nfunction connectDB(dbUri, retryCount = 0) {\n  return new Promise((resolve, reject) => {\n    console.log('Connection Attempt : ', retryCount)\n    mongoose.set('strictQuery', true)\n    mongoose\n      .connect(dbUri)\n      .then((msg) => {\n        console.log('Connected to Mongo DB !')\n        resolve()\n      })\n      .catch((err) => {\n        console.log('Failed to connect dns mongo: ', err)\n        if (retryCount < 6) {\n          retryCount++\n          connectDB(dbUri, retryCount)\n        }\n      })\n  })\n}\n\nconst processQueue = () => {\n  /* eslint-disable no-async-promise-executor */\n  return new Promise(async (resolve, reject) => {\n    try {\n      const response = await sqs.fetchMessageFromSQS(sqsQueueUrl)\n\n      if (\n        typeof response.Messages !== 'undefined' &&\n        response.Messages.length > 0\n      ) {\n        throttleMessageFetching = false\n        const job = JSON.parse(response.Messages[0].Body)\n        const receiptHandle = response.Messages[0].ReceiptHandle\n        try {\n          await sqs.deleteMessageFromSQS(sqsQueueUrl, receiptHandle)\n\n          const {\n            userAudioProfileId,\n            text,\n            firstName,\n            salutationId,\n            recordingId,\n            baseUrlForPotionAi,\n            env,\n          } = job\n\n          const DB_URI =\n            env === 'production'\n              ? mongoUriProd\n              : env === 'staging'\n              ? mongoUriStaging\n              : mongoUriDev\n\n          console.log('DB_URI ', DB_URI)\n          await connectDB(DB_URI)\n\n          // read the path for the training model for the this users audio profile\n\n          const userAudioProfile = await userAudioProfileService.find({\n            _id: userAudioProfileId,\n            status: 'completed',\n          })\n          if (userAudioProfile) {\n            const { training_model_path, userId } = userAudioProfile[0]\n            const {\n              voice_model_light_path,\n              voice_model_config_light_path,\n              voice_model_speakers_file_path, // name for speakers embeddings file path\n            } = training_model_path\n\n            const outputPath = `/tmp/${uuid()}/`\n            if (!fs.existsSync(outputPath)) {\n              fs.mkdirSync(outputPath, { recursive: true })\n            }\n\n            const AI_COMMAND = `python3 ../voice-cloning/synthesize_speech.py --voice_model_path ${voice_model_light_path} --voice_model_config_path ${voice_model_config_light_path} --speaker_embeddings_path ${voice_model_speakers_file_path} --txt \"${text}\" --output_path ${outputPath}`\n            console.log('AI_COMMAND ', AI_COMMAND)\n\n            const SYNTHESIZE_AI_LABEL = `Time consumed by AI` + Math.random()\n            console.time(SYNTHESIZE_AI_LABEL)\n            const aiResponse = await execShellCommand(AI_COMMAND)\n            console.timeEnd(SYNTHESIZE_AI_LABEL)\n\n            let generatedFileName = ''\n            fs.readdirSync(`${outputPath}`).forEach((file) => {\n              if (file.includes('sr48000.wav')) generatedFileName = file\n            })\n\n            // upload the file to s3\n            const uploadParams = {\n              filePath: `${outputPath}${generatedFileName}`,\n              bucket: `recordings-${env}`,\n              fileName: `${uuid()}_salutation_${firstName.replace(\n                '-',\n                '_'\n              )}.wav`,\n              contentType: 'audio/x-wav',\n              fileType: 'wav',\n            }\n            console.time('Time to Upload video on S3')\n            const greetingUploadResponse = await s3.upload(uploadParams)\n            console.timeEnd('Time to Upload video on S3')\n\n            // Create new entry with the s3 path to salutation collection for the user and its profile id\n            // upsert the salutation\n            await salutationService.updateOrCreate(\n              {\n                firstName: firstName,\n                salutationVideo: greetingUploadResponse,\n                userAudioProfileId,\n              },\n              userId\n            )\n            // update the dynamic recordings for the current dynamic video with salutation url\n            const salutationToUpdate = await recordingSalutationModel.findOne({\n              _id: salutationId,\n              deleted: false,\n            })\n\n            const recordingToUpdate = await recordingModel.findOne({\n              _id: recordingId,\n              deleted: false,\n            })\n\n            if (\n              salutationToUpdate &&\n              salutationToUpdate.deleted === false &&\n              recordingToUpdate\n            ) {\n              const jobsToInsert = []\n\n              await recordingSalutationModel.findOneAndUpdate(\n                {\n                  _id: salutationId,\n                },\n                {\n                  $set: {\n                    salutationVideo: greetingUploadResponse,\n                  },\n                }\n              )\n\n              const jobData = {\n                originalGreeting: recordingToUpdate.masterSalutationVideoUrl,\n                originalVideo:\n                  recordingToUpdate.originalVideoUrl ||\n                  recordingToUpdate.urls[0].url,\n                cropTimestamp: recordingToUpdate.cropTimestamp,\n                greetingClips: [greetingUploadResponse],\n                greetingObjects: [\n                  {\n                    greetingId: salutationToUpdate._id,\n                    firstName: firstName,\n                    videoUrl: greetingUploadResponse,\n                  },\n                ],\n                requestOrigin: baseUrlForPotionAi,\n                environment: env,\n                recordingId: recordingToUpdate._id,\n                salutation: salutationToUpdate._id,\n                dynamicVideoType: recordingToUpdate.dynamicVideoType,\n              }\n              jobsToInsert.push({\n                firstName,\n                recordingId: recordingToUpdate._id,\n                userId: recordingToUpdate.userId,\n                salutationId: salutationToUpdate._id,\n                metadata: jobData,\n              })\n\n              // create the job for the ai to create processing\n              if (jobsToInsert.length) {\n                await jobService.insertMany(jobsToInsert)\n              }\n            }\n\n            fs.unlinkSync(`${outputPath}${generatedFileName}`)\n            console.log(`[deleted] ${outputPath}${generatedFileName}`)\n          } else {\n            Bugsnag.notify(\n              new Error(\n                `audio profile training model not found ` + JSON.stringify(job)\n              )\n            )\n\n            resolve() // to continue working on new jobs\n          }\n        } catch (error) {\n          console.error('Error while synthesizing audio', { error })\n          Bugsnag.notify(\n            new Error(`Unable to synthesize audio ` + JSON.stringify(job))\n          )\n          Bugsnag.notify(error)\n          resolve() // to continue working on new jobs\n        }\n      } else {\n        throttleMessageFetching = true\n      }\n      resolve()\n    } catch (error) {\n      console.error('Error while synthesizing audio', { error })\n      Bugsnag.notify(error)\n      resolve() // to continue working on new jobs\n    } finally {\n      mongoose.connection.close()\n    }\n  })\n}\n\nfunction sleep(ms) {\n  return new Promise((resolve) => {\n    setTimeout(resolve, ms)\n  })\n}\nconst init = async () => {\n  Bugsnag.start({\n    appVersion: APP_ENV + version,\n    apiKey: process.env.BUGSNAG_BACKEND_KEY,\n    releaseStage: process.env.NODE_ENV,\n  })\n  try {\n    while (true) {\n      await processQueue()\n      if (throttleMessageFetching) await sleep(2000)\n    }\n  } catch (error) {\n    Bugsnag.notify(error)\n  }\n}\ninit()\n","exit_code":0,"status":"completed"}}
{"type":"item.started","item":{"id":"item_19","type":"command_execution","command":"/bin/bash -lc \"sed -n '1,280p' voice-cloning/clone_voice.py && sed -n '1,260p' voice-cloning/train_config.py && sed -n '1,260p' voice-cloning/minimize_cloned_voice_model.py\"","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_19","type":"command_execution","command":"/bin/bash -lc \"sed -n '1,280p' voice-cloning/clone_voice.py && sed -n '1,260p' voice-cloning/train_config.py && sed -n '1,260p' voice-cloning/minimize_cloned_voice_model.py\"","aggregated_output":"#!/usr/bin/env python3\n# -*- coding: utf-8 -*-\n\nimport sys\nimport os\nimport argparse\n\nimport torch\n\n# load coqui-ai/trainer libraries\nfrom trainer import Trainer, TrainerArgs\n\n# load coqui-ai/TTS libraries\nfrom TTS.tts.configs.shared_configs import BaseDatasetConfig\nfrom TTS.tts.configs.vits_config import VitsConfig\nfrom TTS.tts.datasets import load_tts_samples\nfrom TTS.tts.models.vits import Vits, VitsArgs, VitsAudioConfig\n\n\n#\n# parse command line arguments\n#\ndef parse_cmdline_args():\n    parser = argparse.ArgumentParser(\n        description = \"Code to clone a voice from a given set of voice samples and a multi-speaker baseline model\")\n    parser.add_argument(\"--baseline_model_path\",        type = str, required = True,\n        help = \"Path to multi-speaker baseline model (VITS model)\")\n    parser.add_argument(\"--speaker_dataset_path\",       type = str, required = True,\n        help = \"Path to voice cloning dataset\")\n    parser.add_argument(\"--speaker_embeddings_path\",    type = str, required = True,\n        help = \"Path to speaker's embeddings file\")\n    parser.add_argument(\"--output_path\",                type = str, default = \"results/cloned-voices\",\n        help = \"Path to store trained / generated assets\")\n    parser.add_argument(\"--batch_size\",                 type = int, default = 96,   # 96 is suitable for AWS g5 instances\n        help = \"Batch size for training run\")\n    parser.add_argument(\"--max_epochs\",                 type = int, default = 200,   # 200 for batch_size 96 (with the 22.050 sampling rate multi-speaker model\n        help = \"Maximum number of epochs for training run\")                          # 2000 for batch_size 64 and 1500 for batch_size 96 (with the initial 16k sampling rate VCTK 0.80 model)\n    parser.add_argument(\"--use_cpu\",                    default = False, action = \"store_true\",   # untested!!!\n        help = \"Signal that CPU should be used even if a CUDA-device is available\")\n    parser.add_argument(\"--output_format\",              type = str, choices = [\"txt\", \"json\"], default = \"txt\",\n        help = \"Output format; available choices include 'txt' for human readible text and 'json' for JSON formatting\")\n\n    return parser.parse_args()\n\n\n#\n# main training method (voice cloning)\n#\ndef main(args):\n    if args.output_format == \"txt\":\n        print(\"Commencing training of a new multi-speaker potion-voice baseline model:\")\n        print(\"\")\n        print(\"  + Baseline multi-speaker model path: {}\" . format(args.baseline_model_path))\n        print(\"  + Voice training dataset path      : {}\" . format(args.speaker_dataset_path))\n        print(\"  + Speaker embeddings path          : {}\" . format(args.speaker_embeddings_path))\n        print(\"  + Output path                      : {}\" . format(args.output_path))\n        print(\"  + Batch size                       : {}\" . format(args.batch_size))\n        print(\"  + Training runs (max epochs)       : {}\" . format(args.max_epochs))\n        print(\"\")\n\n    # determine whether CUDA support is available and set device parameters accordingly\n    use_cuda = torch.cuda.is_available()\n    if args.output_format == \"txt\":\n        print(\"  + CUDA availability                : {}\" . format(use_cuda))\n\n    if args.use_cpu:\n        device = \"cpu\"\n        device_torch = False\n    elif use_cuda:\n        device = \"cuda\"\n        device_torch = torch.device(\"cuda\")\n    else:\n        device = \"cpu\"\n        device_torch = False\n    if args.output_format == \"txt\":\n        print(\"  + Compute device used              : {}\" . format(device))\n        print(\"\")\n\n    # define training data set\n    dataset_config = BaseDatasetConfig(formatter = \"vctk_old\", language = \"en-us\", path = args.speaker_dataset_path)\n\n    # set VITS training parameters\n    audio_config = VitsAudioConfig(\n        sample_rate         = 22050,\n        win_length          = 1024,\n        hop_length          = 256,\n        num_mels            = 80,\n        mel_fmin            = 0,\n        mel_fmax            = None,\n    )\n\n    vitsArgs = VitsArgs(\n        use_speaker_embedding   = False,\n        use_d_vector_file       = True,\n        d_vector_file           = [args.speaker_embeddings_path],\n        d_vector_dim            = 512,\n        num_layers_text_encoder = 10\n    )\n\n    config = VitsConfig(\n        model_args              = vitsArgs,\n        audio                   = audio_config,\n        run_name                = \"vits_potion_clone\",\n        use_speaker_embedding   = False,\n        use_d_vector_file       = True,\n        d_vector_file           = [args.speaker_embeddings_path],\n        d_vector_dim            = 512,\n        batch_size              = args.batch_size,\n        eval_batch_size         = 8,\n        batch_group_size        = 0,   # changing this to 5 (VITS training default) slows training down, but doesn't have any positive training effects\n        num_loader_workers      = 4,\n        num_eval_loader_workers = 4,\n        run_eval                = True,\n        eval_split_size         = 2,   # fix size of eval dataset (default 1% approach requires at least 100 voice samples!)\n        test_delay_epochs       = -1,\n        epochs                  = args.max_epochs,\n        text_cleaner            = \"english_cleaners\",\n        use_phonemes            = False,\n        phoneme_language        = \"en-us\",\n        phoneme_cache_path      = os.path.join(args.output_path, \"phoneme_cache\"),\n        compute_input_seq_cache = True,\n        print_step              = 50,\n        print_eval              = True,\n        mixed_precision         = True,\n        max_text_len            = 325,\n        output_path             = args.output_path,\n\n        save_checkpoints        = True,\n        save_step               = 200,\n\n        datasets                = [dataset_config],\n        cudnn_benchmark         = False,\n        #characters              = {\n        #    \"pad\": \"_\",\n        #    \"eos\": \"&\",\n        #    \"bos\": \"*\",\n        #    \"characters\": \"!¡'(),-.:;¿?abcdefghijklmnopqrstuvwxyz «°±µ»$%&‘’‚“`”„\",\n        #    \"punctuations\": \"!¡'(),-.:;¿? \",\n        #    \"phonemes\": None,\n        #    \"unique\": True\n        #},\n        test_sentences = [\n            [\"It took me quite a long time to develop a voice, and now that I have it I'm not going to be silent.\"],\n            [\"Be a voice, not an echo.\"],\n            [\"I'm sorry Dave. I'm afraid I can't do that.\"],\n            [\"This cake is great. It's so delicious and moist.\"],\n            [\"Prior to November 22, 1963.\"],\n            [\"Hey! Sandra.\"],\n            [\"Hey! Andrew.\"],\n            [\"Hey, Michelle.\"],\n            [\"Hey! George.\"],\n            [\"Hey there, Rachel.\"]\n        ]\n    )\n\n    # load training samples\n    train_samples, eval_samples = load_tts_samples(config.datasets, eval_split = True, eval_split_max_size = config.eval_split_max_size, eval_split_size = config.eval_split_size)\n\n    # init VITS model\n    model = Vits.init_from_config(config)\n\n    # init voice cloning\n    trainer = Trainer(\n        TrainerArgs(restore_path = args.baseline_model_path, use_ddp = False),\n        config,\n        args.output_path,\n        model = model,\n        train_samples = train_samples,\n        eval_samples = eval_samples\n    )\n\n    # trigger voice cloning (aka single speaker training)\n    try:\n        trainer.fit()\n    except (KeyboardInterrupt, SystemExit):\n        print(\"Training stopped manually (via keyboard interrupt)! Bye.\")\n        exit(0)\n\n    # determine required adjustment for speech synthesizing (i.e., the scaling factor for the duration predictor)\n    # take the duration of the test sentence and calculate the difference to corresponding reference samples\n    # set config.model_args[\"length_scale\"] accordingly and save the updated config asset\n\n    # exit gracefully\n    if args.output_format == \"txt\":\n        print(\"\")\n        print(\"Completed voice cloning. The resulting model(s) can be found at:\")\n        print(\"  --> {}\" . format(args.output_path))\n        print(\"\")\n        print(\"Done; bye.\")\n        print(\"\")\n\n\nif __name__ == \"__main__\":\n    # parse command line arguments\n    args = parse_cmdline_args()\n\n    # clear command line arguments to avoid triggering argparse features part of Trainer / coqpit imports\n    #    Traceback (most recent call last):\n    #      File \"train_multispeaker_baseline_model.py\", line 208, in <module>\n    #        main(args)\n    #      File \"train_multispeaker_baseline_model.py\", line 177, in main\n    #        trainer = Trainer(\n    #      File \"/home/ubuntu/dev/potion-voice_venv/lib/python3.8/site-packages/trainer/trainer.py\", line 360, in __init__\n    #        config, new_fields = self.init_training(args, coqpit_overrides, config)\n    #      File \"/home/ubuntu/dev/potion-voice_venv/lib/python3.8/site-packages/trainer/trainer.py\", line 594, in init_training\n    #        config.parse_known_args(coqpit_overrides, relaxed_parser=True)\n    #      File \"/home/ubuntu/dev/potion-voice_venv/lib/python3.8/site-packages/coqpit/coqpit.py\", line 843, in parse_known_args\n    #        parser = self.init_argparse(arg_prefix=arg_prefix, relaxed_parser=relaxed_parser)\n    #      File \"/home/ubuntu/dev/potion-voice_venv/lib/python3.8/site-packages/coqpit/coqpit.py\", line 881, in init_argparse\n    #        _init_argparse(\n    #      File \"/home/ubuntu/dev/potion-voice_venv/lib/python3.8/site-packages/coqpit/coqpit.py\", line 529, in _init_argparse\n    #        parser = _init_argparse(\n    #      File \"/home/ubuntu/dev/potion-voice_venv/lib/python3.8/site-packages/coqpit/coqpit.py\", line 550, in _init_argparse\n    #        return default.init_argparse(\n    #    AttributeError: 'str' object has no attribute 'init_argparse'\n    sys.argv = [sys.argv[0]]\n\n    # ensure the output path exists\n    os.makedirs(args.output_path, exist_ok = True)\n\n    main(args)\n\n\n    ### USAGE:\n    ### $ python3 TTS/TTS/bin/resample.py --input_dir voice_dataset_path/person_82/wav48/1 --output_sr 16000\n    ### $ python3 clone_voice.py [with argument]\n#!/usr/bin/env python3\n# -*- coding: utf-8 -*-\n\n####################################################################################\n###                                                                              ###\n### Configuration File for Multi-Speaker Baseline Model Training & Voice Cloning ###\n###                                                                              ###\n####################################################################################\n\nimport os\n\n# Data Sets\n\n## VCTK (v0.92), sampling rate: 48000\n\nVCTK_PRESET              = \"VCTK\"\nVCTK_DATASET_NAME        = \"VCTK\"\nVCTK_DATASET_FORMATTER   = \"vctk\"\nVCTK_DATASET_FILE_FORMAT = \"flac\"\nVCTK_DATASET_PATH        = \"results/datasets/sr22050/VCTK-Corpus-0.92\"\nVCTK_SPK_EMB_PATH        = os.path.join(VCTK_DATASET_PATH, \"speakers.pth\")\n\n## LibriTTS TC360, sampling rate: 24000\n\nLIBRITTS_TC360_PRESET              = \"LibriTTS_tc360\"\nLIBRITTS_TC360_DATASET_NAME        = \"LibtriTTS-tc360\"\nLIBRITTS_TC360_DATASET_FORMATTER   = \"libri_tts\"\nLIBRITTS_TC360_DATASET_FILE_FORMAT = \"wav\"\nLIBRITTS_TC360_DATASET_PATH        = \"results/datasets/sr22050/LibriTTS/train-clean-360\"\nLIBRITTS_TC360_SPK_EMB_PATH        = os.path.join(LIBRITTS_TC360_DATASET_PATH, \"speakers.pth\")\n\n## DAPS\n\n## Potion salutation recordings\n\nPOTION_SALUT_PRESET              = \"POTION_Salut\"\nPOTION_SALUT_DATASET_NAME        = \"potion-Salut\"\nPOTION_SALUT_DATASET_FORMATTER   = \"vctk_old\"\nPOTION_SALUT_DATASET_FILE_FORMAT = \"wav\"\nPOTION_SALUT_DATASET_PATH        = \"results/datasets/sr22050/potion-salut-corpus-4ac24ce8-8405-4b70-8b48-018d4492f6e9\"\nPOTION_SALUT_SPK_EMB_PATH        = os.path.join(POTION_SALUT_DATASET_PATH, \"speakers.pth\")\n\n## Potion voice cloning recordings\n\nPOTION_SALUT_PRESET              = \"potion_voice_cloning\"\nPOTION_SALUT_DATASET_NAME        = \"\"\nPOTION_SALUT_DATASET_FORMATTER   = \"vctk_old\"\nPOTION_SALUT_DATASET_FILE_FORMAT = \"wav\"\n#!/usr/bin/env python3\n# -*- coding: utf-8 -*-\n\nimport sys\nimport os\nimport argparse\nfrom pathlib import Path\n\nimport json\nimport torch\n\nfrom TTS.config import load_config\nfrom TTS.tts.models import setup_model as setup_tts_model\n\n\n#\n# parse command line arguments\n#\ndef parse_cmdline_args():\n    parser = argparse.ArgumentParser(\n        description = \"Code to minimise (i.e., remove optimiser & discriminator) a cloned voice model\")\n    parser.add_argument(\"--voice_model_asset_path\",         type = str, required = True,\n        help = \"Path to directory storing cloned voice model and the corresponding configuration and speaker files\")\n    parser.add_argument(\"--voice_model_name\",               type = str, default = \"best_model.pth\",\n        help = \"Name of the (best) cloned voice model\")\n    parser.add_argument(\"--voice_model_config_name\",        type = str, default = \"config.json\",\n        help = \"Name of the config file for the cloned voice model\")\n    parser.add_argument(\"--minimise_suffix\",                type = str, default = \"light\",\n        help = \"Suffix to be used for minimised model and its assets (i.e., new config file)\")\n    parser.add_argument(\"--overwrite_assets\",               default = False, action = \"store_true\",\n        help = \"Signal whether existing model assets should be overwritten or not (default: do not overwrite)\")\n    parser.add_argument(\"--output_format\",                  type = str, choices = [\"txt\", \"json\"], default = \"txt\",\n        help = \"Output format; available choices include 'txt' for human readible text and 'json' for JSON formatting\")\n\n    return parser.parse_args()\n\n\n#\n# utility function to expand the name of a given filename (infront of the extension)\n#\ndef append_suffix_to_filename(fname, fname_suffix):\n  fpath = Path(fname)\n\n  return \"{0}_{2}{1}\" . format(fpath.stem, fpath.suffix, fname_suffix)\n\n\n#\n# save a lightweight (i.e., without optimiser and discriminator) model of the given cloned voice and corresponding config assets\n#\ndef main(args):\n    # set variables\n    output_path = args.voice_model_asset_path\n    model_path = os.path.join(args.voice_model_asset_path, args.voice_model_name)\n    model_config_path = os.path.join(args.voice_model_asset_path, args.voice_model_config_name)\n    model_light_path = os.path.join(output_path, append_suffix_to_filename(args.voice_model_name, args.minimise_suffix))\n    model_light_config_path = os.path.join(output_path, append_suffix_to_filename(args.voice_model_config_name, args.minimise_suffix))\n\n    if not args.overwrite_assets:\n        # ensure target output files do not already exist\n        if (Path(model_light_path).exists()) or (Path(model_light_config_path).exists()):\n            sys.exit(\"Naming conflict: Model asset files ({} and/or {}) exist already!\" . format (model_light_path, model_light_config_path))\n\n    if args.output_format == \"txt\":\n        print(\"Minimising given voice model:\")\n        print(\"\")\n        print(\"  + Cloned voice model file path       : {}\" . format(model_path))\n        print(\"  + Cloned voice model config file     : {}\" . format(model_config_path))\n        print(\"\")\n    elif args.output_format == \"json\":\n        json_data = {\n            \"success\": False,\n            \"in\": {\n                \"voice_model_path\": format(model_path),\n                \"voice_model_config_path\": format(model_config_path)\n            },\n            \"out\": {\n                \"voice_model_light_path\": \"\",\n                \"voice_model_light_config_path\": \"\"\n            }\n        }\n\n    # load model\n    config = load_config(model_config_path)\n\n    # init model\n    model = setup_tts_model(config = config)\n\n    # load checkpoint / model\n    model.load_checkpoint(config, model_path, eval = True)\n    model.disc = None\n    model_state = model.state_dict()\n    state = {\n        \"model\": model_state\n    }\n\n    torch.save(state, model_light_path)\n\n    config.model_args[\"init_discriminator\"] = False\n    config.save_json(model_light_config_path)\n\n    # exit gracefully\n    if args.output_format == \"txt\":\n        print(\"Completed minimising cloned voice model. The resulting (modified) assets can be found at:\")\n        print(\"  --> Minimised voice model path       : {}\" . format(model_light_path))\n        print(\"  --> Minimised voice model config path: {}\" . format(model_light_config_path))\n        print(\"\")\n        print(\"Done; bye.\")\n        print(\"\")\n    elif args.output_format == \"json\":\n        json_data[\"out\"][\"voice_model_light_path\"] = format(model_light_path)\n        json_data[\"out\"][\"voice_model_light_config_path\"]: format(model_light_config_path)\n        json_data[\"success\"] = True\n        print(json.dumps(json_data))\n\n\nif __name__ == \"__main__\":\n    # parse command line arguments\n    args = parse_cmdline_args()\n\n    main(args)\n","exit_code":0,"status":"completed"}}
{"type":"item.started","item":{"id":"item_20","type":"command_execution","command":"/bin/bash -lc \"jq '.commits.nodes[-8:]' .styx_prs/pr_11.json && jq '.reviews, .comments' .styx_prs/pr_11.json | sed -n '1,260p'\"","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_20","type":"command_execution","command":"/bin/bash -lc \"jq '.commits.nodes[-8:]' .styx_prs/pr_11.json && jq '.reviews, .comments' .styx_prs/pr_11.json | sed -n '1,260p'\"","aggregated_output":"[\n  {\n    \"commit\": {\n      \"oid\": \"6a0fdc17bb6c19d20338c1a6cae2bbea8f87dcb4\",\n      \"message\": \"updated voice-ai-changes\",\n      \"author\": {\n        \"name\": \"author_unknown\",\n        \"email\": \"author_unknown\",\n        \"date\": \"2023-01-22T18:43:39Z\"\n      },\n      \"committer\": {\n        \"name\": \"author_unknown\",\n        \"email\": \"author_unknown\",\n        \"date\": \"2023-01-22T18:43:39Z\"\n      }\n    }\n  },\n  {\n    \"commit\": {\n      \"oid\": \"fd70943a1ca541e00852e7384f91c7b09c42d9d3\",\n      \"message\": \"Updated speaker path\",\n      \"author\": {\n        \"name\": \"author_unknown\",\n        \"email\": \"author_unknown\",\n        \"date\": \"2023-01-25T08:52:25Z\"\n      },\n      \"committer\": {\n        \"name\": \"author_unknown\",\n        \"email\": \"author_unknown\",\n        \"date\": \"2023-01-25T08:52:25Z\"\n      }\n    }\n  },\n  {\n    \"commit\": {\n      \"oid\": \"0617f15153fdffd52f009bb0429d6878743649dc\",\n      \"message\": \"Updated speaker path\",\n      \"author\": {\n        \"name\": \"author_unknown\",\n        \"email\": \"author_unknown\",\n        \"date\": \"2023-01-25T10:01:08Z\"\n      },\n      \"committer\": {\n        \"name\": \"author_unknown\",\n        \"email\": \"author_unknown\",\n        \"date\": \"2023-01-25T10:01:08Z\"\n      }\n    }\n  },\n  {\n    \"commit\": {\n      \"oid\": \"0e83ea6cd962df73dccf012582fcd31277e9398e\",\n      \"message\": \"Updated code for synthesis\",\n      \"author\": {\n        \"name\": \"author_unknown\",\n        \"email\": \"author_unknown\",\n        \"date\": \"2023-01-25T11:16:01Z\"\n      },\n      \"committer\": {\n        \"name\": \"author_unknown\",\n        \"email\": \"author_unknown\",\n        \"date\": \"2023-01-25T11:16:01Z\"\n      }\n    }\n  },\n  {\n    \"commit\": {\n      \"oid\": \"f996adf6c1277fd78253badeb77d487c5ad1d328\",\n      \"message\": \"Updated code for synthesis\",\n      \"author\": {\n        \"name\": \"author_unknown\",\n        \"email\": \"author_unknown\",\n        \"date\": \"2023-01-25T11:24:45Z\"\n      },\n      \"committer\": {\n        \"name\": \"author_unknown\",\n        \"email\": \"author_unknown\",\n        \"date\": \"2023-01-25T11:24:45Z\"\n      }\n    }\n  },\n  {\n    \"commit\": {\n      \"oid\": \"2aea05da7bfa3c057f3a31ed16639e461a395f53\",\n      \"message\": \"Updated job code\",\n      \"author\": {\n        \"name\": \"author_unknown\",\n        \"email\": \"author_unknown\",\n        \"date\": \"2023-01-25T11:36:52Z\"\n      },\n      \"committer\": {\n        \"name\": \"author_unknown\",\n        \"email\": \"author_unknown\",\n        \"date\": \"2023-01-25T11:36:52Z\"\n      }\n    }\n  },\n  {\n    \"commit\": {\n      \"oid\": \"6a234309474cbc1e420fd092fefed97ec2c75aae\",\n      \"message\": \"Updated job code\",\n      \"author\": {\n        \"name\": \"author_unknown\",\n        \"email\": \"author_unknown\",\n        \"date\": \"2023-01-25T14:24:36Z\"\n      },\n      \"committer\": {\n        \"name\": \"author_unknown\",\n        \"email\": \"author_unknown\",\n        \"date\": \"2023-01-25T14:24:36Z\"\n      }\n    }\n  },\n  {\n    \"commit\": {\n      \"oid\": \"a616fd33178b70105d5cb40694e74e2c1df124da\",\n      \"message\": \"Added condition for delete check\",\n      \"author\": {\n        \"name\": \"author_unknown\",\n        \"email\": \"author_unknown\",\n        \"date\": \"2023-02-02T05:20:17Z\"\n      },\n      \"committer\": {\n        \"name\": \"author_unknown\",\n        \"email\": \"author_unknown\",\n        \"date\": \"2023-02-02T05:20:17Z\"\n      }\n    }\n  }\n]\n{\n  \"nodes\": [\n    {\n      \"author\": {\n        \"login\": \"author_7\"\n      },\n      \"state\": \"APPROVED\",\n      \"body\": \"\",\n      \"submittedAt\": \"2023-02-02T05:32:09Z\",\n      \"url\": \"https://github.com/potion/potion-voice/pull/11#pullrequestreview-1280363999\",\n      \"comments\": {\n        \"nodes\": []\n      }\n    }\n  ]\n}\n{\n  \"nodes\": []\n}\n","exit_code":0,"status":"completed"}}
{"type":"item.started","item":{"id":"item_21","type":"command_execution","command":"/bin/bash -lc \"curl -L --max-time 20 -s 'https://www.google.com/search?q=%22pro_v2%22+%22voice+cloning%22' | sed -n '1,80p'\"","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_21","type":"command_execution","command":"/bin/bash -lc \"curl -L --max-time 20 -s 'https://www.google.com/search?q=%22pro_v2%22+%22voice+cloning%22' | sed -n '1,80p'\"","aggregated_output":"<!DOCTYPE html><html lang=\"en\"><head><title>Google Search</title><style>body{background-color:#fff}</style><script nonce=\"qsZHrB9u_6U5HtvCRiQKMg\">window.google = window.google || {};window.google.c = window.google.c || {cap:0};</script></head><body><noscript><style>table,div,span,p{display:none}</style><meta content=\"0;url=/httpservice/retry/enablejs?sei=S8qxat-2BbOqhbIPrZP80As\" http-equiv=\"refresh\"><div style=\"display:block\">Please click <a href=\"/httpservice/retry/enablejs?sei=S8qxat-2BbOqhbIPrZP80As\">here</a> if you are not redirected within a few seconds.</div></noscript><script nonce=\"qsZHrB9u_6U5HtvCRiQKMg\">(function(){var sctm=false;(function(){sctm&&google.tick(\"load\",\"pbsst\");}).call(this);})();</script><script nonce=\"qsZHrB9u_6U5HtvCRiQKMg\">//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjogMywic291cmNlcyI6WyIiXSwic291cmNlc0NvbnRlbnQiOlsiICJdLCJuYW1lcyI6WyJjbG9zdXJlRHluYW1pY0J1dHRvbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEifQ==\n(function(){var z=226,v=38,g=58,R=function(f){return N.call(this,22,55,8,f)},L=34,N=function(f,K,Q,B,V,M,w,e,T,X){{T=f;while(T!=K)if(T==26)X=B,T=93;else if(T==46)T=(Q-6^27)>=Q&&Q+4>>2<Q?26:93;else if(T==93)T=(Q>>1&5)==1?32:82;else if(T==32){a:{if(!(w=(e=B,l).trustedTypes,w)||!w.createPolicy){X=e;break a}try{e=w.createPolicy(V,{createHTML:R,createScript:R,createScriptURL:R})}catch(q){if(l.console)l.console[M](q.message)}X=e}T=82}else{if(T==82)return X;T==f&&(T=46)}}},l=this||self,Y=248;(0,eval)(function(f,K){return(K=N(22,55,3,null,\"ks\",\"error\"),Y*=237,K)&&f.eval(K.createScript(\"1\"))===1?function(Q){return K.createScript(Q)}:function(Q){return\"\"+Q}}(l)(Array(Math.random()*7824|0).join(\"\\n\")+['//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjogMywic291cmNlcyI6WyIiXSwic291cmNlc0NvbnRlbnQiOlsiICJdLCJuYW1lcyI6WyJjbG9zdXJlRHluYW1pY0J1dHRvbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEifQ==',\n'(function(){/*',\n'',\n' Copyright Google LLC',\n' SPDX-License-Identifier: Apache-2.0',\n'*/',\n'var g1=function(T,f,Q,e,w){{w=22;while(w!=55)if(w==26)this.wJ=Q,w=93;else if(w==46)w=f>>T&3?93:26;else if(w==93)w=f<<T&7?82:32;else if(w==32)e=Object.prototype.hasOwnProperty.call(Q,vR)&&Q[vR]||(Q[vR]=++BR),w=82;else{if(w==82)return e;w==22&&(w=46)}}},Gd=function(T,f,Q,e,w,K,z,v,B,X){for(B=70;B!=79;)if(B==2)K++,B=88;else if(B==48)K in v&&w.call(void 0,v[K],K,e),B=2;else if(B==70)B=58;else if(B==91)B=(T&60)==T?71:81;else if(B==71)z=e.length,v=typeof e===\"string\"?e.split(Q):e,K=f,B=19;else if(B==13)Q.Z.splice(0,0,f),B=8;else if(B==58)B=(T|2)>>3==2?63:91;else if(B==88)B=K<z?48:81;else{if(B==8)return X;B==19?B=88:B==63?(X=f in Fs?Fs[f]:Fs[f]=Q+f,B=91):B==81&&(B=((T^54)&7)==1?13:8)}},Vq=function(T,f,Q,e,w,K,z,v,B,X,g,L,V,q){for(V=47;V!=84;)if(V==9)V=(Q>>2&5)==1?50:66;else if(V==47)V=11;else if(V==50){a:{if(K.U=((B=(L=(v=(T||K.Or++,g=(X=w?255:T?5:2,K.ix>0&&K.Y&&K.TB)&&K.Y4<=1&&!K.i&&!K.v&&(!T||K.P9-e>1)&&document.hidden==0,K.Or==4))||g?K.G():K.G6,L)-K.G6,K.F+=B>>14>0,K.V)&&(K.V^=(K.F+1>>2)*(B<<2)),K.F+1>>2!=0||K.U),v||g)K.Or=0,K.G6=L;if(!g){q=false;break a}if(L-K.Cc<K.ix-(K.ix>K.x4&&(K.x4=K.ix),X)){q=false;break a}q=(S(19,(z=O(T?325:19,(K.P9=e,K)),K),K.o),K.Z.push([L6,z,T?e+1:e,K.S,K.K]),K.v=ok,f)}V=66}else if(V==88)e=typeof T,q=e==f&&T!=null||e==\"function\",V=9;else if(V==11)V=(Q^16)&5?9:88;else if(V==66)return q},w1=200,zd=255,C6=function(T,f,Q,e,w,K,z,v,B,X,g,L,V,q){for(q=55;q!=39;)if(q==59)q=T-8>=8&&T>>1<23?43:66;else if(q==65)L++,q=84;else if(q==1)L=Q,q=21;else if(q==21)q=84;else if(q==44)q=0;else if(q==68)q=69;else if(q==63)z=(K=Object.getPrototypeOf(z.prototype))&&K.constructor,q=49;else if(q==71)v.C.remove(String(e),z,B,w),q=11;else if(q==30)q=(w=Q)?35:27;else if(q==73)q=g?25:11;else if(q==80)B=Vq(K,f,26)?!!K.capture:!!K,z=tI(9,20,z),q=57;else if(q==25)(X=g.Rm(z,B,e,w))&&Rk(44,60,null,\"on\",X),q=11;else if(q==11)q=(T-4^12)>=T&&(T-3^7)<T?31:75;else{if(q==75)return V;if(q==14){a:{for(z=f;z<K.length;++z)if(v=K[z],!v.z6&&v.listener==e&&v.capture==!!Q&&v.handler==w){V=z;break a}V=-1}q=53}else q==84?q=L<e.length?45:11:q==9?q=Array.isArray(e)?1:80:q==69?(w=v?typeof v.VC===\"function\"?v.VC():new v:null,q=35):q==87?q=(v=r1[B])?68:63:q==64?(B=g1(2,8,z),q=87):q==66?q=T>>2&13?53:14:q==49?q=0:q==55?q=59:q==57?q=v&&v[kA]?71:89:q==52?(g=En(10,v),q=73):q==45?(C6(14,\"object\",0,e[L],w,K,z,v),q=65):q==27?(z=this.constructor,q=44):q==31?(sn.call(this,e),q=30):q==35?(this.O=w,q=75):q==53?q=(T^26)&10?11:9:q==0?q=z?64:69:q==43?(this[this+\"\"]=this,V=Promise.resolve(),q=66):q==89&&(q=v?52:11)}},h=function(T,f,Q,e,w,K,z,v,B,X,g,L,V,q,N,R){{N=7;while(N!=56)if(N==65)q=function(){},q.prototype=e.prototype,Q.X=e.prototype,Q.prototype=new q,Q.prototype.constructor=Q,Q.Go=function(U,r,G){for(var n=36;n!=18;)if(n==28)n=43;else if(n==63)Xs++,n=43;else{if(n==23)return e.prototype[r].apply(U,iP);if(n==36)var iP=Array((n=28,arguments.length-T)),Xs=T;else n==24?(iP[Xs-T]=arguments[Xs],n=63):n==43&&(n=Xs<arguments.length?24:23)}},N=94;else if(N==28)N=(f|9)>>4?94:65;else if(N==7)N=18;else if(N==10)L=Vq(v,T,8)?!!v.capture:!!v,(g=En(34,z))||(z[hI]=g=new mI(z)),X=g.add(e,B,w,L,K),N=5;else{if(N==80)return R;if(N==66)z.addListener(V),N=84;else if(N==91)T.VC=function(){return T.sr?T.sr:T.sr=new T},T.sr=void 0,N=80;else{if(N==57)throw Error(\"Invalid event type\");if(N==48)N=z.addEventListener?71:98;else if(N==54)V=HR(29,32),X.proxy=V,V.src=z,V.listener=X,N=48;else if(N==96)N=z.addListener&&z.removeListener?66:58;else if(N==83)Q.wW&&Q.wW.forEach(T,void 0),N=28;else if(N==90)N=(f-2^3)<f&&(f-5^24)>=f?91:80;else if(N==61)N=e?10:57;else if(N==81)z.attachEvent(Gd(18,e.toString(),\"on\"),V),N=84;else if(N==18)N=(f+5^11)>=f&&(f+5^6)<f?83:28;else if(N==84)n6++,N=90;else if(N==94)N=f+2>>2<f&&(f+7&33)>=f?61:90;else if(N==71)xA||(v=L),v===void 0&&(v=Q),z.addEventListener(e.toString(),V,v),N=84;else if(N==98)N=z.attachEvent?81:96;else if(N==5)N=X.proxy?90:54;else if(N==58)throw Error(\"addEventListener and attachEvent are unavailable.\");}}}},f6=248,Ik=function(T,f,Q,e,w,K,z,v,B,X,g){{X=T;while(X!=53)if(X==91)e.raw=Q,Object.freeze&&(Object.freeze(e),Object.freeze(Q)),g=e,X=f;else if(X==23)X=w<<1&5?14:89;else if(X==T)X=23;else if(X==89)B=Q,B^=B<<13,B=(z=B>>17,~B-~(B|z)+(B&~z)),B=(v=B<<5,~(B&v)-1-~B-(B|~v)),(B=-2*~(B&K)+~K+2*(~B&K)+(B|~K))||(B=1),g=~(e&B)-~e+(~e&B),X=14;else{if(X==f)return g;X==14&&(X=(w+2&57)<w&&(w+3&44)>=w?91:f)}}},j8=function(T,f,Q,e,w,K,z,v,B,X,g){{g=51;while(g!=53)if(g==41)this[this+\"\"]=this,g=14;else if(g==21)g=(T|72)==T?76:6;else if(g==47)g=(T-1&15)==2?79:21;else if(g==79)X=Un(34,null,\"_\",f,false),g=21;else if(g==6)g=(T|4)>>3==3?62:0;else if(g==62){a:if(w.Z.length){(w.TB=(w.Y&&\":TQR:TQR:\"(),Q),w).Y=true;try{v=w.G(),w.Cc=v,w.x4=f,w.G6=v,w.Or=f,z=On(25,167,null,21,\":\",w,Q),K=e?0:10,B=w.G()-w.Cc,w.ed+=B,w.JT&&w.JT(B-w.N,w.S,w.K,w.x4),w.S=false,w.K=false,w.N=f,B<K||w.gJ--<=f||(B=Math.floor(B),w.bx.push(B<=254?B:254))}finally{w.Y=false}X=z;break a}g=0}else if(g==76)X=!!(e=Q.OY,-2*~(e&f)+~e+(e^f)+(e|~f))&&!!(Q.mg&f),g=6;else if(g==51)g=47;else if(g==0)g=(T^62)<7&&(T-4&15)>=5?41:14;else if(g==14)return X}},K6=92,Nx=function(T,f,Q,e,w,K,z,v,B,X,g,L){{g=24;while(g!=56)if(g==82)w=e,Mx===void 0&&(Mx=Q),z=(K=Mx)?K.createScriptURL(w):w,L=new qx(z),g=64;else if(g==6)g=(f-4^25)<f&&(f+8&65)>=f?26:76;else if(g==28)g=f-7<<1<f&&f-1<<1>=f?46:6;else if(g==84){if(e instanceof qx)z=e.wJ;else throw Error(\"\");Q.src=z.toString(),g=6}else if(g==87)g=X<B.length?44:76;else if(g==80)K++,g=70;else if(g==48)z=new lP(e,this),v=Q.listener,K=Q.handler||Q.src,Q.lx&&Rk(44,T,null,\"on\",Q),w=v.call(K,z),g=7;else if(g==72)z=typeof K,v=z!=Q?z:K?Array.isArray(K)?\"array\":z:\"null\",L=v==e||v==Q&&typeof K.length==w,g=0;else if(g==46)Q.removeAttribute(\"srcdoc\"),g=55;else if(g==98)g=Q.z6?92:48;else if(g==64)g=f-3<21&&((f|8)&19)>=4?98:96;else if(g==26)g=Array.isArray(B)?95:33;else if(g==44)Nx(62,56,\"object\",true,w,K,z,v,B[X]),g=13;else if(g==76)g=(f+1&8)<4&&f-4>>4>=2?82:64;else if(g==24)g=28;else if(g==7)L=w,g=96;else if(g==92)w=true,g=7;else{if(g==0)return L;if(g==95)X=0,g=8;else if(g==8)g=87;else if(g==14)g=70;else if(g==85)w=\"allow-same-origin allow-scripts allow-forms allow-popups allow-popups-to-escape-sandbox allow-storage-access-by-user-activation\".split(\" \"),Q.setAttribute(\"sandbox\",\"\"),K=0,g=14;else if(g==70)g=K<w.length?78:84;else if(g==13)X++,g=87;else if(g==33)z=tI(9,16,z),K&&K[kA]?K.C.add(String(B),z,e,Vq(w,Q,18)?!!w.capture:!!w,v):h(\"object\",25,false,B,e,v,K,w,z),g=76;else if(g==55)g=e instanceof qx?85:11;else{if(g==11)throw new uP(typeof e,1);g==78?(Q.sandbox.supports&&!Q.sandbox.supports(w[K])||Q.sandbox.add(w[K]),g=80):g==96&&(g=(f^12)>>4==4?72:0)}}}},e8=132,x=function(T,f,Q,e,w,K,z,v,B,X,g,L,V){{V=87;while(V!=28)if(V==63)V=e.A[w].length==0?31:86;else if(V==57)V=v<f.length?78:70;else{if(V==43)return L;V==86?V=(T-8|35)<T&&(T+9&77)>=T?17:91:V==17?(v=0,K=[],X=0,V=35):V==32?V=(T^66)>>3==2?93:43:V==31?(delete e.A[w],e.Pb--,V=86):V==97?V=w in e.A&&HR(29,6,f,e.A[w],Q)?18:86:V==29?(m(Q,f,e),e[D5]=19394,V=33):V==78?(X+=Q,w=(z=w<<Q,e=f[v],(z|0)-(z&~e)+(z^e)),V=82):V==18?(En(13,null,Q),V=63):V==33?V=T>>2<7&&(T+8&7)>=4?5:86:V==70?(L=K,V=91):V==46?(v++,V=57):V==37?V=62:V==91?V=(T&49)==T?3:32:V==93?(g=function(){},z=void 0,e=p6(f,function(q,N){for(N=0;N!=22;)N==0?N=g?78:22:N==78&&(Q&&ok(Q),z=q,g(),g=void 0,N=22)},!!Q),w=e[1],K=e[0],L={top:function(q,N,R,U,r,G,n){for(G=64;G!=48;)if(G==64)n=function(){z(function(iP){ok(function(){q(iP)})},R)},G=84;else{if(G==38)return U=K(R),q&&q(U),U;G==91?(r=g,g=function(){(r(),ok)(n)},G=48):G==1?(n(),G=48):G==84?G=N?57:38:G==57&&(G=z?1:91)}},pe:function(q){w&&w(q)}},V=43):V==87?V=59:V==3?(L=Math.floor(this.ed+(this.G()-this.Cc)),V=32):V==35?V=57:V==26?(X-=8,K.push((B=w>>X,-~B-(~B^255)-(~B&255)+2*(~B|255))),V=37):V==82?V=62:V==59?V=(T>>2&7)==2?29:33:V==62?V=X>7?26:46:V==5&&(w=Q.type,V=97)}}},fs=function(T,f,Q,e,w,K,z,v){for(v=88;v!=33;)if(v==45)v=(f-4|3)<f&&(f+1&29)>=f?83:65;else{if(v==44)return z;v==88?v=45:v==83?v=65:v==65?v=(f^3)&6?44:T:v==T&&(z=!!(K=w.Xu,(K|Q)-(K^e)+(~K&e)),v=44)}},On=function(T,f,Q,e,w,K,z,v,B,X,g,L,V,q,N,R){for(q=(R=84,20);;)try{if(R==91)break;else if(R==45)R=(e|48)==e?89:55;else if(R==7)X=K[B],R=49;else if(R==25){a:{if(X&&typeof X.length==\"number\"){if(Vq(X,\"object\",24)){g=typeof X.item==\"function\"||typeof X.item==w;break a}if(typeof X===\"function\"){g=typeof X.item==\"function\";break a}}g=false}R=(Gd(8,T,f,g?d1(56,24,T,X):X,N),98)}else if(R==33)R=Array.isArray(K)?44:75;else{if(R==63)return L;R==89?(N=function(U){U&&z.appendChild(typeof U===\"string\"?v.createTextNode(U):U)},B=1,R=70):R==72?R=60:R==12?R=v&&v.once?99:33:R==40?(q=20,R=56):R==84?R=53:R==44?(B=T,R=16):R==56?R=z&&K.v?46:72:R==60?R=K.Z.length?47:37:R==37?(L=X,R=45):R==1?(B++,R=9):R==99?(Nx(62,57,\"object\",true,v,z,Q,w,K),R=23):R==53?R=e+3>>3==3?42:45:R==42?R=60:R==90?(q=41,X=JI(K,T,v,f),R=40):R==51?(q=20,WR(55,w,28,K,V),R=40):R==28?(TF.call(this,T,f||QV.VC(),Q),R=63):R==66?(N(X),R=98):R==9?R=B<K.length?26:23:R==46?(B=K.v,B(function(){j8(29,0,true,true,K)}),R=37):R==16?R=9:R==34?R=B<K.length?7:55:R==26?(On(0,false,Q,3,w,K[B],z,v),R=1):R==70?R=34:R==23?R=(e+5&14)==2?28:63:R==55?R=e+3>>4?23:12:R==75?(Q=tI(9,17,Q),z&&z[kA]?z.C.add(String(K),Q,f,Vq(v,\"object\",16)?!!v.capture:!!v,w):h(\"object\",26,false,K,f,w,z,v,Q),R=23):R==49?R=!Nx(62,71,\"object\",Q,\"number\",X)||Vq(X,\"object\",10)&&X.nodeType>T?66:25:R==47?(K.v=Q,v=K.Z.pop(),R=90):R==98&&(B++,R=34)}}catch(U){if(q==20)throw U;q==41&&(V=U,R=51)}},Un=function(T,f,Q,e,w,K,z,v,B,X,g,L){for(g=50;g!=0;)if(g==84)e.Kc(function(V){w=V},f,Q),L=w,g=48;else if(g==48)g=T<<2&23?11:72;else if(g==50)g=64;else{if(g==94)return L;if(g==43)K++,g=74;else if(g==97)g=T>>2>=20&&(T>>2&14)<10?4:6;else if(g==99){a:{if(this.n===0){L=[0,0];break a}this.L.sort(function(V,q){return V-q}),L=[this.n,this.L[this.L.length>>1]]}g=94}else if(g==74)g=K<f.length?59:58;else if(g==64)g=(T&60)==T?84:48;else if(g==78)X=K=0,g=63;else if(g==59)X+=f.charCodeAt(K),X+=X<<10,X=(w=X>>6,2*~(X&w)-~X-~w),g=43;else if(g==11)g=(T-7^9)>=T&&(T+1&44)<T?78:97;else if(g==58)X+=X<<3,X^=X>>11,z=X+(X<<15)>>>0,B=new Number((v=(1<<Q)-1,(v|0)+(~z^v)-(~z|v))),B[0]=(z>>>Q)%e,L=B,g=97;else if(g==72){a:if(z=window.btoa){for(B=(v=0,\"\");v<e.length;v+=8192)B+=String.fromCharCode.apply(f,e.slice(v,v+8192));(K=z(B),w)&&(K=K.replace(/\\\\+/g,\"-\").replace(/\\\\//g,Q).replace(/=/g,\"\")),L=K;break a}g=11}else g==4?(L=f,g=6):g==6?g=(T>>2&15)==1?99:94:g==63&&(g=74)}},ej=function(T,f,Q,e,w,K,z,v,B){for(B=86;B!=29;)if(B==T)B=(f^70)<29&&(f-4&31)>=10?56:25;else if(B==86)B=96;else if(B==77){for(z in K=(((w={},Array).prototype.forEach.call(Ks(\"string\",22,Q),function(X){w[X]=true}),Array).prototype.forEach.call(e,function(X){w[X]=true}),\"\"),w)K+=K.length>0?\" \"+z:z;PR(0,31,K,\"string\",Q),B=36}else if(B==24)v=typeof w.className==Q?w.className:w.getAttribute&&w.getAttribute(\"class\")||e,B=80;else if(B==36)B=f-4>>3==2?3:T;else if(B==3)K.classList?K.classList.remove(z):(K.classList?K.classList.contains(z):PR(0,14,z,e,Ks(Q,25,K)))&&PR(0,34,Array.prototype.filter.call(Ks(Q,26,K),function(X){return X!=z}).join(w),Q,K),B=T;else if(B==38)this.listener=z,this.proxy=null,this.src=Q,this.type=w,this.capture=!!e,this.handler=K,this.key=++wK,this.z6=this.lx=false,B=39;else if(B==25)B=(f&121)==f?24:80;else if(B==96)B=f>>1<8&&(f<<2&13)>=3?82:36;else if(B==56)B=25;else if(B==82)B=Q.classList?66:77;else{if(B==39)return v;B==66?(Array.prototype.forEach.call(e,function(X,g,L){for(L=99;L!=94;)L==4?(g=ej(57,8,\"string\",\"\",Q),PR(0,33,g+(g.length>0?\" \"+X:X),\"string\",Q),L=94):L==99?L=Q.classList?95:90:L==95?(Q.classList.add(X),L=94):L==90&&(L=(Q.classList?Q.classList.contains(X):PR(0,12,X,0,Ks(\"string\",27,Q)))?94:4)}),B=36):B==80&&(B=f+9>=22&&(f^35)<29?38:39)}},Rk=function(T,f,Q,e,w,K,z,v,B,X,g){for(X=53;X!=T;){if(X==30)return g;X==93?(K=w.src,X=31):X==31?X=K&&K[kA]?60:38:X==15?X=z?9:32:X==38?(B=w.proxy,v=w.type,K.removeEventListener?K.removeEventListener(v,B,w.capture):K.detachEvent?K.detachEvent(Gd(17,v,e),B):K.addListener&&K.removeListener&&K.removeListener(B),n6--,z=En(18,K),X=15):X==82?X=(f+4&69)>=f&&(f+2&46)<f?39:3:X==67?(z.src=Q,K[hI]=Q,X=3):X==53?X=82:X==94?(g=Math.floor(this.G()),X=79):X==85?X=z.Pb==0?67:3:X==79?X=(f^17)>>4==4?50:63:X==75?X=(f^46)>>3==3?11:30:X==11?(g=yq[Q](yq.prototype,{replace:e,splice:e,prototype:e,propertyIsEnumerable:e,console:e,parent:e,document:e,length:e,floor:e,stack:e,call:e,pop:e}),X=30):X==32?(En(28,Q,w),X=3):X==9?(x(13,1,w,z),X=85):X==50?(this.n++,e=Q-this.R,this.R+=e/this.n,this.Mc+=e*(Q-this.R),X=63):X==39?X=typeof w!==\"number\"&&w&&!w.z6?93:3:X==3?X=(f&108)==f?94:79:X==60?(x(12,1,w,K.C),X=3):X==37?(this.Bb=this.Bb,this.QC=this.QC,X=75):X==63&&(X=(f-3&7)==2?37:75)}},PR=function(T,f,Q,e,w,K,z){for(z=4;z!=72;)if(z==42)z=(f-4|40)>=f&&(f+1&30)<f?20:T;else{if(z==T)return K;z==20?(typeof w.className==e?w.className=Q:w.setAttribute&&w.setAttribute(\"class\",Q),z=T):z==65?z=(f+4^26)<f&&(f+9&58)>=f?79:42:z==79?(K=En(36,1,e,w,Q)>=e,z=42):z==4&&(z=65)}},HR=function(T,f,Q,e,w,K,z,v,B,X,g,L,V){{L=31;while(L!=9)if(L==64)L=(f+3^22)<f&&(f-2|16)>=f?86:22;else{if(L==22)return V;L==51?(g=function(q){return Q.call(g.src,g.listener,q)},Q=Xh,V=g,L=64):L==18?(X={},i9=(X.atomic=false,X.autocomplete=e,X.dropeffect=e,X.haspopup=false,X.live=\"off\",X.multiline=false,X.multiselectable=false,X.orientation=\"vertical\",X.readonly=false,X.relevant=\"additions text\",X.required=false,X.sort=e,X.busy=false,X.disabled=false,X.hidden=false,X.invalid=\"false\",X),L=91):L==86?(Array.isArray(K)&&(K=K.join(\" \")),B=Q+z,L=98):L==37?L=(f^7)>>3?75:83:L==82?(w.setAttribute(B,K),L=22):L==98?L=K===\"\"||K==void 0?T:82:L==31?L=37:L==83?(z=En(6,Q,0,e,w),(K=z>=0)&&Array.prototype.splice.call(e,z,Q),V=K,L=75):L==T?L=i9?91:18:L==91?(v=i9,z in v?w.setAttribute(B,v[z]):w.removeAttribute(B),L=22):L==75?L=(f^26)>>4?88:8:L==88?L=f<<1>=22&&((f|4)&12)<10?51:64:L==8&&(w=Q,V=function(){return w<e.length?{done:false,value:e[w++]}:{done:true}},L=88)}}},c=function(T,f,Q,e,w,K,z,v,B,X,g){if(((((T&91)==T&&(e=yq[f.B](f.yu),e[f.B]=function(){return Q},e.concat=function(L){Q=L},g=e),(T|56)==T)&&(g=(K=e[Q]<<f|e[2*(Q|1)-(Q&-2)-(~Q&1)]<<16,w=e[-2-2*~(Q|2)-(Q^2)]<<8,-~(K&w)+2*(K^w)+(~K^w))|e[(Q|3)-~(Q|3)+(~Q^3)]),T)&45)==T){for(w=(v=A(e,15),0);Q>0;Q--)w=(K=w<<f,z=zF(e),(z|0)- -1+(K^z)+(K|~z));m(v,e,w)}switch(!((T-4|93)>=T&&(T-5|15)<T)){case true:true+true;break;case -0!==Number():switch(!(w=vg(\"number\",e,\"call\")===\"array\"?e:[e],this.P)){case ![]==false:try{K=!this.Z.length&&!this.Y,Gd(47,[Bg,[],w,f,Q],this),Q&&!K||j8(27,0,Q,true,this)}catch(L){WR(55,\":\",44,this,L),f(this.P)}break;case ![undefined]!=0:f(this.P);break}break}return(T>>2&24)<2&&(T<<1&27)>=13&&(z=VV,B=K&7,Q=[56,-10,43,-30,81,-27,Q,47,54,-72],v=yq[w.B](w.CC),v[w.B]=function(L){B=(B+=6+7*(X=L,K),-(B|0)-2*~(B&7)+-2+(B&-8))},v.concat=function(L,V,q,N){return V=(L=+B-(N=e%f+1,168*e*e*X)-N*X+Q[q=B+35,-(q|0)-2*~(q|7)+(q&-8)+2*(~q^7)]*e*N+4*e*e*N- -420*e*X+42*X*X+(z()|0)*N-2394*X,X=void 0,Q[L]),Q[(B+69&7)+(-~(K|2)-(~K^2)-2*(~K&2)+2*(~K|2))]=V,Q[B+(K&2)]=-10,V},g=v),g},Cs=function(T,f,Q,e,w,K,z,v,B,X,g,L,V){g=T.replace(/\\\\r\\\\n/g,\"\\\\n\");while(13)if(Q=0,true)break;v=[];{V=0;while(V<g.length)L=g.charCodeAt(V),L<128?v[Q++]=L:(L<2048?v[Q++]=L>>6|f:((L&64512)==55296&&V+1<g.length&&(B=g.charCodeAt(V+1),64511-(B^64512)-(~B|64512))==56320?(L=65536+(-~(L|1023)-(~L&1023)+(~L|1023)<<10)+(g.charCodeAt(++V)&1023),v[Q++]=(e=L>>18,241+2*(e&-241)+(~e|240)),v[Q++]=(X=(K=L>>12,-2*~(K&63)-1+-64+(~K&63)),128+2*(X&-129)-(X^128)+(~X&128))):v[Q++]=(z=L>>12,-~z+2*(~z&224)+(z|-225)),v[Q++]=L>>6&63|128),v[Q++]=(w=L&63,129+2*(w&-129)+(~w|128))),V++}return v},A=function(T,f,Q,e,w,K,z,v,B,X,g){if(!(f+3&6))a:{for((false!=null).true;T.i;!![]){g=jj(T.I,T);break a;if(true)break}if(e=$5(T,8,true),true)e&128&&(e^=128,Q=$5(T,2,true),e=(e<<2)+(Q|0));g=e}if((f+5&7)==4)a:{if(T.i){g=jj(T.I,T);break a}while(null!=(![]==true))if(e=$5(T,8,true),13)break;e&128&&(e^=128,Q=$5(T,2,true),e=(e<<2)+(Q|0)),g=e}if((f|72)==f)a:{switch(!T.i){case true:0;break;case false:g=jj(T.I,T);break a;break}g=(e=$5(T,8,true),e&128&&(e^=128,Q=$5(T,2,true),e=(e<<2)+(Q|0)),e)}return(((f|80)==f&&(e=zF(Q),e&T&&(e=e&127|zF(Q)<<7),g=e),f)^54)<21&&(f>>2&15)>=9&&(g=X=function(){for(var L=97;L!=83;)if(L==98){var V=j8(26,0,(Gd(47,N,K),T),T,K);L=71}else if(L==80){var q=!K.Z.length&&!K.Y;Gd(7,N,K),q&&j8(24,0,T,T,K),L=71}else if(L==46)v&&B&&v.removeEventListener(B,X,Sj),L=83;else{if(L==71)return V;if(L==5)var N=[Fh,z,e,(L=16,void 0),v,B,arguments];else L==26?(V=JI(K,25,N,167),L=71):L==97?L=K.U==K?42:83:L==16?L=w==2?98:69:L==42?L=K.J?5:46:L==69&&(L=w==Q?80:26)}}),g},d1=function(T,f,Q,e,w,K,z,v,B,X,g){for(X=60;X!=3;)if(X==84){a:{if((z=e.length,z)>Q){for(w=(K=Array(z),Q);w<z;w++)K[w]=e[w];g=K;break a}g=[]}X=10}else if(X==49){a:{for(z in K)if(w.call(void 0,K[z],z,K)){g=Q;break a}g=e}X=5}else if(X==89)X=f-6<<2<f&&(f+2^20)>=f?70:34;else if(X==34)X=(f|1)<18&&(f>>2&15)>=3?49:5;else{if(X==10)return g;if(X==5)X=f>>1<17&&(f>>2&7)>=6?84:10;else if(X==60)X=38;else if(X==T){for(v in(z=e,w).A){for(B=(K=w.A[v],e);B<K.length;B++)++z,En(5,Q,K[B]);delete (w.Pb--,w).A[v]}X=89}else X==70?(g=this.n===0?0:Math.sqrt(this.Mc/this.n),X=34):X==38&&(X=(f|40)==f?T:89)}},p6=function(T,f,Q,e,w,K,z,v,B,X){return Ks.call(this,T,8,f,Q,e,w,K,z,v,B,X)},qx=function(T){return g1.call(this,2,3,T)},ML=function(T,f,Q,e,w,K,z,v,B,X){{X=45;while(X!=79){if(X==89)return B;if(X==4)X=Q-8>>3?82:47;else if(X==47){a:{switch(v){case 1:B=z?\"disable\":\"enable\";break a;case f:B=z?\"highlight\":\"unhighlight\";break a;case w:B=z?\"activate\":\"deactivate\";break a;case 8:B=z?\"select\":\"unselect\";break a;case e:B=z?\"check\":\"uncheck\";break a;case K:B=z?\"focus\":\"blur\";break a;case 64:B=z?\"open\":\"close\";break a}throw Error(\"Invalid component state\");}X=82}else X==16?(B=Un(18,null,\"_\",f,true),X=89):X==82?X=(Q&124)==Q?16:89:X==45?X=56:X==56?X=((Q^T)&3)>=0&&(Q^47)>>5<1?52:4:X==52&&(this.src=f,this.Pb=0,this.A={},X=4)}}},Ks=function(T,f,Q,e,w,K,z,v,B,X,g,L,V){{L=89;while(L!=2)if(L==80)L=(f-9&5)>=3&&(f^4)<12?65:90;else if(L==89)L=80;else if(L==65)this.U=T,L=90;else if(L==90)L=f<<2&15?64:92;else if(L==64)L=f-5>=17&&(f|9)<33?83:1;else{if(L==1)return V;L==92?(V=(g=O9[T.substring(0,3)+\"_\"])?g(T.substring(3),Q,e,w,K,z,v,B,X):U9(false,5,T,Q),L=64):L==83&&(V=Q.classList?Q.classList:ej(57,16,T,\"\",Q).match(/\\\\S+/g)||[],L=1)}}},E9=function(T,f,Q){{Q=45;while(Q!=31){if(Q==38)return f;Q==90?Q=40:Q==72?(f.push(Math.random()*255|0),Q=24):Q==40?Q=T--?72:38:Q==45?(f=[],Q=90):Q==24&&(Q=40)}}},QV=function(){return fs.call(this,2,7)},Y5=function(T,f,Q,e,w,K,z){for(K=32;K!=34;)if(K==32)K=54;else if(K==17)K=(f>>2&12)<5&&(f>>2&13)>=4?52:29;else if(K==40)K=(f|64)==f?28:53;else if(K==52)z=!!(w.mg&e)&&fs(2,10,0,e,w)!=Q&&(!(w.Rp&e)||w.dispatchEvent(ML(20,2,9,16,4,T,Q,e)))&&!w.QC,K=29;else if(K==28){a:{if(Q=(e=D.trustedTypes,null),!e||!e.createPolicy){z=Q;break a}try{Q=e.createPolicy(\"ks\",{createHTML:qL,createScript:qL,createScriptURL:qL})}catch(v){if(D.console)D.console[T](v.message)}z=Q}K=53}else if(K==54)K=f+6>>3==1?79:17;else if(K==5)z=Ik(0,46,T,T,3),K=40;else{if(K==53)return z;K==29?K=(f+7&42)<f&&(f+7&52)>=f?5:40:K==79&&(T.classList?Array.prototype.forEach.call(Q,function(v){ej(57,20,\"string\",0,\" \",T,v)}):PR(0,32,Array.prototype.filter.call(Ks(\"string\",23,T),function(v){return!PR(0,13,v,0,Q)}).join(\" \"),\"string\",T),K=17)}},Ad=function(T,f,Q,e){x5(T,ag(f,(e=(Q=(zd*=237,A)(T,7),A(T,74)),O(Q,T))),e)},En=function(T,f,Q,e,w,K,z,v){{z=39;while(z!=20)if(z==38)Q.z6=true,Q.listener=f,Q.proxy=f,Q.src=f,Q.handler=f,z=2;else if(z==39)z=78;else if(z==60)z=T-4&13?66:94;else if(z==90)Rg.call(this),f||NL||(NL=new td),this.wW=this.nc=this.Er=null,this.sY=this.Lc=false,this.GB=null,this.Ur=void 0,this.h=null,z=75;else{if(z==66)return v;if(z==78)z=(T&29)==T?38:2;else if(z==75)z=(T-4^9)>=T&&(T+4^30)<T?14:43;else if(z==86)Q=f[hI],v=Q instanceof mI?Q:null,z=60;else if(z==94){a:{if(typeof e===\"string\"){v=typeof w!==\"string\"||w.length!=f?-1:e.indexOf(w,Q);break a}for(K=Q;K<e.length;K++)if(K in e&&e[K]===w){v=K;break a}v=-1}z=66}else z==14?(this.T6=D.document||document,z=43):z==2?z=(T&89)==T?90:75:z==43&&(z=(T<<1&14)==4?86:60)}}},JI=function(T,f,Q,e,w,K,z,v,B,X,g,L,V){g=Q[0];switch(!(g==Bg)){case ![\"\"]==Number():switch(!(g==s9)){case !false==!\"\":switch(!(g==hd)){case NaN!==Number(undefined):if(g==L6)Q[3]&&(T.S=true),Q[4]&&(T.K=true),T.H(Q);else switch(!(g==mU)){case true:if(g==Hg){try{{L=0;while(L<T.dW.length){try{K=T.dW[L],K[0][K[1]](K[2])}catch(q){}L++}}}catch(q){}if(0==(V=(T.dW=[],T).G(),![\"\"]))(0,Q[1])(function(q,N){T.Kc(q,true,N)},function(q){q=!T.Z.length&&!T.Y;while(!false==!\"\")if((Gd(31,[ns],T),![])==0)break;q&&j8(28,0,true,false,T)},function(q){return T.fc(q)},function(q,N,R){return T.tT(q,N,R)});T.N+=T.G()-V}else{if(g==Fh)return z=Q[2],S(e,T,Q[6]),S(226,T,z),T.H(Q);g==ns?(T.H(Q),T.bx=[],T.J=null,T.AE=[]):g==D5&&D.document.readyState===\"loading\"&&(T.v=function(q,N){function R(U){for(U=58;U!=87;)U==58?U=N?87:27:U==27&&(N=true,D.document.removeEventListener(\"DOMContentLoaded\",R,Sj),D.removeEventListener(\"load\",R,Sj),q(),U=87)}(D.document.addEventListener(\"DOMContentLoaded\",(N=false,R),Sj),D).addEventListener(\"load\",R,Sj)})}break;case ![]!=0:T.S=true,T.H(Q);break}break;case false:B=Q[1][3];try{w=T.P||T.H(Q)}catch(q){WR(55,\":\",24,T,q),w=T.P}(X=T.G(),B(w),T).N+=T.G()-X;break}break;case NaN===NaN:T.gJ=f,T.K=true,T.YR=T.om()-Q[2],T.H(Q);break}break;case Number()!=false:if(v=T.H(Q))v.Vu=D.setTimeout(function(q){((Gd(39,(q=(v.W9=true,!T.Z.length&&!T.Y),v.xR),T),Gd)(7,v.EY,T),q)&&j8(25,0,true,true,T)},v.timeout),T.Hb.push(v);break}},O=function(T,f,Q){if((Q=f.J[T],Q)===void 0)throw[ps,30,T];if(Q.value)return Q.create();return Q.create(T*4*T+-10*T+57),Q.prototype},D7=function(T,f,Q,e,w,K,z,v,B,X,g,L,V,q){(f.push((v=(z=T[0]<<24,K=T[1]<<16,~z-2*~(z|K)+(z|~K))|T[2]<<8,e=T[3],(e|0)- -1+2*(v&~e)+(~v|e))),f.push((B=(w=T[4]<<24|T[5]<<16,g=T[6]<<8,~(w&g)-2*~(w|g)-(w&~g)+(w|~g)),L=T[7],-(B|0)+(L|0)+(B&L)+2*(B&~L))),f).push((Q=(q=T[8]<<24,V=T[9]<<16,-~(q|V)+(~q&V)+(q|~V)),X=T[10]<<8,2*(Q|0)-~(Q&X)+2*~Q-(~Q^X))|T[11]),w1=231>>zd},cg=function(T,f,Q,e,w,K,z,v){try{e=T[(6+2*(f&-3)+(f^2)+2*(~f^2))%3],T[f]=(v=(K=T[f],w=T[(3*(f&1)+2*~(f&1)-~f-(f|-2))%3],~(K&w)-~(K|w)-2*(~K&w))-(e|0),z=f==1?e<<Q:e>>>Q,-2*(~v^z)+(v|~z)+(~v|z))}catch(B){throw B;}},Ig=function(T,f){return U9.call(this,false,6,f,T)},tI=function(T,f,Q,e,w,K){{w=64;while(w!=69)if(w==3)this.L.push(Q),w=18;else if(w==20)K=Q&&Q.parentNode?Q.parentNode.removeChild(Q):null,w=81;else if(w==6)w=(f+5^28)>=f&&f+8>>1<f?20:81;else{if(w==18)return K;if(w==30)w=this.L.length<50?3:7;else if(w==81)w=(f^35)>=12&&(f<<1&4)<4?47:59;else if(w==7)e=Math.floor(Math.random()*this.n),e<50&&(this.L[e]=Q),w=18;else if(w==64)w=6;else if(w==13)this.n++,w=30;else if(w==47){a:{if(typeof Q===\"function\"){K=Q;break a}K=(Q[l9]||(Q[l9]=function(z){return Q.handleEvent(z)}),Q[l9])}w=59}else w==59&&(w=(f-T^16)<f&&(f+T^25)>=f?13:18)}}},U9=function(T,f,Q,e,w,K){{K=60;while(K!=65)if(K==51)this.type=e,this.currentTarget=this.target=Q,this.defaultPrevented=this.Z4=T,K=30;else if(K==60)K=78;else if(K==84)e(function(z){z(Q)}),w=[function(){return Q},function(){}],K=90;else{if(K==90)return w;K==96?K=(f&62)==f?51:30:K==26?(Ig.call(this,e?e.type:\"\"),this.relatedTarget=this.currentTarget=this.target=null,this.button=this.screenY=this.screenX=this.clientY=this.clientX=this.offsetY=this.offsetX=0,this.key=\"\",this.charCode=this.keyCode=0,this.metaKey=this.shiftKey=this.altKey=this.ctrlKey=T,this.state=null,this.pointerId=0,this.pointerType=\"\",this.timeStamp=0,this.JE=null,e&&this.init(e,Q),K=96):K==30?K=(f^52)>>3>=1&&(f<<2&10)<5?84:90:K==78&&(K=(f|16)==f?26:96)}}},WR=function(T,f,Q,e,w,K,z){for(K=13;K!=71;){if(K==23)throw Error(\"Invalid class name \"+f);if(K==48)z=GF(rK,f),K=6;else{if(K==6)return z;if(K==80)K=Q-5<<1>=Q&&(Q-8|44)<Q?49:21;else if(K==49)K=f?61:23;else if(K==2)e.P=((e.P?e.P+\"~\":\"E:\")+w.message+f+w.stack).slice(0,2048),K=80;else if(K==91)K=(Q-6&11)==2?2:80;else{if(K==T)throw Error(\"Invalid decorator function \"+e);K==61?K=typeof e!==\"function\"?T:21:K==13?K=91:K==21&&(K=(Q|1)>>4?6:48)}}}},Z7=function(){return Rk.call(this,44,5)},Pg=function(T){return WR.call(this,55,T,3)},u9=function(T,f,Q,e,w,K,z,v,B,X,g,L,V,q){{V=47;while(V!=72)if(V==12)Z7.call(this),this.C=new mI(this),this.Im=null,this.H9=this,V=56;else if(V==1)K++,V=91;else if(V==67)w[z++]=v&f,v>>=8,V=88;else if(V==51)V=T-8<2&&(T<<2&15)>=0?12:56;else if(V==88)w[z++]=v,V=1;else if(V==30)V=(T|9)>>4==4?6:89;else if(V==47)V=51;else if(V==6){a:{if(g=Q.C.A[String(w)],!g){q=true;break a}for(B=(g=g.concat(),true),z=f;z<g.length;++z)(X=g[z])&&!X.z6&&X.capture==K&&(L=X.handler||X.src,v=X.listener,X.lx&&x(7,1,X,Q.C),B=v.call(L,e)!==false&&B);q=B&&!e.defaultPrevented}V=89}else{if(V==89)return q;V==21?V=91:V==15?V=v>f?67:88:V==56?V=(T|88)==T?59:17:V==31?(K=z=Q,w=[],V=21):V==91?V=K<e.length?41:19:V==0?V=(T<<1&10)==2?73:30:V==17?V=(T^19)>>4?0:31:V==59?V=17:V==41?(v=e.charCodeAt(K),V=15):V==73?V=30:V==19&&(q=w,V=0)}}},dK=function(T,f,Q,e,w,K,z,v,B){B=this;try{yV(this,e,T,f,z,Q,w,v,K)}catch(X){WR(55,\":\",40,this,X),T(function(g){g(B.P)})}},Jd=function(){return u9.call(this,11)},Wg=function(){return ej.call(this,57,66)},$5=function(T,f,Q,e,w,K,z,v,B,X,g,L,V,q,N,R,U){if(e=p(19,T),e>=T.o)throw[ps,31];for(U=(q=(K=f,e),T.v9.length),X=0;K>0;)B=q%8,L=8-(B|0),w=q>>3,N=T.AE[w],z=L<K?L:K,Q&&(V=q,v=T,v.W!=V>>6&&(v.W=V>>6,g=p(110,v),v.nC=Tf(24,15,[0,0,g[1],g[2]],v.V,v.W)),N^=T.nC[w&U]),q+=z,X|=(N>>8-(B|0)-(z|0)&(1<<z)-1)<<(K|0)-(z|0),K-=z;return(R=X,y)(19,T,(e|0)+(f|0)),R},Rg=function(){return u9.call(this,5)},oU=function(T,f,Q,e,w,K,z,v,B,X,g,L,V,q,N){if(!T.tE&&(z=void 0,Q&&Q[0]===ps&&(f=Q[1],z=Q[2],Q=void 0),L=O(336,T),L.length==0&&(B=p(325,T)>>3,L.push(f,(q=B>>8,-2*~(q&255)-1+-256+(~q&255)),B&255),z!=void 0&&L.push((z|0)-~(z&255)+~z)),K=\"\",Q&&(Q.message&&(K+=Q.message),Q.stack&&(K+=\":\"+Q.stack)),w=p(e,T),w[0]>3)){(w[0]-=(K=K.slice(0,(V=w[0],-2*(V|3)+-2-2*~V+(V^3))),N=K.length,-2*~(N|3)+(N^3)+2*(~N^3)),K=Cs(K,192),g=T.U,T).U=T;try{T.Fu?(v=(v=J(T,494))&&v[v.length-1]||95,(X=J(T,30))&&X[X.length-1]==v||vU(30,T,[v&255])):vU(494,T,[95]),vU(82,T,ag(2,K.length).concat(K),51)}finally{T.U=g}}},mI=function(T){return ML.call(this,20,T,33)},GF=function(T){{var f=35;while(\"S\"){if(f==95)return;if(f==68)f=w<Q.length?91:2;else if(f==35)var Q=(f=62,wg).apply(1,arguments);else if(f==62)f=Q.length===0?49:8;else if(f==91)e+=encodeURIComponent(Q[w])+T[w+1],f=13;else if(f==90)f=68;else if(f==8)var e=(f=90,T)[0],w=0;else{if(f==49)return Nx(62,36,null,T[0]);if(f==13)w++,f=68;else if(f==2)return Nx(62,37,null,e)}}}K6^=70},Kj=function(T,f,Q,e,w,K){return p((y(19,w,(fj(56,((K=J(w,19),w.AE&&K<w.o)?(m(19,w,w.o),Q9(429,T,19,w,Q,0)):S(19,w,Q),e),w,325),K)),f),w)},V9=function(T,f,Q,e,w){w=(w=(e=(Q=172,186),236),211),w=27;function K(){this.n=(this.L=[],0)}return f=(T=new (K.prototype.zB=(K.prototype.qc=function(z,v){return tI.call(this,9,3,z,v)},zd=68&K6,function(){return Un.call(this,5)}),K),new K),[function(z){(T.qc(z),f).qc(z)},function(z,v){return(z=z===void 0?true:z,v=T.zB().concat(f.zB()),z)&&(f=new K),Q=e/Q,v}]},ew=typeof Object.create==\"function\"?Object.create:function(T){function f(){}return f.prototype=T,new f},zf=function(T,f){{var Q=82;while(Q!=6)if(Q==77)Q=z<iH.length?70:15;else if(Q==70){var e=iH[z];Q=(Object.prototype.hasOwnProperty.call(K,e)&&(T[e]=K[e]),62)}else if(Q==62)z++,Q=77;else if(Q==83)Q=4;else if(Q==15)w++,Q=4;else if(Q==4)Q=w<arguments.length?34:6;else if(Q==99)Q=77;else if(Q==82)var w=(Q=83,1);else if(Q==34){var K=arguments[w];for(e in K)T[e]=K[e];var z=(Q=99,0)}}},vU=function(T,f,Q,e,w,K,z,v,B){if(f.U==f)for(w=O(T,f),T==82||T==464||T==434?(v=function(X,g,L,V,q,N,R,U,r,G){for(U=(G=61,9);;)try{if(G==16)break;else{if(G==47)throw U=9,r;G==61?(g=w.length,V=(g|0)-4>>3,G=96):G==74?(U=33,w.Nc=Tf(24,15,q,c(59,24,R,w),c(58,24,(R|4)- -5+(R|-5),w)),G=80):G==96?G=w.hE!=V?95:80:G==95?(w.hE=V,R=(L=V<<3,-2*~L+2*~(L|4)+(L^4)),q=[0,0,z[1],z[2]],G=74):G==80&&(w.push((N=w.Nc[7-(~g&7)],-(N|0)-1-~(N|X)+(N&~X))),G=16)}}catch(n){if(U==9)throw n;U==33&&(r=n,G=47)}},z=O(355,f)):v=function(X){w.push(X)},e&&v(255+(e&-256)-(e^255)),B=0,K=Q.length;B<K;B++)v(Q[B])},Lj=function(T){return tI.call(this,9,10,T)},vg=function(T,f,Q,e,w){if(e=typeof f,e==\"object\")switch(!f){case []!=(0==![\"\"]):return\"null\";break;case Number(undefined)!==NaN==[]:switch(!(f instanceof Array)){case NaN!==Number(undefined):undefined;break;case false:return\"array\";break}if(f instanceof Object)return e;w=Object.prototype.toString.call(f);for(false;w==\"[object Window]\";0==![undefined]){if(true)return\"object\";if({})break}if(w==\"[object Array]\"||typeof f.length==T&&typeof f.splice!=\"undefined\"&&typeof f.propertyIsEnumerable!=\"undefined\"&&!f.propertyIsEnumerable(\"splice\"))return\"array\";while(w==\"[object Function]\"||typeof f.call!=\"undefined\"&&typeof f.propertyIsEnumerable!=\"undefined\"&&!f.propertyIsEnumerable(Q)){return\"function\";if(-0===0)break}break}else switch(!(e==\"function\"&&typeof f.call==\"undefined\")){case 0==![undefined]:undefined;break;case !!null:return\"object\";break}return e},jj=function(T,f,Q){return(Q=T.create().shift(),f.i.create().length)||f.I.create().length||(f.i=void 0,f.I=void 0),Q},ag=function(T,f,Q,e){Q=[];{e=(T|0)-1;while(e>=0)Q[-2-(T^1)-2*(~T|1)-(e|0)]=f>>e*8&255,e--}return Q},lP=function(T,f){return U9.call(this,false,19,f,T)},gg=function(T,f,Q,e,w,K,z,v,B,X){while(0===-Number())if(B=e[BU]||{},\"m\")break;v=A(e,(z=(K=A(e,f),B.lk=A(e,T),B.j=[],e).U==e?(zF(e)|Q)-w:1,7));{X=Q;while(X<z)B.j.push(A(e,6)),X++}for(B.AT=p(K,e);z--;)B.j[z]=p(B.j[z],e);return B.ik=O(v,e),B},X7=function(T,f,Q,e,w){return Nx.call(this,62,3,T,f,Q,e,w)},y=function(T,f,Q){switch(!(T==19||T==325)){case NaN===NaN!=null:if(f.tE&&T!=110)return;if(true!=[])T==370||T==82||T==487||T==434||T==336||T==494||T==30||T==355||T==464||T==429?f.J[T]||(f.J[T]=c(31,16,Q,T,f,150)):f.J[T]=c(30,16,Q,T,f,153);break;case 0!=![\"\"]==null:f.J[T]?f.J[T].concat(Q):f.J[T]=c(72,f,Q);break}T==110&&(f.V=$5(f,32,false),f.W=void 0)},qb=function(T,f){return Y5.call(this,T,3,f)},Mb=function(T,f,Q){return On.call(this,T,f,Q,13)},YC=function(T,f,Q,e,w){return ej.call(this,57,34,Q,T,w,f,e)},S=function(T,f,Q){switch(!(T==19||T==325)){case 0==![true.true]:if(f.tE&&T!=110)return;T==370||T==82||T==487||T==434||T==336||T==494||T==30||T==355||T==464||T==429?f.J[T]||(f.J[T]=c(15,16,Q,T,f,150)):f.J[T]=c(28,16,Q,T,f,153);break;case ![]:f.J[T]?f.J[T].concat(Q):f.J[T]=c(3,f,Q);break}T==110&&(f.V=$5(f,32,false),f.W=void 0)},p=function(T,f,Q){if((Q=f.J[T],Q)===void 0)throw[ps,30,T];switch(!Q.value){case ![\"\"]==0:true==![];break;case ![]==true:return Q.create();break}return(Q.create(T*4*T+-10*T+57),Q).prototype},Q9=function(T,f,Q,e,w,K){e.rW.length>f?oU(e,K,[ps,36],T):(e.rW.push(e.J.slice()),e.J[Q]=void 0,m(Q,e,w))},zF=function(T){return T.i?jj(T.I,T):$5(T,8,true)},kC=function(T,f,Q,e,w,K,z){x5(f,((Q=J((e=A(f,(w=A(f,(K=-2*~(T&(z=-~(T|3)-(T&-4)+(T|-4),4))+~T+(T^4)+(T|-5),15)),5)),f),w),K&&(Q=Cs(\"\"+Q,192)),z)&&x5(f,ag(2,Q.length),e),Q),e)},uP=function(T,f,Q){(w1=((Q=Error.call(this,T+\" cannot be used with intent \"+US[f]),this).message=Q.message,e8&132),\"stack\")in Q&&(this.stack=Q.stack),this.type=T,this.name=\"TypeCannotBeUsedWithIframeIntentError\"},qL=function(T){while([]){return Un.call(this,81,T);if(-0===Number())break}},OS=function(){return u9.call(this,88)},m=function(T,f,Q){switch(!(T==19||T==325)){case true:while(f.tE&&T!=110){return;if(!null)break}T==370||T==82||T==487||T==434||T==336||T==494||T==30||T==355||T==464||T==429?f.J[T]||(f.J[T]=c(29,16,Q,T,f,150)):f.J[T]=c(14,16,Q,T,f,153);break;case null==false:f.J[T]?f.J[T].concat(Q):f.J[T]=c(74,f,Q);break}T==110&&(f.V=$5(f,32,false),f.W=void 0)},J=function(T,f,Q){Q=T.J[f];switch(!(Q===void 0)){case true:false;break;case 0!=![]:throw[ps,30,f];break}for(![]!=(![\"\"]!=Number());Q.value;void 1){return Q.create();if(-0===0)break}return Q.create(f*4*f+-10*f+57),Q.prototype},Tf=function(T,f,Q,e,w,K,z,v){v=Q[2]|0,z=0;{K=Q[3]|0;while(z<f)w=w>>>8|w<<T,w+=e|0,K=K>>>8|K<<T,e=e<<3|e>>>29,w^=v+2695,K+=v|0,K^=z+2695,v=v<<3|v>>>29,v^=K,e^=w,z++}return[e>>>T&255,e>>>16&255,e>>>8&255,e>>>0&255,w>>>T&255,w>>>16&255,w>>>8&255,w>>>0&255]},Nb,lH=function(T,f,Q,e,w){return ej.call(this,57,3,T,f,Q,e,w)},yV=function(T,f,Q,e,w,K,z,v,B,X,g,L,V,q,N,R,U,r,G,n,iP,Xs,Td,P,Z5,$A,ak,AI,gK){g=((T.CC=Rk(44,((T.qD=(T.Q4=Zd,uH),B==((r=((ak=($A=(gK=166,44),U=T,AI=241,g=(T.v9=T[hd],29),254),B==0)&&(U=B),U),B)==0&&(r=B),X=r,0))&&(X=B),49),T.B,{get:function(){return this.concat()}}),T).yu=yq[T.B](T.CC,{value:{value:{}}}),0),f6^=249;{G=[];while(g<264)G[g]=String.fromCharCode(g),g++}(B.length<((((((f6=(L=\"length\",(R=\"fromCharCode\",(((T.rW=[],T.G6=0,T).hT=(N=((T.tE=(T.YR=0,T.U=T,false),T.ix=0,T).W=(T.Z=(T.dJ=f,T.P9=30008,T.K=(T.i=void 0,false),T.V=void 0,zd=(T.Y4=0,T.F=1,T.Y=!(T.S=false,1),T.bx=(Xs=(n=\"addEventListener\",\"slice\"),[]),(e8=116*(T.nC=(T.Fu=false,void 0),f6),K6)%(T.Hb=(T.D$=function(Y){return Ks.call(this,Y,5)},q=\"toString\",[]),T.v=(T.dW=[],null),P=\"push\",Z5=\"match\",176)),iP=\"pop\",T.x4=0,T.Or=(T.P=void 0,void 0),[]),T.ed=0,T.o=(T.J=[],0),T.N=(T.JH=0,0),T.I=void 0,void 0),T.AE=[],T.Cc=0,(T.JT=z,T).TB=(Td=\"removeEventListener\",!(T.gJ=25,1)),(V=String,window).performance||{}),N.timeOrigin||(N.timing||{}).navigationStart)||0,B.length<2)&&(P=B),B).length<2&&(iP=B),140)*K6),B.length<2&&(Z5=B),B.length)<2&&(Xs=B),B).length<2&&(n=B),B.length<2)&&(Td=B),B.length)<2&&(q=B),B.length<2)&&(L=B),2)&&(V=B),B.length)<2&&(R=B),T.B9=[];while(0==false)if(T.zo=v,12)break;(T.Ip=(T.Sd=void 0,[]),e&&e.length==2)&&(T.Ip=e[1],T.B9=e[0]);switch(!w){case true:(true!=![])+true;break;case NaN===NaN:try{T.Sd=JSON.parse(w)}catch(Y){T.Sd={}}break}if(x(9,T,202,(x(42,T,163,function(Y,t,l,k,Z,u,I,F){{F=25;while(F!=41)F==31?(m(Z,X,t),F=41):F==80?F=l--?88:31:F==25?(Z=A(U,22),l=A(128,80,U),t=[],I=p(253,X),k=0,u=I[L],F=19):F==19?F=80:F==88?(k=((k|0)+(A(128,81,Y)|0))%u,t[P](I[k]),F=97):F==97&&(F=80)}}),function(Y,t,l,k,Z,u,I,F,H,M){{M=64;while(M!=9)M==45?(I+=V[R]((l=H[t],-122-~(l|121)+(~l&121))),M=14):M==14?(t++,M=97):M==64?(k=A(Y,29),Z=A(X,15),F=A(X,7),H=J(U,Z),u=p(k,r),I=\"\",t=0,M=13):M==66?(m(F,Y,u[I]),M=9):M==13?M=97:M==97&&(M=t<H[L]?45:66)}})),14)x(72,T,360,function(Y,t,l,k,Z,u,I,F,H,M){for(M=79;M!=71;)M==37?(Z+=V[R]((l=H[t],-121+(l|121)+(~l&121))),M=51):M==63?(S(u,X,Z in F|0),M=71):M==30?M=1:M==1?M=t<H[L]?37:63:M==79?(k=A(r,30),I=A(r,31),u=A(Y,46),H=J(r,k),F=J(X,I),Z=\"\",t=0,M=30):M==51&&(t++,M=1)});x(((new Mb((m(257,(y(152,(y(385,(zd=(x(72,T,50,(x(42,(x(41,(S(30,T,(x(8,T,(x(10,(x(73,T,341,(m(487,(m(464,T,(x(74,(S(82,T,(x(8,T,64,(x(11,T,(x(11,(((x(11,T,(x((x(41,T,(x(40,T,(y(429,T,(x(10,(S(485,T,(y(19,T,0),m(325,T,0),{})),T),157,function(Y){Ad(Y,4)}),[2048])),173),function(Y,t,l,k,Z,u){{u=80;while(u!=3)u==5?u=16:u==80?(t=A(Y,75),l=A(128,84,X),k=0,Z=[],u=5):u==2?(Z[P](zF(r)),u=43):u==16?u=k<l?2:11:u==11?(m(t,r,Z),u=3):u==43&&(k++,u=16)}}),177),function(Y){kC(4,Y)}),41),T,223,function(Y,t,l,k,Z,u,I,F){for(F=86;F!=67;)F==86?(l=A(Y,31),k=A(128,82,U),u=\"\",Z=J(U,253),t=Z[L],I=0,F=9):F==20?F=k--?13:8:F==9?F=20:F==13?(I=((I|0)+(A(128,83,Y)|0))%t,u+=G[Z[I]],F=51):F==51?F=20:F==8&&(y(l,U,u),F=67)}),264),function(Y,t,l,k,Z){Z=p((l=J(Y,(k=(t=A(Y,74),A)(U,21),t)),k),Y),S(k,X,Z+l)}),S)(434,T,E9(4)),x)(43,T,347,function(Y,t,l,k,Z,u,I,F,H,M,d){for(d=25;d!=62;)d==25?(M=A(X,23),u=A(X,15),Z=A(Y,13),k=A(Y,47),F=O(k,r),t=p(Z,U),I=J(Y,u),l=J(U.U,M),d=79):d==79?d=l!==0?31:62:d==31&&(H=A(false,48,1,F,1,r,t,l,I),l[n](I,H,Sj),J(r,152)[P](function(){l[Td](I,H,Sj)}),y(412,Y,[l,I,H]),d=62)}),T),114,function(Y,t,l,k,Z,u,I){for(I=56;I!=12;)if(I==5)l++,I=40;else if(I==32)I=t.W9?5:18;else if(I==56){for(u in delete (k=O(485,(Z=zF(U),Y)),k)[Z],k)if(u!==\"t\"&&Object.hasOwn(k,u))return;I=45,l=0}else I==45?I=40:I==77?(Y.Hb[L]=0,I=12):I==18?(D.clearTimeout(t.Vu),Gd(39,t.xR,r),Gd(55,t.EY,Y),I=5):I==87?(t=Y.Hb[l],I=32):I==40&&(I=l<r.Hb[L]?87:77)}),270),function(Y,t,l){(l=A(Y,(t=A(X,23),70)),m)(l,Y,\"\"+p(t,Y))}),function(Y,t,l,k,Z,u,I,F){(u=(I=(t=A(Y,(Z=A(Y,(F=A(r,(ak=gK^63,71)),73)),k=A(U,71),14)),l=J(X,k),J)(Y,t),p(Z,r)),S)(F,U,A(false,36,1,l,I,U,u))})),E9(4))),T),235,function(Y,t,l,k,Z){Y=(Y=(Y=(Y=(Y=28,240),214),48),25);{Z=95;while(Z!=85)Z==81?(k=A(U,75),l=A(X,76),m(l,r,function(u){return function(){}(),eval(u)}(IU(O(k,X.U)))),Z=85):Z==95&&(Z=Vq(true,true,7,t,false,X)?85:81)}}),E9(4))),T),[]),function(Y,t,l,k){t=(Y=(l=A(U,23),A(X,47)),J)(X,l);while(true!=[])if(!!null!=(k=vg(\"number\",t,\"call\"),null))break;y(Y,U,k)})),T),453,function(Y,t,l,k,Z,u,I){for(I=91;I!=65;)I==30?I=k==2?80:65:I==9?(l=p(Z,Y),k=J(U,u),p(t,X)[k]=l,I=43):I==80?(Y.V=$5(Y,32,false),Y.W=void 0,I=65):I==91?(t=A(r,45),u=A(U,72),Z=A(Y,72),I=32):I==99?(U.W=void 0,I=30):I==32?I=r.U==Y?9:65:I==43&&(I=t==110?99:65)}),448),function(Y,t){Q9(429,104,(t=J(Y,A(Y,73)),19),X.U,t,0)}),[])),T),111,function(Y,t,l,k,Z,u,I,F,H,M,d,S8,b,Qq,E){{E=54;while(E!=96)if(E==79)k+=I,E=57;else if(E==95)S8(l[Xs](k,-2-~k-~I),d),E=79;else if(E==54)E=Vq(true,true,6,t,true,Y)?96:72;else if(E==8)E=vg(\"number\",l,\"call\")==\"object\"?33:40;else if(E==72)u=A(r,47),Qq=A(U,7),Z=A(Y,74),b=A(Y,69),S8=O(Qq,Y),I=p(Z,Y),l=O(u,r),d=p(b,Y),E=8;else if(E==57)E=k<M?95:96;else if(E==12)E=57;else if(E==33){for(F in H=[],l)H[P](F);E=(l=H,40)}else E==40?E=Y.U==X?19:96:E==19&&(I=I>0?I:1,k=0,M=l[L],E=12)}}),T),38,function(Y,t,l,k,Z){(l=J(Y,(t=J(Y,(k=A(Y,(Z=A(U,72),76)),Z))!=0,k)),t)&&y(19,X,l)}),function(Y,t,l,k,Z,u,I,F,H,M,d,S8,b,Qq,E,k5,YA,C){for(C=84;C!=2;)C==34?(Z=YA(1),b[P](Z),I+=Z?0:1,C=9):C==78?(u=0,C=23):C==84?(YA=function(bP,cR){for(;M<bP;)d|=zF(U)<<M,M+=8;return d>>=(M-=bP,cR=d&(1<<bP)-1,bP),cR},k=A(X,73),d=M=0,k5=(YA(3)|0)+1,l=YA(5),I=0,b=[],H=0,C=68):C==56?C=41:C==76?(x(72,Y,k,function(bP,cR,b9,Ls,og,a){for(a=95;a!=49;)a==5?a=Ls<l?70:27:a==12?a=b[Ls]?18:93:a==95?(Ls=0,b9=[],cR=[],a=69):a==38?(og=cR[og],a=18):a==18?(b9[P](og),a=40):a==40?(Ls++,a=5):a==62?a=og>=cR[L]?41:38:a==70?(og=t[Ls],a=12):a==69?a=5:a==27?(U.i=c(73,X,E[Xs]()),X.I=c(75,bP,b9),a=49):a==81?a=62:a==41?(cR[P](A(bP,13)),a=81):a==93&&(a=62)}),C=2):C==80?C=41:C==71?C=H<l?34:49:C==43?(Qq++,C=74):C==9?(H++,C=71):C==98?C=u<l?87:53:C==53?(S8=k5,E=[],C=80):C==68?C=71:C==94?(u++,C=98):C==41?C=S8--?21:76:C==21?(E[P](J(Y,A(Y,72))),C=56):C==74?C=Qq<l?15:78:C==45?C=74:C==23?C=98:C==87?(b[u]&&(t[u]=A(U,23)),C=94):C==15?(b[Qq]||(t[Qq]=YA(F)),C=43):C==49&&(F=(3*(I&-2)-2*(I^1)+(~I&1))[q](2)[L],t=[],Qq=0,C=45)})),w1)*131,T),404),T),[]),T),D),\"Submit\"))).dispose(),43),T,505,function(Y,t,l,k){(t=A((k=(l=A(X,7),A)(X,47),X),29),S)(t,Y,J(X,l)||p(k,Y))}),x(8,T,280,function(Y,t,l,k,Z,u){y((u=J((t=p((l=(Z=A(Y,(k=A(r,71),21)),A(U,22)),Z),r),U),k),l),X,u[t])});while(!\"\"==!(Number(void!![])===NaN))if(x(9,T,383,function(Y,t,l,k,Z,u){y((t=J((k=(u=(Z=(l=A(Y,14),A(r,5)),A(U,23)),J(r,Z)),r),l)==k,u),Y,+t)}),{})break;j8(30,0,(Gd(15,(Gd(31,(m(494,(x(42,T,(S(412,(x(43,T,90,(m(355,T,(x(75,T,(y(70,T,(x(74,T,(y(48,T,(x(73,T,(m((x(10,(x(40,T,(x(40,T,510,(T.FL=(y(370,T,[154,(S(((zd=(T.nZ=((w1=(x(9,T,328,function(Y,t,l,k,Z,u){{u=55;while(u!=53)u==20?(y(l.lk,Y,k.apply(Z,l.j)),Y.G6=U.G(),u=53):u==55?u=Vq(true,true,5,t,false,Y)?53:65:u==65?(l=gg(73,75,0,U,1),Z=l.ik,k=l.AT,u=9):u==9&&(u=Y.U==Y||k==r.D$&&Z==Y?20:53)}}),74<<e8),x)(75,T,76,function(Y,t,l,k,Z,u){Z=O((t=(k=(l=(u=A(Y,7),A)(r,71),A(Y,15)),p(l,U)),u),Y),$A/=184,m(k,Y,Z in t|0)}),0),f6^e8),function(){})(),T.UO=0,336),T,[]),0),0]),0),function(Y){c(40,8,4,Y)})),491),function(Y,t,l,k,Z,u,I,F,H,M){{M=41;while(M!=99)M==70?(I=gg(73,75,0,X.U,1),l=I.AT,H=I.ik,u=I.j,k=I.lk,Z=u[L],F=Z==0?new H[l]:Z==1?new H[l](u[0]):Z==2?new H[l](u[0],u[1]):Z==3?new H[l](u[0],u[1],u[2]):Z==4?new H[l](u[0],u[1],u[2],u[3]):2(),m(k,Y,F),M=99):M==41&&(M=Vq(true,true,12,t,false,X)?99:70)}}),T),28,function(){}),226),T,{}),259),function(Y,t,l,k){l=(ak=(t=(k=A(Y,31),zF)(Y),AI/83),A)(X,76),m(l,Y,O(k,r)>>>t)}),0)),115),function(Y,t,l){t=A(Y,71),l=O(t,r.U),l[0][Td](l[1],l[2],Sj)}),T)),77),function(){kC(3,r)}),[0,0,0])),function(){Ad((function(){}(),r),1)})),T),0),344),function(Y,t,l,k,Z){for(Z=41;Z!=91;)Z==89?(k=zF(X),Z=84):Z==60?(t[336]=X.J[336],t[429]=X.J[429],r.J=t,Z=91):Z==56?(l=A(Y,6),t[l]=X.J[l],Z=55):Z==41?(t=Y.rW[iP](),Z=66):Z==55?(k--,Z=59):Z==84?Z=59:Z==90?(S(19,U,U.o),Z=91):Z==66?Z=t?89:90:Z==59&&(Z=k>0?56:60)}),T),[]),K||Gd(15,[D5],T),[mU,B]),T),[Hg,Q]),T),true),true,T)},tm=function(T,f,Q){Q=(Q=(Q=149,Q=116,Q=182,212),78);function e(){this.R=this.Mc=this.n=0}return[function(w){f.Qu(w);while(Number()==(![]!=false)!=[])if(T.Qu(w),!false==!\"\")break},(T=(f=(e.prototype.Qu=function(w,K){return Rk.call(this,44,80,w,K)},zd<<=(e.prototype.XL=function(){return d1.call(this,56,3)},222),new e),new e),function(w,K){return function(){}(),K=[f.XL(),T.XL(),f.R,T.R],(w===void 0||w)&&(T=new e),K})]},jw=function(T,f,Q,e,w,K){return x.call(this,80,T,f,Q,e,w,K)},Xh=function(T,f,Q,e,w,K){return Nx.call(this,62,16,T,f,Q,e,w,K)},sn=function(T){return En.call(this,(zd=106-w1,64),T)},fj=function(T,f,Q,e,w,K,z,v,B){if(!Q.P){Q.Y4++;try{B=(v=void 0,0);{K=Q.o;while(--f)try{if((w=void 0,Q).i)v=jj(Q.i,Q);else{if((B=O(19,Q),B)>=K)break;v=(w=A(Q,(y(e,Q,B),31)),O(w,Q))}Vq(false,(v&&(z=v[ns],-~z-(z&-2049)+(~z&2048)+(z|-2049))?v(Q,f):oU(Q,0,[ps,21,w],429),true),13,f,false,Q)}catch(X){O(385,Q)?oU(Q,22,X,429):S(385,Q,X)}}switch(!!f){case true:NaN===Number(void false);break;case false:while(Q.mV){fj(56,1607626656152,Q,(Q.Y4--,325));return;if({})break}oU(Q,0,[ps,33],429);break}}catch(X){try{oU(Q,22,X,429)}catch(g){WR(55,\":\",T,Q,g)}}Q.Y4--}},TF=function(T,f,Q,e,w,K,z,v){return C6.call(this,6,T,(K6=e8>>182,f),Q,e,w,K,z,v)},td=function(){return En.call(this,23)},wg=function(){for(var T=61;T!=13;)if(T==86)Q[e-f]=arguments[e],T=75;else if(T==61)var f=(T=38,Number)(this),Q=[],e=f;else if(T==75)e++,T=66;else if(T==66)T=e<arguments.length?86:63;else{if(T==63)return Q;T==38&&(T=66)}},x5=function(T,f,Q,e,w,K,z,v,B){if(T.U==T){{K=p(Q,T),Q==82||Q==464||Q==434?(z=function(X,g,L,V,q,N,R,U,r,G){for(r=(G=74,95);;)try{if(G==59)break;else if(G==7)r=98,K.Nc=Tf(24,15,R,c(57,24,g,K),c(56,24,(g|4)- -5+(g|-5),K)),G=82;else{if(G==13)throw r=95,U;G==82?(K.push((N=K.Nc[7-(~q&7)],-(N|0)-1-~(N|X)+(N&~X))),G=59):G==78?G=K.hE!=L?58:82:G==74?(q=K.length,L=(q|0)-4>>3,G=78):G==58&&(K.hE=L,g=(V=L<<3,-2*~V+2*~(V|4)+(V^4)),R=[0,0,v[1],v[2]],G=7)}}catch(n){if(r==95)throw n;r==98&&(U=n,G=13)}},v=J(T,355)):z=function(X){K.push(X)},e&&z(255+(e&-256)-(e^255)),w=f.length,B=0;while(B<w)z(f[B]),B++}}},RU=function(T,f,Q,e,w){if(T.length==3){{e=0;while(e<3)f[e]+=T[e],e++}for(Q=[13,8,13,(w=0,12),16,5,3,10,15];w<9;w++)f[3](f,w%3,Q[w])}},W;if(typeof Object.setPrototypeOf==\"function\")Nb=Object.setPrototypeOf;else{var $C;a:{var F7={},Sw={a:true};try{($C=F7.a,F7).__proto__=Sw;break a}catch(T){}$C=false}Nb=$C?function(T,f,Q){for(Q=52;Q!=3;)if(Q==97)Q=T.__proto__!==f?37:49;else if(Q==52)T.__proto__=f,Q=97;else{if(Q==49)return T;if(Q==37)throw new TypeError(T+\" is not extensible\");}}:null}var D=this||self,Gf=Nb,vR=\"closure_uid_\"+(Math.random()*1E9>>>0),NL,BR=0,xA=function(T,f,Q,e,w,K,z,v,B,X){z=(z=(X=(w=3,167),e=239,21),v=10,244);{B=11;while(0==(true==![]))try{if(w==32)break;else{if(w==9)return B=11,Q;if(w==1)B=23,T=function(){X=v/e},D.addEventListener(\"test\",T,f),D.removeEventListener(\"test\",T,f),w=9;else if(w==89)Q=false,f=Object.defineProperty({},\"passive\",{get:function(){Q=true}}),w=1;else if(w==3)w=D.addEventListener&&Object.defineProperty?89:39;else{if(w==39)return false;w==18&&(B=11,w=9)}}}catch(g){if(B==11)throw g;B==23&&(K=g,w=18)}}}();h(2,6,lP,(Z7.prototype[(Z7.prototype.dispose=(Z7.prototype.QC=((Ig.prototype.stopPropagation=function(){while(![]==0)if(this.Z4=true,{})break},Z7).prototype.l=function(T){{T=64;while(T!=82)T==76?(this.Bb.shift()(),T=52):T==24?T=99:T==64?T=this.Bb?24:82:T==52?T=99:T==99&&(T=this.Bb.length?76:82)}},false),function(T){for(T=64;T!=23;)T==95?(this.QC=true,this.l(),T=23):T==64&&(T=this.QC?23:95)}),Symbol).dispose]=function(){this.dispose()},Ig.prototype.preventDefault=function(){this.defaultPrevented=true},Ig)),lP.prototype.init=function(T,f,Q,e,w,K){{K=35;while(K!=59)K==23?K=Q==\"mouseover\"?2:82:K==21?(this.button=T.button,this.keyCode=T.keyCode||0,this.key=T.key||\"\",this.charCode=T.charCode||(Q==\"keypress\"?T.keyCode:0),this.ctrlKey=T.ctrlKey,this.altKey=T.altKey,this.shiftKey=T.shiftKey,this.metaKey=T.metaKey,this.pointerId=T.pointerId||0,this.pointerType=T.pointerType,this.state=T.state,this.timeStamp=T.timeStamp,this.JE=T,T.defaultPrevented&&lP.X.preventDefault.call(this),K=59):K==35?(Q=this.type=T.type,e=T.changedTouches&&T.changedTouches.length?T.changedTouches[0]:null,this.target=T.target||T.srcElement,this.currentTarget=f,w=T.relatedTarget,K=77):K==38?(this.offsetX=T.offsetX,this.offsetY=T.offsetY,this.clientX=T.clientX!==void 0?T.clientX:T.pageX,this.clientY=T.clientY!==void 0?T.clientY:T.pageY,this.screenX=T.screenX||0,this.screenY=T.screenY||0,K=21):K==20?(this.clientX=e.clientX!==void 0?e.clientX:e.pageX,this.clientY=e.clientY!==void 0?e.clientY:e.pageY,this.screenX=e.screenX||0,this.screenY=e.screenY||0,K=21):K==77?K=w?95:23:K==2?(w=T.fromElement,K=95):K==4?(w=T.toElement,K=95):K==39?K=e?20:38:K==82?K=Q==\"mouseout\"?4:95:K==95&&(this.relatedTarget=w,K=39)}};while(NaN!==NaN)if(lP.prototype.stopPropagation=function(){(lP.X.stopPropagation.call(this),this.JE).stopPropagation?this.JE.stopPropagation():this.JE.cancelBubble=true},true)break;var kA=\"closure_listenable_\"+(lP.prototype.preventDefault=function(T){(T=(lP.X.preventDefault.call(this),this.JE),T).preventDefault?T.preventDefault():T.returnValue=false},Math.random()*1E6|0),wK=0,iH=\"constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf\".split(\" \"),hI=\"closure_lm_\"+(mI.prototype.add=(mI.prototype.Rm=function(T,f,Q,e,w,K){return(K=this.A[w=-1,Q.toString()],K&&(w=C6(3,0,f,T,e,K)),w)>-1?K[w]:null},function(T,f,Q,e,w,K,z,v,B,X){{X=53;while(!false==!\"\"){if(X==47)return;if(X==81)z=C6(65,0,e,f,w,B),X=15;else if(X==15)X=z>-1?76:33;else if(X==98)X=Q?3:61;else if(X==53)v=T.toString(),B=this.A[v],X=90;else if(X==29)B=this.A[v]=[],this.Pb++,X=81;else if(X==76)K=B[z],X=98;else if(X==61)K.lx=false,X=3;else{if(X==3)return K;X==90?X=B?81:29:X==33&&(K=new YC(!!e,w,this.src,f,v),K.lx=Q,B.push(K),X=3)}}}f6=zd%35}),(mI.prototype.hasListener=function(T,f,Q,e,w){return d1((Q=f!==void 0,w=(e=T!==void 0)?T.toString():\"\",56),12,true,false,function(K,z,v){{v=80;while(v!=56)if(v==46)v=96;else if(v==80)z=0,v=46;else{if(v==18)return true;if(v==25)v=e&&K[z].type!=w||Q&&K[z].capture!=f?94:18;else if(v==96)v=z<K.length?25:20;else if(v==94)++z,v=96;else if(v==20)return false}}},this.A)},mI.prototype).remove=function(T,f,Q,e,w,K,z,v){for(w1=f6*f6,v=65;v!=61;)if(v==65)K=T.toString(),v=7;else if(v==21)v=z.length==0?19:42;else{if(v==95||v==16)return false;if(v==7)v=K in this.A?79:95;else if(v==26)v=w>-1?70:16;else{if(v==42)return true;v==70?(En(12,null,z[w]),Array.prototype.splice.call(z,w,1),v=21):v==19?(delete this.A[K],this.Pb--,v=42):v==79&&(z=this.A[K],w=C6(64,0,Q,f,e,z),v=26)}}},Math.random()*1E6|0),n6=0,Fs={},l9=\"__closure_events_fn_\"+(Math.random()*1E9>>>0);(((W=(h(2,6,Rg,Z7),Rg.prototype[kA]=true,Rg).prototype,W).jd=function(T){this.Im=T},W.addEventListener=function(T,f,Q,e){On(0,false,f,5,e,T,this,Q)},W).removeEventListener=function(T,f,Q,e){C6(15,\"object\",0,T,e,Q,f,this)},W.dispatchEvent=function(T,f,Q,e,w,K,z,v,B,X,g,L){for(zd=f6/(L=13,17);L!=4;)if(L==41)B.target=B.target||X,L=60;else{if(L==20)return e;L==73?L=w?76:1:L==25?(w=w.Im,L=73):L==34?L=!B.Z4&&v>=0?63:51:L==84?L=73:L==57?(g=[],L=84):L==61?(f=B,B=new Ig(Q,X),zf(B,f),L=60):L==17?(v--,L=34):L==1?(K=g,X=this.H9,B=T,Q=B.type||B,L=66):L==30?L=!B.Z4&&v<K.length?62:20:L==93?(v=K.length-1,L=26):L==28?L=K?27:20:L==18?L=B instanceof Ig?41:61:L==62?(z=B.currentTarget=K[v],e=u9(69,0,z,B,Q,false)&&e,L=37):L==96?(z=B.currentTarget=X,e=u9(64,0,z,B,Q,true)&&e,B.Z4||(e=u9(68,0,z,B,Q,false)&&e),L=28):L==45?L=30:L==37?(v++,L=30):L==27?(v=0,L=45):L==94?L=w?57:1:L==13?(w=this.Im,L=94):L==66?L=typeof B===\"string\"?43:18:L==63?(z=B.currentTarget=K[v],e=u9(66,0,z,B,Q,true)&&e,L=17):L==76?(g.push(w),L=25):L==60?(e=true,L=58):L==43?(B=new Ig(B,X),L=60):L==51?L=B.Z4?28:96:L==26?L=34:L==58&&(L=K?93:51)}},W.Rm=function(T,f,Q,e){return this.C.Rm(T,f,String(Q),e)},W).l=function(){while([]!=true)if(-(Rg.X.l.call(this),Number)()===0)break;this.Im=(this.C&&d1(56,40,null,0,this.C),null)},W.hasListener=function(T,f){return this.C.hasListener(T!==void 0?String(T):void 0,f)};var i9,Mx,rg=(qx.prototype.toString=function(){return this.wJ+\"\"},Error),US={rJ:0,c9:1,jS:2,0:\"FORMATTED_HTML_CONTENT\",1:\"EMBEDDED_INTERNAL_CONTENT\",2:\"EMBEDDED_TRUSTED_EXTERNAL_CONTENT\"};(uP.prototype=ew(rg.prototype),uP).prototype.constructor=uP;switch(!Gf){case true:for(var ES in rg)if(ES!=\"prototype\")if(Object.defineProperties){var Cj=Object.getOwnPropertyDescriptor(rg,ES);Cj&&Object.defineProperty(uP,ES,Cj)}else uP[ES]=rg[ES];break;case 0!=![\"\"]:Gf(uP,rg);break}(((((h(2,((h(Wg,(((((((((W=(\"ARTICLE SECTION NAV ASIDE H1 H2 H3 H4 H5 H6 HEADER FOOTER ADDRESS P HR PRE BLOCKQUOTE OL UL LH LI DL DT DD FIGURE FIGCAPTION MAIN DIV EM STRONG SMALL S CITE Q DFN ABBR RUBY RB RT RTC RP DATA TIME CODE VAR SAMP KBD SUB SUP I B U MARK BDI BDO SPAN BR WBR NOBR INS DEL PICTURE PARAM TRACK MAP TABLE CAPTION COLGROUP COL TBODY THEAD TFOOT TR TD TH SELECT DATALIST OPTGROUP OPTION OUTPUT PROGRESS METER FIELDSET LEGEND DETAILS SUMMARY MENU DIALOG SLOT CANVAS FONT CENTER ACRONYM BASEFONT BIG DIR HGROUP STRIKE TT\".split((uP.X=rg.prototype,\" \")).concat([\"BUTTON\",\"INPUT\"]),td).prototype,W).u=function(T,f){return f=this.T6,typeof T===\"string\"?f.getElementById(T):T},W).getElementsByTagName=function(T,f){return(f||this.T6).getElementsByTagName(String(T))},W).createElement=function(T,f,Q){return(f=String(T),Q=this.T6,Q.contentType===\"application/xhtml+xml\")&&(f=f.toLowerCase()),Q.createElement(f)},W).createTextNode=function(T){return this.T6.createTextNode(String(T))},W).appendChild=function(T,f){T.appendChild((f6=178%f6,f))},W).append=function(T,f){On(0,\"\",\"array\",48,\"string\",arguments,T,T.nodeType==9?T:T.ownerDocument||T.document)},W.canHaveChildren=function(T,f){for(f=33;f!=52;){if(f==60){switch(T.tagName){case \"APPLET\":case \"AREA\":case \"BASE\":case \"BR\":case \"COL\":case \"COMMAND\":case \"EMBED\":case \"FRAME\":case \"HR\":case \"IMG\":case \"INPUT\":case \"IFRAME\":case \"ISINDEX\":case \"KEYGEN\":case \"LINK\":case \"NOFRAMES\":case \"NOSCRIPT\":case \"META\":case \"OBJECT\":case \"PARAM\":case \"SCRIPT\":case \"SOURCE\":case \"STYLE\":case \"TRACK\":case \"WBR\":return false}return true}if(f==0)return false;f==33&&(f=T.nodeType!=1?0:60)}},W).removeNode=Lj,W).contains=function(T,f,Q){for(Q=2;Q!=29;)if(Q==2)Q=T&&f?50:10;else if(Q==30)Q=51;else if(Q==45)f=f.parentNode,Q=24;else{if(Q==10)return false;if(Q==51)Q=f&&T!=f?45:94;else if(Q==87)Q=typeof T.compareDocumentPosition!=\"undefined\"?48:30;else{if(Q==99)return T==f||T.contains(f);if(Q==48)return T==f||!!(T.compareDocumentPosition(f)&16);if(Q==94)return f==T;Q==50?Q=T.contains&&f.nodeType==1?99:87:Q==24&&(Q=51)}}},37)),Wg.prototype).uk=0,Wg.prototype.ND=\"\",3),sn,Rg),W=sn.prototype,W).op=Wg.VC(),W).u=function(){return this.h},W).getParent=function(){return this.nc},W.l=function(T){for(T=22;T!=95;)T==10?(this.Ur.dispose(),delete this.Ur,T=32):T==32?(h(function(f){f.dispose()},18,this),!this.sY&&this.h&&Lj(this.h),this.Er=this.wW=this.h=this.nc=null,sn.X.l.call(this),T=95):T==22?(this.Lc&&this.gW(),T=47):T==47&&(T=this.Ur?10:32)},W.gW=function(){(h(function(T){T.Lc&&T.gW()},33,this),this.Ur&&d1(56,41,null,0,this.Ur),this).Lc=false},W).jd=function(T,f){{f=82;while(f!=26)if(f==98)sn.X.jd.call(this,T),f=26;else if(f==82)f=this.nc&&this.nc!=T?20:98;else if(f==20)throw Error(\"Method not supported\");}},W).removeChild=function(T,f,Q,e,w,K,z,v,B,X,g,L,V){for(V=43;V!=72;)if(V==75)X=T.op,Q=T,L=X.ND+\":\"+(X.uk++).toString(36),e=Q.GB=L,V=86;else if(V==43)V=T?13:36;else if(V==24)V=(e=T.GB)?86:75;else if(V==80)K.nc=null,sn.X.jd.call(K,null),V=36;else if(V==86)g=e,V=48;else if(V==71)V=v&&T?12:36;else{if(V==93)throw Error(\"Child is not in parent component\");if(V==94)return T;if(V==22)T=w,V=71;else if(V==36)V=T?94:93;else if(V==13)V=typeof T===\"string\"?1:24;else if(V==78)K=T,V=44;else if(V==7)z=this.Er,w=(z!==null&&v in z?z[v]:void 0)||null,V=22;else if(V==12)B=this.Er,v in B&&delete B[v],HR(29,5,1,this.wW,T),V=53;else if(V==44)V=K==null?79:80;else if(V==49)V=this.Er&&v?7:42;else if(V==42)w=null,V=22;else if(V==53)V=f?14:78;else if(V==48)v=g,V=49;else if(V==1)g=T,V=48;else{if(V==79)throw Error(\"Unable to set parent component\");V==14&&(T.gW(),T.h&&Lj(T.h),V=78)}}};var sS,hm={button:\"pressed\",checkbox:\"checked\",menuitem:(W=(h(Jd,20),Jd).prototype,\"selected\"),menuitemcheckbox:\"checked\",menuitemradio:\"checked\",radio:\"checked\",tab:\"selected\",treeitem:\"selected\"},r1=(((h((h(2,10,OS,(W.Z$=(W.cb=(W.yC=function(T,f,Q,e,w,K,z,v){(z=((sS||(sS={1:\"disabled\",8:\"selected\",16:\"checked\",64:\"expanded\"}),e=sS[f],w=T.getAttribute(\"role\")||null)?(v=hm[w]||e,K=e==\"checked\"||e==\"selected\"?v:e):K=e,K))&&HR(29,14,\"aria-\",\"none\",T,Q,z)},function(T,f,Q,e,w,K,z,v,B){for(B=(v=53,15);;)try{if(v==26)break;else v==62?v=!f&&fs(2,34,0,32,T)?65:95:v==24?(B=15,v=48):v==19?(B=15,v=24):v==65?(B=52,e.blur(),v=24):v==63?v=Q!=f?84:26:v==66?v=f?93:68:v==1?(w=e.tabIndex,Q=typeof w===\"number\"&&w>=0&&w<32768,v=63):v==95?v=(Q=e.hasAttribute(\"tabindex\"))?1:63:v==84?(K=e,v=66):v==93?(K.tabIndex=0,v=26):v==53?v=T.mg&32&&(e=T.ux())?62:26:v==48?v=fs(2,18,0,32,T)?34:95:v==34?(j8(73,4,T)&&T.setActive(false),j8(72,32,T)&&Y5(32,17,false,32,T)&&T.D(false,32),v=95):v==68&&(K.tabIndex=-1,K.removeAttribute(\"tabIndex\"),v=26)}catch(X){if(B==15)throw X;B==52&&(z=X,v=19)}}),W.D=function(T,f,Q,e,w,K,z){{z=39;while({}){if(z==6)return;z==39?(e=f.u(),z=20):z==60?((K=this.UY[T])&&this.Wb(K,f,Q),this.yC(e,T,Q),z=6):z==24?z=this.UY?60:97:z==97?(w=this.Z$(),w.replace(/\\\\xa0|\\\\s/g,\" \"),this.UY={1:w+\"-disabled\",2:w+\"-hover\",4:w+\"-active\",8:w+\"-selected\",16:w+\"-checked\",32:w+\"-focused\",64:w+\"-open\"},z=60):z==20&&(z=e?24:6)}}K6=e8&95},W.Wb=function(T,f,Q,e){(e=f.u?f.u():f)&&(Q?lH:qb)(e,[T])},W.ux=function(T){return T.u()},function(){return\"goog-control\"}),Jd)),OS),19),OS.prototype).yC=function(T,f,Q){K6=217&zd;switch(f){case 8:case 16:HR(29,13,\"aria-\",\"none\",T,Q,\"pressed\");break;default:case 64:case 1:OS.X.yC.call(this,T,f,Q)}},OS).prototype.Z$=function(){return\"goog-button\"},{});(W=(h(2,3,TF,sn),TF.prototype),W.ux=function(){return this.O.ux(this)},W).l=function(T){for(T=58;T!=34;)T==58?(TF.X.l.call(this),T=25):T==25?T=this.D4?52:77:T==52?(this.D4.dispose(),delete this.D4,T=77):T==77&&(delete this.O,this.T=null,T=34)};while(0==![])if(W.OY=255,7)break;W.gW=((W.T=null,W).mg=39,W.LC=(W.Rp=0,!((W.Wb=(W.isVisible=function(){return this.LC},function(T,f,Q){{Q=84;while(Q!=1)Q==53?(this.O.Wb(f,this,false),Q=1):Q==17?Q=this.T.length==0?30:53:Q==99?(this.T?PR(0,15,f,0,this.T)||this.T.push(f):this.T=[f],this.O.Wb(f,this,true),Q=1):Q==30?(this.T=null,Q=53):Q==84?Q=T?98:90:Q==98?Q=f?99:1:Q==90&&(Q=f&&this.T&&HR(29,3,1,this.T,f)?17:1)}}),W).Xu=(W.isActive=function(){return fs(2,26,0,4,this)},(W.getState=function(){return this.Xu},W).isEnabled=(W.D=function(T,f,Q,e,w,K){for(K=41;K!=66;)K==1?(this.O.D(f,this,T),this.Xu=T?this.Xu|f:this.Xu&~f,K=66):K==56?(this.isVisible()&&this.O.cb(this,w),this.D(!w,1,true),K=66):K==69?K=this.mg&f&&T!=fs(2,35,0,f,this)?1:66:K==87?K=w?56:98:K==98?(this.setActive(false),Y5(32,20,false,2,this)&&this.D(false,2),K=56):K==64?(w=!T,e=this.getParent(),K=4):K==41?K=Q||f!=1?69:64:K==4&&(K=e&&typeof e.isEnabled==\"function\"&&!e.isEnabled()||!Y5(32,18,!w,1,this)?66:87)},function(){return!fs(2,10,0,1,this)}),W.setActive=function(T){Y5(32,19,T,4,this)&&this.D(T,4)},0),0)),function(){TF.X.gW.call(this),this.D4&&this.D4.detach(),this.isVisible()&&this.isEnabled()&&this.O.cb(this,false)});while(typeof TF!==\"function\"){throw Error(\"Invalid component class \"+TF);if(true)break}if(typeof Jd!==\"function\")throw Error(\"Invalid renderer class \"+Jd);var m9=g1(2,6,TF),ok=(WR(55,((h(2,(((h(QV,(h(2,14,(WR(55,(r1[m9]=Jd,\"goog-control\"),48,function(){return new TF(null)}),QV),OS),16)),QV.prototype).D=function(T,f,Q,e,w){{w=66;while(w!=69)w==53?w=e&&T==1?8:69:w==8?(e.disabled=Q,w=69):w==66&&(QV.X.D.call(this,T,f,Q),e=f.u(),w=53)}},QV.prototype.cb=function(){},QV).prototype.yC=function(){},10),Mb,TF),Mb.prototype).l=function(){Mb.X.l.call(this);while(14)if(delete this.CZ,[])break;delete this.P3},\"goog-button\"),49,function(){return new Mb((e8=131-K6,null))}),D.requestIdleCallback?function(T){requestIdleCallback(function(){T()},{timeout:4})}:D.setImmediate?function(T){setImmediate(T)}:function(T){setTimeout(T,0)}),Sj={passive:true,capture:true},O9,rK=Y5([\"https://www.google.com/js/bg/\",\"\"],10),BU=String.fromCharCode(105,110,116,101,103,67,104,101,99,107,66,121,112,97,115,115),mU=((dK.prototype.mV=false,dK.prototype.ZM=void 0,(dK.prototype.am=\"toString\",dK).prototype).AH=void 0,[]),hd=[],Bg=[],Hg=[],Fh=[],ns=[],s9=[],D5=[],L6=[],ps={},IU=function(T,f,Q,e,w){return(f=Y5((w=(Q=(e=196,w=(w=90,15),172),8),\"error\"),64))&&T.eval(f.createScript(\"1\"))===1?function(K){return f.createScript(K)}:function(K){return\"\"+K}}(D),HU=function(T,f,Q,e){return(T=Y5(\"error\",(Q=(zd=(Q=(e8=(Q=86,f6&(f=15,20)),e=56,20),e8)-200,12),66)))?function(w){return T.createScriptURL(w)}:function(w){return f=e<<224,w}}(),nj=function(T,f,Q,e,w){Q=(w=(Q=251,38),151),f=249;while(true)if(e=166,[])break;return(T=Y5(\"error\",65))?function(K){return T.createHTML((e=213%w,K))}:function(K){return f=228/e,K}}(),VV=((((D7,function(){})(E9),cg,RU,V9,tm,X7,function(){})(Pg),function(){})(HU),nj,void 0),yq=((((W=dK.prototype,dK.prototype.eS=0,W).om=function(){return Rk.call(this,44,8)},W.Kc=function(T,f,Q,e,w){return c.call(this,20,T,f,Q,e,w)},W).gn=function(T,f,Q,e,w,K,z,v,B){return x.call(this,3,T,f,Q,e,w,K,z,v,B)},W).G=(window.performance||{}).now?function(){return this.hT+window.performance.now()}:function(){return+new Date},W.KC=function(T,f,Q,e,w,K,z,v,B){return Un.call(this,9,T,f,Q,e,w,K,z,v,B)},ps).constructor;(((W.SS=(W.fC=0,function(){return x.call(this,16)}),W.kR=(dK.prototype.B=\"create\",function(T,f,Q,e,w,K){return Ik.call(this,0,46,f,T,8,Q,e,w,K)}),W=dK.prototype,W).H=function(T,f,Q){return e8-=(K6=(VV=function(){return T==f?57:38},f6>>48),T={},Q=(Q=(Q=(Q=(Q=72,f={},251),38),3),222),K6),function(e,w,K,z,v,B,X,g,L,V,q,N,R,U,r,G,n,iP,Xs,Td,P,Z5,$A,ak,AI,gK,Y,t,l,k,Z,u,I,F,H,M,d,S8,b,Qq,E,k5){for(d=!(b=((M=(E=23,28),function(){})(),undefined),1);;)try{if(M==45)break;else if(M==8)this.Z.push(N),this.Z.push(U),b=45,M=42;else if(M==41)w=K.next(),M=9;else if(M==13)E=44,P.length=0,M=42;else if(M==17)E=44,oU(this,17,S8,429),b=45,M=42;else{if(M==33)return Qq;if(M==42)E=23,T=u,M=27;else if(M==94)M=e[4]?55:8;else if(M==59)Qq={xR:U,EY:N,timeout:r,W9:false,Vu:0},b=18,M=42;else if(M==46)M=v?44:69;else if(M==54)M=B==L6?10:2;else if(M==49)M=B==hd?81:54;else if(M==68)E=44,fj(56,30008,this,325),M=42;else if(M==1)E=44,B=e[0],M=66;else if(M==26)E=29,M=15;else if(M==2)M=B==Fh?38:63;else if(M==19)E=29,M=41;else if(M==84)M=b!==undefined?42:13;else if(M==99)M=X.length>4?73:78;else if(M==95)X=X.slice(0,1E6),x5(this,[],370,197),vU(370,this,[],36),M=12;else if(M==63)M=B==ns?30:42;else if(M==30){if(V=(P=J(this,152),typeof Symbol!=\"undefined\")&&Symbol.iterator&&P[Symbol.iterator])ak=V.call(P);else if(typeof P.length==\"number\")ak={next:HR(29,24,0,P)};else throw Error(String(P)+\" is not an iterable or ArrayLike\");M=(w=(K=ak,K.next()),26)}else if(M==39)z=e[1],z[1].push(p(429,this)[0],O(370,this).length,O(464,this).length,O(487,this).length,p(30,this).length,p(494,this).length,p(82,this).length,p(434,this).length),m(226,this,z[2]),this.J[331]&&Kj(104,226,p(331,this),30008,this),M=42;else if(M==11)this.Z.push(N),this.Z.push(U),b=45,M=42;else if(M==77)M=50;else if(M==51)E=65,q=O(336,this),q.length>0&&vU(370,this,ag(2,q.length).concat(q),48),x5(this,ag(1,this.F+1>>1),370,87),x5(this,ag(1,this[hd].length),370),n=this.Fu?J(this,30):p(494,this),n.length>0&&vU(434,this,ag(2,n.length).concat(n),64),L=J(this,434),L.length>4&&vU(370,this,ag(2,L.length).concat(L),65),R=0,X=p(82,this),R-=(p(370,this).length|0)+5,R+=p(48,this)&2047,X.length>4&&(R-=(X.length|0)+3),R>0&&vU(370,this,ag(2,R).concat(E9(R)),53),M=99;else if(M==25)r=0,Z5={},M=7;else if(M==37)gK=w.value,M=97;else if(M==97)E=21,gK(),M=41;else if(M==78)E=44,this.U=t,M=93;else if(M==52)$A=Td[AI][this.am](16),$A.length==1&&($A=\"0\"+$A),v+=$A,M=0;else if(M==28)u=T,T=f,M=1;else if(M==16)M=B==Bg?25:32;else{if(M==79)return Qq;if(M==32)M=B==s9?39:49;else if(M==38)Qq=Kj(104,226,e[1],30008,this),b=33,M=42;else if(M==55){for(Xs in F=false,Z5)if(Xs!==\"t\"&&Object.hasOwn(Z5,Xs)){F=true;break}M=62}else if(M==64)E=44,w&&!w.done&&(g=K.return)&&g.call(K),M=84;else if(M==34)E=44,U=[s9,e,this.om()],N=[hd,e],M=94;else if(M==12)vU(370,this,ag(2,X.length).concat(X),166),M=78;else if(M==15)M=9;else if(M==50)M=AI<Td.length?52:98;else if(M==72)G=e[1],M=74;else if(M==7)E=61,Z5=O(485,this)||{},r=Z5.t|0,M=34;else if(M==0)AI++,M=50;else{if(M==18)return Qq;if(M==44)v=\"*\"+v,M=98;else if(M==10)Kj(104,226,e[1],e[2],this),M=42;else if(M==69)AI=0,v=\"\",M=77;else if(M==81)Y=e[1][1],l=ag(2,(iP=p(370,this).length,-(iP|2)+3*(iP&2)+2*(iP^2))),t=this.U,this.U=this,M=51;else if(M==62)M=F?59:11;else if(M==66)M=B==mU?72:16;else if(M==93)M=b!==undefined?42:53;else if(M==73)M=X.length>1E6?95:12;else if(M==74)E=81,this.AE=u9(16,255,0,atob(G)),this.o=this.AE.length<<3,S(110,this,[0,0,0]),M=68;else if(M==98)Z=v,O(429,this)[0]=Y.shift(),J(this,370).length=Y.shift(),O(464,this).length=Y.shift(),p(487,this).length=Y.shift(),J(this,30).length=Y.shift(),O(494,this).length=Y.shift(),p(82,this).length=Y.shift(),p(434,this).length=Y.shift(),Qq=Z,b=79,M=42;else if(M==53)E=44,Td=E9(2).concat(O(370,this)),Td[1]=Td[0]^60,Td[3]=(I=Td[1],k=l[0],-(k|0)-1-~I+2*(~I&k)),Td[4]=Td[1]^l[1],v=this.pC(Td),M=46;else if(M==27)b!==undefined?(M=b,b=undefined):M=45;else if(M==9)M=w.done?64:37;else if(M==85)throw H;}}}}catch(YA){if(E==(H=YA,23))throw YA;E==44?(b=85,M=42):E==81?(S8=YA,M=17):E==65?(b=85,M=78):E==21?(k5=YA,M=19):E==29?(b=85,M=64):E==61&&(b=85,M=34)}}}(),W.ap=function(T){return j8.call(this,3,T)},W).pC=function(T){return ML.call(this,20,T,16)},W).fc=function(){while(0==![]){return j8.call(this,58);if([])break}},W.XQ=0;var uH,Zd=(W.MD=(dK.prototype[Hg]=[0,0,1,1,0,1,1],W.tT=function(){return C6.call(this,16)},0),/./),xC=mU.pop.bind(dK.prototype[s9]);(O9=((uH=Rk(44,48,dK.prototype.B,{get:(Zd[dK.prototype.am]=xC,xC)}),dK.prototype).bk=void 0,D).knitsail||(D.knitsail={}),O9).m>40||(O9.m=41,O9.ks=jw,O9.a=p6),O9.voZ_=function(T,f,Q,e,w,K,z,v,B,X){return[function(g){return Un(12,false,g,X)},(e8=230/(X=new dK(f,K,v,B,w,T,z,e),f6),function(g){X.fc(g)})]};}).call(this);'].join('\\n')));}).call(this);</script><script nonce=\"qsZHrB9u_6U5HtvCRiQKMg\">(function(){var r='1';var ce=30;var sctm=false;var sclm=true;var p='voZ1NDBFygOTuZDpYVfa+HZNwIjHQA1j0GPePUpBGuYu3y7ZGLlMQyG4C6L+MoNddCahV0YmgEjZ8EWz+V4t96E0e8hAExr0ggUXtfu2L1KGw1AcJdXBYXGieCF4IB2npsDYpsqz6W69J1AqjHtSFEZUzdKyb0+2oumff7MZgUSC/c3UF2vdL0OmuN9iowdXJzJf1184I8ecyTj7Aytj5Eb6J14ldq4d2hK1UU3wjtA1aKwxWNDnpZtRMnn79DosIPRwCCHpjvRfDegD8iRafKCitEkjSL+QI3UaIsRli8A6dbwTNYn8k3f6agQfr5gd7RO3nppR/gwhFt9HtWbMvjGhoTBHzid8lqwAcT/ybWvTFh8JYXBkvF4C9R1pezYx89gOJmRi3UiIprpnk/KeEcv4f7udMtYy4fkTNbEok/ab6maWwJSFy1Hvx8mMXZPCooob4vHQJDZuR+b1XQQGa9rbzcPpk343lTlQrT1B8A76PAmO84Lf7KXGhsGRRCx0l6GXm45fllnCQlVwGsBr7LRiZ/E9eD9WRYuwBeRk80Vz0bQbzPT5wwQMG5AajW18CHHMSXHEb05r43Ikh3VzVRvpCJMxMRgbOESOQp1c0EN0PGlam4ki1Btd71oMTBwEo21XbXR8r8/3q42H7gx6SiArHcL6KK0u9DxHa1FBoc66+WWt9a5IVC7gqvbC6m5BK74cH2n2yAMAKB+DfPM0y3LcgkryB4pSovRlq9LTlh8z9MHN3+j+JdEHIxgFfivx46y5vbAgIkSdNbvH4I2+9myiaBy2FQnl9K7XjPslOGU04Er3yXnF8ew+0+gDCabX0mtawIkoTGvrzmYighdFkd/d08CCBT04XM21s6yA6s3QlBdhhxVFCO63iXf6IdxiDwMOuQvJTvVdINVzAO3qloiOz1bQQdtQNwzLgpulSYnD3OrgGFvZ81e4msEckf7bxlwCtoHc1Q3/97BtgEXpFZ2nqAOxei3kU4widsaZGtPMZUb73DQJ3R1jBzOzTOUNa0IVIwhmand5lpU+AA9VifG6D98JaRB6zJQIsK6XhPQYljxlB49LcSKdEqVBXnpEx/ox0HqvzbmRJt99x/PCc0k0o/xvCLxlPvxxZy5bB6btuQgSQZ653DLogFmNJWxNbiaWJViNVOIV3ItfVNZ5w6r6btPzA5TVV2UNKGYgPn0Bpq+hcj/h4VeP4Yd7ifSQeMHp5nx9F0q+3k3ers9pTCqyBQXBEK91FDk4nX6kNQlzpcCESunkAv8LvceT+VNnW217kk32OzRXCrP8fdbKKwO9x9Pw0KccO4aCRFqKWC5tnael7TjoS5VrwWZFocM54wEZiWnSynXJram5WQdL7iip0WetaUoISePksh2nlhHMNFB6cw92BamQfnEBLxBwhBU3z0yxBznJKswzr9/fX9VsLBLe8oGFMfOhnq0SyhWS7XrFqqmVYRiEkTmlI3GF56DmyK1pNqEIdYB9mYTzwtj/USKoreeDgQ+1zRXQzyz5F8udnsXb1LMFe3OKY7GnvMfp94c5LY/qMWRaTRN5ifk8ntPVtfiuOsoqCNltmveziALc5/mXWs+NAiOZ2RJpt0uPUVyEkaJBaUxxyB7+TDCjVWkx19sgCvDCz2jkgmO2g0KbQIBRro3ReoNG8Qz1tHhmJ+Ch4pRcXHx8lED3pnygzrurBz+xyK6cJT15wJcx71ATiI06EYTJ/6DjHdrTLwTY70EvMTqZui1+Bal3DS4C4x0P88i25kLX3HcK5EgtvKlVxOQ4FqLiTSVFO1CxcCixER78TcjYK0Tz+R/PHRSBZ29If/AzXXs245b7A1QpWeIQ/79sX3EdaF3nTarcMF6w6tJB61e5WMlX1pPuZLFc4/bmQ6rSBxANufWucvtYGDSdeawEANY7TNeT2Oroym8IPJCgcvUe4xyH2LseBr2LbFzMggBN/Sl5Z3tpdJgimEKvM/boDEbnNOvk5xJXhTPv1P/f4cZA99sfuduIdmHCOcYE2eMTNO0WOW40/GIt67X9PpCZ9fsh1XhR3gOF6BxiyYg8eNds3mzaEc28We/mSle2O553D1bcZuAQI2xGpFaxEhPZVO5AvrHAyS9+XO/+vwccmC2zXnRfQbDYzCMXAtMX6e/WGXtBHctN4HVhMn9dEn+yh04Hh5D3unhP8Yvp237fV4YZpaHFPO1+0YID+Uj2LsBpVXoaymRZrmA+RJIajoTAiS4DF4giKMs20XeXmqxL2CUhhQdHdwWUd6B5A/D4NPHvfPoRPRsOOyEGWOA2QKGWpT0UuZnzzhyRt9vWqJw2SrC74QX8Kg/a5KvAAXiFMLNZaqjN8slG4/lJZIXKQIyv9FWBXJNPL/eyOn2KqG3F5D7tJ7/WayCe5g/dVorBfChqHwv8y6e1pq9NzoDdeCu8cazC+48mukzYb7oDtF/Kq2wcajaQbxTIb8REom2/3MaEY/iAk4FN8oVKI/PelLfDg7BD3zWEnThbNVr5W/Xa0HRjPU16ke982MlJI1nLl7SF0VTDpY5XJPk5EZAJwZq6GuLx2Q6vrGC6bCLFBaI16gERllGItyNVTae/u7xgSuBqTSS78iXqVQLAYrckr7HY9vYzO8buMARIdor2/pMkPrwIHGmHcIkOMFHHHDL1pYb+bFSbmiQJumOxKqMRKnet275tiz/2WNY4guNvMeZRZk7WWu2EOljQf7dFaibzxLI6KomGNqxv1dVKpLYTqWfasKrpkYiCthwjGM6F3BRR4gZPQqgYXkem+oOPvJCuTZjYjnnkbwqdu+0oI7vzZ1jSoduzT2FN3sglrNlt51kLwtQasV8njJojXoNv8hf2KYbiMDLYE3ZiQ9JDKg+v4motiE4BzM/hHw/prgfo+vY5PT+AnCVSUN0o4vuJSz1PYZelsCTd/XiOCJEfR9kmWnqisag94XC2F6KUE/ZyLiOxCmXqcKVLCEV/Kg3cO4B44VoSMTWviE4nK7vCgef7amv62V18TO76LDmYM/KzXmvv9hAZ4HoD6aKhQpD0ReAH9+JA2Gq+362fPr6+56B3UJ4RcQXKZJjO+j1M8u5gRI7HlPRGhbVUhIqw0P1Q9NshiHcju2sksNftMCZ4wP/6LfU1l3PdIu9NLc/ddL4Rg+QoCKewQ4qycn6nVjIvROGS0evHn9PlmfCf6bxkzgnvIKBwG/xJpvcV0EscZYzW5Em5zr8Lz9o73Xt0bMEFhYkiIOgNjGRAHUIlOw9IogXpk9Ji1oDhg8jFKZDwb1HFFiX1aEM/AaHpl0prUQ4Zwu2w2goo2ay8B2VIV9QHU+1T/I72/j6sASRT5svoT/OUwSzvWmbQfYS/apujCF8UE++kzKayMQD9O+u7XDNeXbJrah2AIUeEqoZG9MhOcRHGDGl69mddPQEVMiqKvq+t3r6vzzlHE5lCu/4n29H9IvkxkY6vP1/4X/4jcR84crTfdLYWrmN0gXbUrMP7MZ0pdQTv0pbrdvctuXrsAcCm+pMf1iQ/GzsXpXSZbNiD45JI5Z7WWS9Vc/svItAm9Ui/zYmMRmmJK0Zi0OBCt0e6vVtOzi9KMPbGLKIMKo/9UPtJpQFQ9MMfiFOT5ExwVSb6uVn72iS5f+7ueIzUafgWUMscuv4QiMHGknLepjiLXEVYOdZhABtQxQ8wWBCTGvu78MjS/2M5OJVPJRUfulvE2lhjNHsUFmQl/OSrOGTLmYls4k1whwXm379wnUyP7VZQL10/xA8zc1Lfo1bwjcDrdr3uANuX0BY2PLvBM0kq5+y7e9eQSUCwgEjt0PN0IPVSQWBxqxtJ3xHgEzs96uKtNUwO28Kn382nog1I/ryU7Pa9yrvSv3lssphgP9te+CxAeRYHz93eU9ouVjp8+5yvFNv9vTlYP/4hwe7zEWI2csRbYdx5BajPdxFNl/V+r9pfW+/8PyWILYnq/uAS+mTv/pRt/GPlKTYie43lDSbQW/oLvuzvZd7nGnAcbAfYVzjpNIqqrJIrKAvMvli4parJX63P10vXFuu1ayUKiwOCGjSyJlRw9i5tzEE83/sPUlWEdR+2wGm6bHgM/6JMuDDuMqTAIKjPLy/yRPfRVpi9XvDawaG8OQ2DenfKVlgmYq4p58toKNFhKroUVKBHPlVtWST+34h7j1lbuo+v/cfd/OeYI/TRWB8+ACnvaCabceg92vvUjBuHilmDT6umlvDTgqaCfiqkva1ubAQgDgDqZnKbTgbbEuhfD32W/VAAUt/VnUmQJzWTNJpMMWaNgDg/Ya37ZGHPUlSX0QyikDzD3tAjVaEihNTdFxB9N3x4x76qb4KYQaEOGVXsZnqxkS4PZkNQ93VeMhdjsFjVoI2rpmWbe8/x+aR/aLHazF4mw9hFBJqADdx8zxzC5XIRPhsdSZnpc8ybesCmAvBsJbm/fgDTNUb0tn8alDV9QJoXc7ErCz58cVNNtbkqwvFZDZ52hFEi6FzTU/9MGZkX3K4K7DAyhcKPFMnqTVE23lyqwR2TqCzMzc9L7Et7E76yucPENtpHUpIjLLn07PuOcCWSywV50kLsSkQa6GgxT+dsIYvOUw/tAuE2GH+B51huKt4ixKeRlahqMtAePoXphasRb2IR761IcZ66BHhLI4XlmQeB7+hvjKHt2dh7MupYGW5r0sUgPYu4CEqRS0JBJW1CdDyXocJYsrfDfQWN/SVjQCNNdT0sFa5/ubR2/1QytgohjkwolpCWeyYb1Er+vdpY4UqBAUn2kprAd0t09Q+Oh7/bTOLTba8eA/JtsKn5QsdFeDWBaI0DP7hNMCeBzvMvTA8Yk2cezZFoYE5t/stzaTevJnchZJJAUll6vmfCSALTqtIi8HDNvb3odEW2DM3oXfN08+1DcBmM7pidspFGL/XtSlssxkSVCq3ymSvjII/wqfrZVsHxr5A/Xg49oOU/SiOV+WiZ2eDyRieQVeBBv5NyDhpTaTvuiayKcxuQXZVV21XmRh7Cv1z7TaIaPUnCNf4zU4UmViioNMvHUN9k86rXC6JcW6GRAOMu7MP0lqaWkaD6xnzZCmkvd5f7dcz+0Jq6YWgp2r5/OWP6VN4myQ9lpNiKcMiWMsNgFN3eMIBZOwTtwKZoUS+JA6QCb+OxN1OGGwDvmMY7lthMrPllLvbP4n3R2D6dEHc3+7aExPkx7enbN3fH+s32mjmSrpgVHPM6DBjEGPMJ4W3JyB9tevSYQ8nnT6XYnNtJGpLMPxOvUeDB/cZ9YxkJx8dkCNKHMKyMeGt2/GTuevh+tKLZahkyS8Z95WpblUxsHF8l7d5+eC8j1JaNGmsy2bTbdUaXVVVRuX0a63OqYhdS8AZU+XPv8FD36nwVxOT5jN+CEUMoRlVPOGmRFNm7H1Ok68lbbEgm74Bcg0XaV7OI6YYUKKJc+7c4UU/6BTITEFlJrwS+2l5xs5nOJQ/xGrbxjVw+BXMe/GlTVYYKyOiZnk4/cVp2/ecknUZMp/05J6uI4ttZAW0GJeLdvveRY3OJT8oCHkj4j7xOM0XOtn66LXrxbxxrYRJ1JjxPc7FrQbcYYOlA5VQ84C+oQ5qICFEMVSY55//xi85pzJzNeLmKVeI893h3ocHROaaOzVswGHaslLQIJgrCZU34dTTt9es214+wwcw9g16kn/e4wzJypvj5Z0I+6EuIpyZwMarId8JmIjgwM/SXF9WxK/KUkWvKC0+9e1WkzRCiYU02MzMgkyWgDgxnawC7VGQKb1F8HFLSRa5BtirSNgda4/7rd2vbWBql+qDMOJ0CdI3qK0t+dITYJHLIY2C5NIfYfqKgI2TkxJytKwiFC9baN4buJ1+qYrma0V0qTU82k1dm3E0uNUjKDoN9K2WWdrRt5GI2mDDq0/a7XyNzxZdPMC8snBQ+bnvfnXF8s+f/FVcx8oi4AFH0HjYvZOKKALhqrSiXDnzZ/fs6CUCRBJ15FwGCbS3PqgSm7oe8fY23lQUozR9RNpWA0Q3OqZBZaycmgjhzHfbsVsXzqDNn53Q0A5ScCj80sko905g7Q7mseKj9D1qTLtSNnZSPMB6NhOBUOz5SgMDgBj8laJ5Pi9LrCreMN9O0X6KLU7CRu3r53wUfA+2b1eGZ6T405N5cGQxbaENbO+xYKTuKzlPE9PhQGxWV0FE5JKlC2QNGgxf1LPpP2VpE7vWQZ9YRLvm3/W2QB9kwc5CwkL8xk83rSWvEqf8Oxtr9EmZvH/ftSY4yLXs4gYa+25RB1pNoudy9bvfre05UvTEyF4m/0l57hSETlqAi+leMd/TTwJbl262DzxFmg9Qs/eGcomGx9PLWAY421z5fjDRlNyJ8pDhAlLrQ0/Xm/3w7pO/H/qbcDQ77hxn4H3FoL0FdiMPzdKuQyxaRuoMVbjiMMdArom5INxd/Df+cboQC4mqvTiPujx1wDhYSDA181+tidGhqxyOs1py/nODtjwqcYlNM7dbR5ITcW5Uj3SpTQlCLHQui5kYeS4xbRKMzC7yEZXklG5LJ5pFJJ2Xpj+Z7fyO1WgR3SfBwTlmoYDUY2IhDbjiwejNVzpTOGM1r3ikGCxX1LynbBLoFLisYmdTpoTdsSupI9oTTw4R1E4q3ely2txR5BuN8fBP57FwEcNA7J57kuwK7d/bpfE4qwYwn8GkrCdZEkSwa7vpBTXUa1uoQpgFG2sqvER31lc5vQdT5wZEWk5jLtVwp1P6ObdUPpmZol9jSNWACN1OztXwXJCZME5efOsMFhuhLOUjXQecq7pXHRMB/fWNGKvR+NStWreExxR9XxKyjDuEHoLH9kwn93YtdL1khAWXp3tYs04+pctKg2zKGMWkiXMviZOXKwlDxfsKERlbRo97al5bfjD4SRO/78fTLYBFhWdG+Spw1lSTzQDtasDjAY8b3ltL52gPtWRICh4mMlBtjQmzamKtyVOxyZyNUjzBhgjMM054Hs+eE0WBHP8Tq0k8Nw/g3UU4VqauSdMv5XJ2Y3B0JN9gbSOsixNKZv5fNoFsIgiofVmDRY7oHrIwE/fpVXMoR9/bFXVwnvw6UliwCvF8RVpHAS5r5ZcaAgSKPZEZa6Otjn2Qv3waNSnUM0TRb0tMHZva9UpfuUAGEG5ga9Lbz+vsUFlYaL6sLoDr6ldtPgxhbs1+eKhbhLhn9WMKkbbV1yquI6FvvrYo5EGFcTXMI77W1O8JAgmdlBBN3YuxjgjbSy7uVHkx2JFApr7rjEMhYOeJKcdSZ15fW92tZuBRVMPNys1NPixXi03qJaiLD8b4ViFBKp4ws/nHk0G3u484/8m438Gjic4znP4dN7HV3lywv3zBOpSYz9PZZBSj7z/WsNgbMXS7MtUHnR8O5NpiJc1AJJrYUHUQc5ORngy67d9uLwqF7qa1JpIQGYBkG8+cVrXtR+Pi0phORwqA0pDFlMaD263RfPXE6q4WkYCQ2ahZ4bajUbEyrynqb/Xy8lkChzBrqRLzTh1pCk3E++RdGngvLLs70Ywh/iH4eSF6dBsAUm4IdRHuQGBJFaAYtr0fR75Ka3vIU1EGuv7Nv+Y21aAQ73Tp5/vuT4ACLv42m7XsiLf+numUCyADMAowpIe0h5j8Emip+k5h5Exi+9IGmaiVqri2roST8ZcMtunzENmpAoFjEHvY3uNj9REzvT5kJRPMesexA3ViYZ5ftPcyoBgJNbGWBrMq10PfyKMrVlcwfkpeB0jOv7ggUlILf5WlIieVhkXX5AvlZ0cC79G5y3B0oNgG9pMgollX0GdXNbLkSGXQg6hWPO2gVNjYNZy2l/HxFqwnxfbIUpg4K2vwh84g4eNagz3QANK0QXH0RcCo49zyuk4qnd7G0tleMNJ170F6a1M36VUcVASLXq+RRQeDXTadb8U6l3x1DBJk/+w4WiKIAxWyhkGkMLRA8rAPpDJWMh1f8naezKYHlUFiR/UMeQK+GBNNtMykm4isLssqNIolCwsfKU4rsKhQz4Rt5GHk4pyA2GNXDCQgiaaIrEqrUDDIO6dmVOc/rE5a0O1m7hEYcrbtKu5craGA3OLNoV5/dF84QrBACl0g90GP30f/sD7rsyXNl4zDwV1xxizUhQD43C17uL+lVEZScccTX/kt3s7giNnKI1IeQnafe+3wfZgLvJxGmiDLIFrmAyuaoiKKec1CGa2d6BjHzFAmzFQR8unTS2uTmI/2jiZb9iMhIYCIh1P8mjxO1mCkSnCRiqHNFRnQSOvsE+53ChDH1iG5Yz1XedhP7weU06PDqAEb9QaaSPhFD53KT62NNfnlSo7nW1hEf5n5YHirkBGW0ZAht86aqQ3sQxvqaXcRwXOfeUvt8nrj5v5E6XKKM1/59uDA3HSIBD8rhbk3KorIbze6zgvZvoXGlfqKjOQAsOfJn1kGgx3s9okRIjZVegIrx7lTeGLG87GYucun6PBdzYkfNTYAr5IqxQ6/yed+Ss5Ytp2dWbgxVTnYsrD1TsdvtqfCxumkkUNGw4iovYd1Nz/5m+AeIa+pCzMoUgoHh/WYt5i4ks7RPzjvYA0cCZT7eJF8cYMxjLCHcW5qnKRmNCC6TM+hiR8rsp7+Tnljxz3Rq0jKEwiNCJQDw97KpwoyD963qGJx9P6AjgzZ7+7yH+TRNtUcORjVguycwZITt1TAMrriGsyeEVDxd5JB+ZJyUU80SnPN5Dugo+BZsywLueLu+Byu8/KEwYCImoPnwdpjuHP6CghSkrV0+GMIprhCnh0CVgEMTJsitkRz2fpLCO/YO+7MBZGUUN/9SEcQwdkjQT2Xs5AidTXFB9MKgudD0n6qnqyrNQhrvevzaPjToiogW33DrYUGJqr+m7ojKrjUnok/WwJU4ksVazhYlCkl5jWmenlyBGYGw9HVL+mqk2zKHFZMbwLyXZ2LfHrdHnq0EC1J8TOwrJoZWPQje0VFbfzAMxbLvAfSmWL/FfZ+A8jnBIPYenkEe3Nw8yasXzNGjlDkr4qzRt6vCb/NcOR2dXApXp5+Ou1GCObBtesbCGHYsUSTMCXHUmk4TC9vuakn8+3qbMf/T9GysBSrwi3NCMS7yoAW68MBOMCVXc0iUzQ2aVcvySn/Wt00VAzn6WzDUT8+qWL8tDxTU/jFdCs3CJIrEEEmOIXLGtiI1QLmM1bvEhHDMNE5aqxPBs1uzWX5GdPvK9nYtPJGWba4RQNgYu1YYYN8Y4BlPJhkBX7/110JiZp0Q4h9wfSbaTAnmXbCQrVf/XhcuPED3hQuQXHWtJee2hF4rQiXicqvvKlNy5+P5iU0Quu1nhNcZmqtEuyvAw77ajG+nJLnNr78uPjwY1Ry+G/PlGXSE19GGzo+gFPU9dxxG82HFFOhfVwvctSEXrCwRixMQr4EL9TJoHP7VfKsErFiKVXiQ9sGbEAwIhNj5YfOGXZcck4tKP3nLRu+ZBos7aAX3RMIJRnFxMzLx3/CJBHEiFN/to60w+202V8trjSOaSMdSMCqOIA/5Dho/giiYjsGia11Fu+PVetwEFUvw1cgXDAXwSZpzU0RA56wqWrr9/ulnK8SnfnnUVUI8cFF7FDtbedC+aUodfHH7OLlG10i6lH10kNpUPXn+IvWwbzzC9zOn+1xfIpNUQ9fFZeIIEib9kzMyTlwLJ0jXRZR2eDd2MZc6mRva4r9iHqFaDgExIWyuguS07+cdHOYBSMgUFn90RRalxJPxwkYaDgPkCdvIWdr6VJag6O7MFjqEUaZfoTbTX851aXlB26W6EgjeD4IM9Fw7FGDnkeRouYl8Nv1YZAeEGbPUWoMDTZalloeuKwUBYI9H2v3Kmb5UkH7+uI8CphGvTGklVk2aGX7DtptQDGRIS/ARRsFOpyST+Jyl4GBTBFsWWDiLmwi4oIGGpTM0jy+3i+AwpRxDTPVksgWU+VgbJAPWIYnI/WQwZmT5QduKM7bWx01kekhNqEzPB4YgaC/HU0toeftvjDL9HKQu7qZFf29btwferqY2V7jdTYY5xlVPVXGj48tosjWdvx8tVmOImeTMty30/t0m2SN7MXuTXO2O7P8PF/tAMhlqV18EvpQ0Hp0qhDmR1DyIl+5jV30bqLI2QLkLQ7McPxWCVy4n2rdlj/G+613H/XGZlT0ILFaWJu/NVcXMHD6Bfj/qfnEOlJynwc+SKKi8f5G6sAWZO4WedH2khqvkfSGeLyJpb/M8oi1ZwSaqVFwFv4By3aHv6lygco4NysOGn14FadEA8ApF42cqRdR8FxXLtZNLwdTOJ82bayQ2hKU2HYQidEuCTfr9vw9BgREkp3+yvrkWWXFnzfxerqnY5hVXR/nDSqgSfWNruD6XI2lJ5JqW1oCq6DkKfeZvM355VboO58k0ENOvKVGDU/wQddEcsvIXFJZHs20q0OHMlRu3TkZDHEhn6I40OHSxHuiqrpz2hFvq9wYdtlO2SfwgTuX12nwe6XZsf9CubrgoNA21jI8+3i6nLjqsx8CrfB2HpGSA4lttOIWO1/CUfKqC2l9uj8aXEOBhvJJJ29hBAAMLowQ2L3vFkDS+FmC1eY2Hls2p7F2lwimWdfLlyu35LhQNt2nmb//aTQAyZvs9wauPiZhUtqopVUWXzMXXeif1Xp1eUZJIcSNeBRierruSupJEtq9UI9yuuLe2geBmgAJDFpE9f8ZVOikh2go4E/42Ze8birrQp2nNZZPmG6r1Cz7gw6qruaMnmTJKJgUeX7WUPHPSRHFCBTal2TsqHfmbeaAJIppEdlXLYw3UNe5x3trTRYVMPI4Abgs5youbNb49q3ynXX2IGBvS2AMv/32woacgduL4qdDXgZJY2FX016i3pIFi4eCLvPAsvCgHPHQGT4nByGqgKdB5NCgk6aPA+YJ7hStq2cQKRG60uqyQwinXRamblxzBmWCOUZcr515Ix16RAO4bzbxO9Br4mfx/RbrIcKFm5cSt0S3EvNbDOOPpjE7jUp4pW+ukOYB1g3TNxA40ZE6OszQ0qbtHISOI7BQpvwPZKf+nAGUah0pohg98wYDPEHcbYQ5VqjFBIpWbC1Nzo0bu5RZBqrKwkM0/bjkkm1WUixSLb2LM69laiaYBUkqLzalEJsxKLGOJwoyP5I73fDy3UUxfA+JFIyWqzhxFYtkF8ij+IQeGjwGVKyrh4cSLD/MOcYE2tZQMumv5F4mbwrEDfq/7ggDeYDRV3YnU8wJ6xtvc82XC5uCRIqrGyxIH9usvqmdHlwC95+7zqc+hO9Trn/N8QXsLM+Ji8tnfL3cE7YdzVRzxqzrcEa2CE7rqZW/oOKC6ARDDC3odeNGQIN+GLGbHp2vHddx8l7D5mKvP6DpeTGImd8qlSBehS9CDJNtYNO+Z+DCgg/aOLtOlqJEGO+pWJuE63xhkMoBKkePBHSj6mUD1/1X8NaN4lwdlz2BnFldLrLgEdFcndJxKV4aXfC5FtOuxiw8yWmIoKpCl0GcKYs+DDwGJskWpADWgP1DpfaMW9XphbrNzSdfDZGff9lcfOVKRcFr1H1+Q3US7xvrFcLDdNA301GxwnV2oTlTIh6vt7s7kceb5DzjAII53aomAN6LQc2QH5YsVT67QfGZsB/dq+lVWtQPOYC+OjISizW/Q/tFWmAtlVB/r2qpAvRWSRu/rZL+nmkWf08h8fCCHHB9mVqT6AV/HLKAkaDxAZF8RkOOxD4oWpaM7/B1F3VCOmb12gFNv/8YEGGEkfxrE2vrg67aogGrM32ECXFXZs27uYJ1anfFKO8xKU12I8YDArSl+KeMneAVqwuKGIgST9mQxPDEBTywY8x+JgjM5wx5iVoOjonK9W5o65TwRZd2bwvx8v+exBNTQqHMBwbmi19LEb5aEf9K4reFweTYJZD+F88nRAiLEn8raR76tlGX0BKTkmHZ7l5l3jgRIFakiThI6al1APV4dUl1YXpkdebEYsLQ44DbSRF1z6j0FhAfZM4VMLftXoA68/FMO3iEHIHsWmqyNkrrfb+DGsYZZh/3LhIRZNi1Q+Pyldrp4VX2bhi671QXagzoxj8QcmQOEjYUDk9lJ2kAQ1Tmn0NlfvykklvhlGMBmRXkRIQVxDST9Zz2KxAA7i0oukQaNoNYwJSLsL6AXZvuqN+0rnIb1yRk5gJP4G3775ss1P/ppfDz4nGssM8EAhEFb5R3hsaDmK25Ta70gbVNXq2fyBWT//OGQ2XiPrpv+yPi0hCR70B6MhA2T42X0tW1fQCDJkPk7+s7L74b+/nX6re8lKgAFXCFBrmWJ2aPiQ8iUw7PP1iTMFueI23wvEc5TTyNtFqJUD7l2SI1dMyY/7HKWBsdAiXvKb0Xcgwzln7Cbij2kXoADzkkttvftmDN1zsibgKQWZhFrMESVV3QHYKn2Z/J1xK2CJjB9dQ5l6QTmLyj/L8/QaHXcsbizMr5BvsFoOrPS+V6dg/a70ZbmOKL1CCzeViiWx4GnBGVnw/487L67vqVkLfcsp058JCqlWBXrUXrHNQ/Hgoq771TbRQhv5aBjqjBD4+5D4YmeRNelbf64yXUQJzYInbj1XpNxpkswxUD2WGof03He1kdjCH74/FkHcH6SYXdEXMdWxSVyThEYPlWW864veO8LC03YMTNOE2O1oZo5N4qGoNSqP4s8oQAZdQt99esEIG/UfQhtmTnqAYoX7D1oIiyJQ6oWgo82LyMJxQYxFyx659U9uoEjs4z9WEf7EOfMOHiLeYNZ7bzQYjB9su1SgPPbEO9Wl0Ayyb6zslrHLl5TsK+U0HkxhsmXE1rW4zA5FKVQJsU6MhLjsAfo6/x+qic/VWlajkFDEgfrZ0mRXkAmLQfD0luAbc7LO/neXAKPOD8ke225TAJUpbivyuubgwt1nMSnEOopk48CMUHOznkNDd6g9eO9RZBrkcR1KEI3HzO/HAqYSUcbhN0GhbNZuucDfez/xf8WiDpXBO12uIjQRxp7Na1B50MyUFpfPDf4Z1Igsf59aJWAMLAS2C3m+DzPvHK9WhUHAiqXgXIwZHFA2Do9pEEcNXKt0XhKKDmk2zxOzOIjgThxjWCHIVmmQc+ckTBAFzkwsSroiY4U8y1yg27HQThNW9fiKLx1uu2khHtaIdZ1mhrfE5FMcMXLsntI6XAoNvSK6wlKXX/4W5Vp6jlsl1cTHwvN28qBL3W9R6SoLQ8I3egv8HotHyQ6y3UvJBoXgYRTcHs0PYXl2eBi3MgSjb7xvKHvstvEc0zi2RbcCrLWCfvwGoigcHCXGwRv0E/mr+vFAvOTPc49nSd0lJuzEXJxOsbT21fnHOugPQ+U0bvBeerYWLsQLLBR8RNUhvgtpqP+cTX3ABZCvRnjgd9AzsrnQDfMkX/ECAWvIe8l/cVpjHzsufVgXHl8Xf3tasVJDls8eX5ZjcsQKkIn5iQU/wkpN1d4TsdPJwVM3dZdvDSE1eD0NxOAkBP79JcOxoS6RfND5ZBhDplKFAts8ra3adQOfhqzv7LNBygFQoEEM6xLvXbO61Hf1hDrOvYAwPoVwexcLaRccjHwjL0P4LqyI7ebxbcjh3ctSnOB7HRmgH67b9+8wGAyMv5gsfMVMio93WD2UhY1Dq3yKaZKZEVbiaub/9tyBlF+jso4I1CtZBqRtXQ8Eg7aJd+qa6MCfTs02CeUL29tlSeOtbjLe5nVV8930qn7jp4XRqxTVVTIR6whWh4tjC8LLgQyOyTV2SMJBcKvwCu8e7ecftGgoJX2dCU2D3YLehmGuIbts5e/MuveGLkwU2RoXvAfXqb7n4DbxU8lVB0vGu2UFDeNLodAzDobtiGbMemjIO7UXNgOfQ4oOfvISDVQQyElMwz4oF94+tT2Yc4ULmO8NSmFKZ4mask+8V6XCmmQFYzdoBf/gBjV/6k37GXhK2el7nzqKCMAKHEaJ5YxDdrBcVbKiM+dyu/UHAc1xNpxQDF2WFNIyyTTWT3u35QM1IVc08hNtGrgCkVMC87aKWLgAUrcpmNIg0gb87od1py9mpf8YOmr2iMzTHW92XsQW+LApHt20WMXWy5TQqHMO2uv36Rwd+CzLFFCI/0NKoqH76mJaT91kxCbnpm7daEedxr3lZLbOBhTqFoytCZWWVL4vxX5EEi4DkKtA4uXnXFKVv1lnMuntHGi+E/jabL1+M+oQ/HKz8sGUsCmGXuBSzCasxpmC7hkL8Wc3s04b1hcwqA/ivmZTjWM2Dt5AZLQhJ85QFvTRyKnJfi7HoRAAP5EmFkc4OdkvkagtifjfKrVka+HykVa3I7J0rJDJh2evFQaFKeUW25fVolL/bHY3RwBIgdMV+ncr9y1am1jeOVPut27LpNBGAARbFBPSVRGLvCTijjO9kDdKE4fO+Y3LoH7Pcpkvd5UhjVIURaWfsxh8aJuaene7DNFxLnWR7ZuUXVo6BOp8iR384w0vJ8smFs8Jjr7WyCo/tlkp1US3SGkSfO5EOym260XR2AexLutveDwmWgJBIfXw97wb7pFipk6d+n0ES0D+zh0RbvpcAo7I0O8hzw19F6wtVYq6EJwAF5uHacCpd6xsYMUgjIy4guFhRlR7iMhDHZ0w5pNWwf7qHxttDqoHFqmrwfMHoJy3DtuahdOTcj5gcqajfbDSWfB2ruKtfMRf4+rn9MU5E6y4Q0BSQ2t4SP9zDjXJjDIhfpS0Heq3g1uP1dwzxiz685ZaAqAiDm2wSI2UhFA6cJVgBl5xcDI0Drz6bola7pVN1KyoqSrhH5bP4PrKX7C9isvhkUkEqih7/CESaukbw5QWTLEKxHq5hRGOTqW4fIR5qxbwzaRaNUPWuUn2LUtupt78zh3S9/2B0Sw6Xfudux8oxk17L4LaWwwu74nLJ8faU4oQA0bVEt5mai/9/bqpTr6il1I0+OaA0OPX1yr8m5mPQEujT+Y5io00qe8AcygX+Eb5qdBhzG/fmMJlFSem8QY+/jWMxvsCU4+T0cTKCBl/pSbJwk9uznj7/eD1s1zEa1bOkOHnLhA4JITa2RbchcCcWfv21jl/896xW1F31rWtAw8IuY3dVzo777vhJvVOqmikvkArewjnWw4BeqET6Y0dL+MIT2FGkibKpsI/fPDbrVg7YpkMvsSVFF0rFa6KeP1E+ShwDz1gxIyWBwXl65/etcMyRhNS+sr8p7JZzdhSS3avb+ov3Tb2I+h12Qp5JmcIT8d7OMkCJe72+X5B0UuwySLk7uCIrS2Dkw80Jtqhx4+9nCb0IF1Ego7bs2hsuuOMMvynFB6A2slPtudhI+x0gIOrULqxwUeP/MA2Ab5yeB6ig0ojSb2Vgd8TdP1JfDJogD1hlNEj/JmQxB4mEg6B/N3zjSlv7ORmnAGzM3vS/mTjhr4qAA/tW/DWeCu857REKG2ityVuucv6HJBM7qEtnqFTG+rp950zy06PsR0FeXIURCeOR9JHJ3GzlLGMHq0EJUNNeaFdb7nJawMPUyo6z8y4R2hE0f4fkvdQUb5OefK/akWt1fSu11MSGNxdf4TztqpMs/8X4cjga9NqzmAkJzLpZX3DcBiPGLG/T5nefJd/c7NMPpJRXmOIbUq8BoKIP93WFUWpAZhytook+wM2ci/+0RlovEpMZ13TfWjPScB9DocVINDJLOSYexYk3DqcQNEwGN2x+drT3QWX3T869svkhxuWwLFZW+';var g='knitsail';var eid='S8qxat-2BbOqhbIPrZP80As';var ss_cgi=false;var sp='';var hashed_query='';var cbs='';var ussv='';var content_bindings=[];var challenge_version=0;(function(){var v=typeof Object.defineProperties==\"function\"?Object.defineProperty:function(a,b,c){if(a==Array.prototype||a==Object.prototype)return a;a[b]=c.value;return a},w=function(a){a=[\"object\"==typeof globalThis&&globalThis,a,\"object\"==typeof window&&window,\"object\"==typeof self&&self,\"object\"==typeof global&&global];for(var b=0;b<a.length;++b){var c=a[b];if(c&&c.Math==Math)return c}throw Error(\"a\");},x=w(this),y=function(a,b){if(b)a:{var c=x;a=a.split(\".\");for(var h=0;h<a.length-1;h++){var e=a[h];if(!(e in\nc))break a;c=c[e]}a=a[a.length-1];h=c[a];b=b(h);b!=h&&b!=null&&v(c,a,{configurable:!0,writable:!0,value:b})}},z=function(a){var b=0;return function(){return b<a.length?{done:!1,value:a[b++]}:{done:!0}}},B=function(a){var b=typeof Symbol!=\"undefined\"&&Symbol.iterator&&a[Symbol.iterator];if(b)return b.call(a);if(typeof a.length==\"number\")return{next:z(a)};throw Error(\"b`\"+String(a));};y(\"Symbol\",function(a){if(a)return a;var b=function(k,d){this.i=k;v(this,\"description\",{configurable:!0,writable:!0,value:d})};b.prototype.toString=function(){return this.i};var c=\"jscomp_symbol_\"+(Math.random()*1E9>>>0)+\"_\",h=0,e=function(k){if(this instanceof e)throw new TypeError(\"Symbol is not a constructor\");return new b(c+(k||\"\")+\"_\"+h++,k)};return e});y(\"Symbol.iterator\",function(a){if(a)return a;a=Symbol(\"Symbol.iterator\");v(Array.prototype,a,{configurable:!0,writable:!0,value:function(){return aa(z(this))}});return a});var aa=function(a){a={next:a};a[Symbol.iterator]=function(){return this};return a};y(\"Promise\",function(a){function b(){this.i=null}function c(d){return d instanceof e?d:new e(function(f){f(d)})}if(a)return a;b.prototype.j=function(d){if(this.i==null){this.i=[];var f=this;this.l(function(){f.v()})}this.i.push(d)};var h=x.setTimeout;b.prototype.l=function(d){h(d,0)};b.prototype.v=function(){for(;this.i&&this.i.length;){var d=this.i;this.i=[];for(var f=0;f<d.length;++f){var l=d[f];d[f]=null;try{l()}catch(m){this.A(m)}}}this.i=null};b.prototype.A=function(d){this.l(function(){throw d;})};var e=function(d){this.j=0;this.l=void 0;this.i=[];this.D=!1;var f=this.A();try{d(f.resolve,f.reject)}catch(l){f.reject(l)}};e.prototype.A=function(){function d(m){return function(n){l||(l=!0,m.call(f,n))}}var f=this,l=!1;return{resolve:d(this.J),reject:d(this.v)}};e.prototype.J=function(d){if(d===this)this.v(new TypeError(\"A Promise cannot resolve to itself\"));else if(d instanceof e)this.L(d);else{a:switch(typeof d){case \"object\":var f=d!=null;break a;case \"function\":f=!0;break a;default:f=!1}f?this.I(d):this.C(d)}};e.prototype.I=function(d){var f=void 0;try{f=d.then}catch(l){this.v(l);return}typeof f==\"function\"?this.M(f,d):this.C(d)};e.prototype.v=function(d){this.F(2,d)};e.prototype.C=function(d){this.F(1,d)};e.prototype.F=function(d,f){if(this.j!=0)throw Error(\"c`\"+d+\"`\"+f+\"`\"+this.j);this.j=d;this.l=f;this.j===2&&this.K();this.G()};e.prototype.K=function(){var d=this;h(function(){if(d.H()){var f=x.console;typeof f!==\"undefined\"&&f.error(d.l)}},1)};e.prototype.H=function(){if(this.D)return!1;var d=x.CustomEvent,f=x.Event,l=x.dispatchEvent;if(typeof l===\"undefined\")return!0;typeof d===\"function\"?d=new d(\"unhandledrejection\",{cancelable:!0}):typeof f===\"function\"?d=new f(\"unhandledrejection\",{cancelable:!0}):(d=x.document.createEvent(\"CustomEvent\"),d.initCustomEvent(\"unhandledrejection\",!1,!0,d));d.promise=this;d.reason=this.l;return l(d)};e.prototype.G=function(){if(this.i!=null){for(var d=0;d<this.i.length;++d)k.j(this.i[d]);this.i=null}};var k=new b;e.prototype.L=function(d){var f=this.A();d.B(f.resolve,f.reject)};e.prototype.M=function(d,f){var l=this.A();try{d.call(f,l.resolve,l.reject)}catch(m){l.reject(m)}};e.prototype.then=function(d,f){function l(t,u){return typeof t==\"function\"?function(A){try{m(t(A))}catch(E){n(E)}}:u}var m,n,q=new e(function(t,u){m=t;n=u});this.B(l(d,m),l(f,n));return q};e.prototype.catch=function(d){return this.then(void 0,d)};e.prototype.B=function(d,f){function l(){switch(m.j){case 1:d(m.l);break;case 2:f(m.l);break;default:throw Error(\"d`\"+m.j);}}var m=\nthis;this.i==null?k.j(l):this.i.push(l);this.D=!0};e.resolve=c;e.reject=function(d){return new e(function(f,l){l(d)})};e.race=function(d){return new e(function(f,l){for(var m=B(d),n=m.next();!n.done;n=m.next())c(n.value).B(f,l)})};e.all=function(d){var f=B(d),l=f.next();return l.done?c([]):new e(function(m,n){function q(A){return function(E){t[A]=E;u--;u==0&&m(t)}}var t=[],u=0;do t.push(void 0),u++,c(l.value).B(q(t.length-1),n),l=f.next();while(!l.done)})};return e});var ba=function(a,b){a instanceof String&&(a+=\"\");var c=0,h=!1,e={next:function(){if(!h&&c<a.length){var k=c++;return{value:b(k,a[k]),done:!1}}h=!0;return{done:!0,value:void 0}}};e[Symbol.iterator]=function(){return e};return e};y(\"Array.prototype.keys\",function(a){return a?a:function(){return ba(this,function(b){return b})}});\nvar C=this||self;\nvar D=function(a){this.i=a};D.prototype.toString=function(){return this.i};var F=function(a){this.N=a};function G(a){return new F(function(b){return b.substr(0,a.length+1).toLowerCase()===a+\":\"})}var ca=[G(\"data\"),G(\"http\"),G(\"https\"),G(\"mailto\"),G(\"ftp\"),new F(function(a){return/^[^:]*([/?#]|$)/.test(a)})],da=/^\\s*(?!javascript:)(?:[\\w+.-]+:|[^:/?#]*(?:[/?#]|$))/i;var ea=/#|$/;function H(a,b){var c=a.search(ea);a:{var h=0;for(var e=b.length;(h=a.indexOf(b,h))>=0&&h<c;){var k=a.charCodeAt(h-1);if(k==38||k==63)if(k=a.charCodeAt(h+e),!k||k==61||k==38||k==35)break a;h+=e+1}h=-1}if(h<0)return null;e=a.indexOf(\"&\",h);if(e<0||e>c)e=c;h+=b.length+1;return decodeURIComponent(a.slice(h,e!==-1?e:0).replace(/\\+/g,\" \"))};function I(){var a,b;return(a=window.performance)==null?void 0:(b=a.getEntriesByType)==null?void 0:b.call(a,\"navigation\")[0]};function J(){var a,b;return(a=window.performance)==null?void 0:(b=a.navigation)==null?void 0:b.type};function K(a,b){google.c.e(\"load\",a,String(b))};var fa=window.location;function L(a){return(a=fa.search.match(new RegExp(\"[?&]\"+a+\"=(\\\\d+)\\\\b\")))?Number(a[1]):-1}\nfunction M(){var a=google.timers.load,b=a.e,c=google.stvsc;c&&(b.ssr=1);c?c=c.isBF:c=(c=I())?c.type===\"back_forward\"?c.notRestoredReasons===void 0?!0:!!c.notRestoredReasons:!1:J()===2;c&&(b.bb=1);((c=I())?c.type===\"reload\":J()===1)&&(b.r=1);if(c=I()){var h=c.type;h&&(b.nt=h);h=c.deliveryType;h!=null&&(b.dt=h);h=c.transferSize;h!=null&&(b.ts=h);c=c.nextHopProtocol;c!=null&&(b.nhp=c)}(c=window.navigation)&&(c=c.activation)&&(c=c.navigationType)&&(b.ant=c);b=a.m;if(!b||!b.prs){c=(window._csc===\"agsa\"||\nwindow._csc===\"http\")&&window._cshid;h=!!google.stvsc;var e=a.qtt===2;b=L(\"qsubts\");var k;(k=I())?(k=k.type,k=!k||k===\"navigate\"):k=!J();h=!k||e||h||c?0:a.qsubts||b;e=\"r\";h>0&&(c=a.fbts||L(\"fbts\"),c>0&&(a.t.start=Math.max(h,c),e=a.fbts===c?\"i\":\"u\"));k=a.t;var d=k.start;c={};a.wsrt!==void 0&&(c.wsrt=a.wsrt);if(d)for(var f in k)if(f!==\"start\"&&f!==\"sgls\"){var l=k[f];c[f]=f===\"sgl\"||f===\"sgsrt\"?l:f===\"prs\"?d-l:Math.max(l-d,0)}h>0&&(c.gsasrt=a.t.start-h,f=L(\"qsd\"),f>0&&K(\"qsd\",f),K(\"ests\",(a.qsubts===\nh?\"i\":\"u\")+e),a.qsubts&&b>0&&a.qsubts!==b&&K(\"qd\",a.qsubts-b));f=a.t.sgls;f>=0&&(e=b=c.sgl,f===0?e=0:h>f&&(e=h-f),b!==void 0&&(c.sglo=b),e!==void 0&&(c.sgl=e));a=a.e;f=\"/gen_204?s=\"+google.sn+\"&t=sg&atyp=csi&ei=\"+google.kEI+\"&rt=\";b=\"\";for(var m in c)f+=\"\"+b+m+\".\"+c[m],b=\",\";for(var n in a)f+=\"&\"+n+\"=\"+a[n];m=f;var q=q===void 0?window.location:q;n=\"\";C._cshid&&(n+=\"&cshid=\"+C._cshid);(a=window.google&&window.google.kOPI||null)&&(n+=\"&opi=\"+a);(a=H(q.search,\"gemcid\"))&&(n+=\"&gemcid=\"+a);(a=H(q.search,\"gemrid\"))&&(n+=\"&gemrid=\"+a);(q=H(q.search,\"gemhist\"))&&(n+=\"&gemhist=\"+q);q=m+n;a:{try{var t=window.navigator.sendBeacon(q,\"\");var u=t===void 0?!0:t;break a}catch(A){}u=!1}u||google.log(\"\",\"\",q)}};var N=function(){var a=location.href;this.i=this.fragment=\"\";var b=a.indexOf(\"#\");b>0&&(this.fragment=a.substring(b),a=a.substring(0,b));b=a.indexOf(\"?\");b>0&&(this.i=\"&\"+a.substring(b+1),a=a.substring(0,b));this.j=a},P=function(a,b,c){O(a,b);a.i=a.i+\"&\"+b+\"=\"+c},O=function(a,b){a.i=a.i.replace(new RegExp(\"&\"+b+\"=([^&]+)\",\"g\"),\"\")};N.prototype.toString=function(){return\"\"+this.j+(this.i?\"?\"+this.i.substring(1):\"\")+this.fragment};function Q(){var a=eid,b;a:{if(window.st&&(b=window.st(location.href)))break a;b=performance&&performance.timing&&performance.timing.navigationStart?performance.timing.navigationStart:void 0}if(b)try{window.sessionStorage&&window.sessionStorage.setItem(a,String(b))}catch(c){}}function R(){for(var a=eid,b=ha(),c=[],h=Object.keys(b),e=0,k;k=h[e++];)c.push(k+\":\"+b[k]);if(b=c.join(\";\"))try{window.sessionStorage.setItem(a,b)}catch(d){}};function ia(a,b){var c=C[g];if(c){b=c.a;var h=[ja()];b(p,function(e){return void e(a,h)},!1,void 0,void 0,void 0,void 0,!0)}else b(Error(\"f\"))}function ja(){var a={};content_bindings.forEach(function(b){a[b.key]=b.value});return a}\nfunction ha(){var a={};if(!window.td)return a;var b=\"n\",c=window.td.ns,h=void 0,e=void 0;window.st&&(e=window.st(location.href))&&(c=e,b=\"u\");window.td.qs&&(c=h=window.td.qs,b=\"i\");if(!c)return a;a.st=c;var k=\"r\",d=window.td.rs;(h||e)&&window.td.fs&&(d=window.td.fs,k=\"i\");d&&(a.srt=Math.max(d-c,0),a.sts=b+k);h&&e&&(a.qd=h-e);return a}function S(){var a=eid,b=new N;O(b,\"sg_ss\");P(b,\"sei\",a);return b.toString()}\nfunction T(a){var b=eid,c=new N;P(c,\"sg_ss\",encodeURIComponent(a));P(c,\"sei\",b);U(c.toString())}function ka(a){if(window.prs){V(\"psrt\");sctm&&M();var b=S();window.prs(b,a).catch(function(){T(a)})}else T(a)}function U(a){V(\"psrt\");sctm&&M();window.prs?window.prs(a).catch(function(){W(a)}):W(a)}\nfunction W(a){if(window.pr)window.pr(a);else{a:{var b=b===void 0?ca:b;if(a instanceof D)b=a;else{for(var c=0;c<b.length;++c){var h=b[c];if(h instanceof F&&h.N(a)){b=new D(a);break a}}b=void 0}}a=location;if(b instanceof D)if(b instanceof D)b=b.i;else throw Error(\"e\");else b=da.test(b)?b:void 0;b!==void 0&&a.replace(b)}}function X(a){navigator.sendBeacon(\"/gen_204?cad=sg_b_e&e=\"+a,\"\")}\nfunction la(){V(\"bsst\");ia(function(a){V(\"bset\");var b=challenge_version,c=cbs;a=b>0?\"B.\"+b+\".\"+c+\".\"+a:a;b=new Date;b.setSeconds(b.getSeconds()+(Number(ce)||300));c=\"SG_SS=\"+a;var h=document.cookie.length+c.length;r&&(h<4093&&!ss_cgi&&(document.cookie=c+(\"; expires=\"+b.toUTCString())),window.td?R():Q(),ss_cgi||document.cookie.indexOf(\"SG_SS=\")<0?T(a):U(S()))},function(a){X(a);V(\"bset\")})}function V(a){sctm&&google.tick(\"load\",a)};navigator||(C.navigator={});typeof navigator.sendBeacon!==\"function\"&&(navigator.sendBeacon=function(a){(new Image).src=a});window.onerror=function(a,b,c,h,e){a=\"?emsg=\"+(e instanceof Error?e.message:a)+\"&srcpg=sgs&jsr=1&jsel=3\";navigator.sendBeacon(\"/gen_204\"+a);navigator.sendBeacon(\"/httpservice/retry/jserror\"+a)};if(sclm){var Y;window.td=(Y=window.td)!=null?Y:{};performance&&performance.timing&&(window.td.ns=performance.timing.navigationStart,window.td.rs=performance.timing.responseStart)}V(\"sst\");var Z;window.sgs&&ussv&&sp?(V(\"ssst\"),Z=window.sgs(sp).then(function(a){V(\"sset\");r&&(window.td?R():Q(),ka(a));return!0},function(){return!1})):Z=Promise.resolve(!1);Z.then(function(a){a||la()}).catch(function(a){X(a)});}).call(this);})();</script><script nonce=\"qsZHrB9u_6U5HtvCRiQKMg\">(function(){var cssId='yvlrue';var eid='S8qxat-2BbOqhbIPrZP80As';(function(){setTimeout(function(){document.getElementById(cssId).setAttribute(\"style\",\"\");navigator.sendBeacon(\"/gen_204?cad=sg_trbl&ei=\"+eid,\"\")},2E3);}).call(this);})();</script><style>div{font-family:sans-serif;color:#545454;background-color:#fff}a{color:#1558d6;font-size:inherit;text-decoration:none}a:visited{color:#681da8}</style><div id=\"yvlrue\" style=\"display:none\">If you're having trouble accessing Google Search, please&nbsp;<a href=\"/search?q=%22pro_v2%22+%22voice+cloning%22&amp;sca_esv=f0da1ac9b7a45388&amp;ie=UTF-8&amp;emsg=SG_REL&amp;sei=S8qxat-2BbOqhbIPrZP80As\">click here</a>, or send&nbsp;<a href=\"https://support.google.com/websearch\">feedback</a>.</div></body></html>","exit_code":0,"status":"completed"}}
{"type":"item.started","item":{"id":"item_22","type":"command_execution","command":"/bin/bash -lc \"curl -sS --max-time 20 'https://grep.app/api/search?q=pro_v2%20voice%20cloning' | jq '.hits.total, (.hits.hits[]? | {repo, path, content: .content.snippet})' | sed -n '1,200p'\"","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_22","type":"command_execution","command":"/bin/bash -lc \"curl -sS --max-time 20 'https://grep.app/api/search?q=pro_v2%20voice%20cloning' | jq '.hits.total, (.hits.hits[]? | {repo, path, content: .content.snippet})' | sed -n '1,200p'\"","aggregated_output":"parse error: Invalid numeric literal at line 1, column 10\ncurl: (23) Failure writing output to destination\n","exit_code":0,"status":"completed"}}
{"type":"item.started","item":{"id":"item_23","type":"command_execution","command":"/bin/bash -lc \"curl -sS --max-time 20 -A 'Mozilla/5.0' 'https://grep.app/api/search?q=pro_v2' | head -c 5000\"","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_23","type":"command_execution","command":"/bin/bash -lc \"curl -sS --max-time 20 -A 'Mozilla/5.0' 'https://grep.app/api/search?q=pro_v2' | head -c 5000\"","aggregated_output":"<!DOCTYPE html><html lang=\"en\" data-astro-cid-4wdtffzm><head><meta charset=\"utf-8\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"><meta name=\"theme-color\" content=\"#000\"><title>Vercel Security Checkpoint</title><style>.spinner[data-astro-cid-ijmsm3te]{flex-direction:column;justify-content:center;align-items:center;display:flex}.spinner-circle[data-astro-cid-ijmsm3te]{transform-origin:50%;animation:1s step-start infinite spinner-circle-animate}rect[data-astro-cid-ijmsm3te]{fill:var(--ds-gray-900)}@keyframes spinner-circle-animate{0%{transform:rotate(0)}10%{transform:rotate(36deg)}20%{transform:rotate(72deg)}30%{transform:rotate(108deg)}40%{transform:rotate(144deg)}50%{transform:rotate(180deg)}60%{transform:rotate(216deg)}70%{transform:rotate(252deg)}80%{transform:rotate(288deg)}90%{transform:rotate(324deg)}to{transform:rotate(360deg)}}:root{--ds-gray-900:#666;--ds-gray-alpha-1000:#000000e8;--background-color:#fff;--link-color:#0070f3}@media (prefers-color-scheme:dark){:root{--ds-gray-900:#a1a1a1;--ds-gray-alpha-1000:#ffffffeb;--background-color:#0a0a0a;--link-color:#3291ff}}html{box-sizing:border-box}[data-astro-cid-4wdtffzm],[data-astro-cid-4wdtffzm]:after,[data-astro-cid-4wdtffzm]:before{box-sizing:inherit}body{word-break:break-word;font-kerning:auto;font-variant:normal;text-rendering:optimizelegibility;hyphens:auto;background-color:var(--background-color);height:100vh;max-height:100vh;color:var(--ds-gray-900);margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Noto Sans,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji;font-size:1.2rem;line-height:1.65}.container[data-astro-cid-4wdtffzm]{flex-direction:column;justify-content:center;min-height:100%;display:flex}#root[data-astro-cid-4wdtffzm]{display:none}main[data-astro-cid-4wdtffzm]{text-align:center;max-width:80rem;margin:auto;padding:4rem 6rem}p[data-astro-cid-4wdtffzm]#header-text,p[data-astro-cid-4wdtffzm]#header-noscript-text{color:var(--ds-gray-alpha-1000);text-align:center;font-size:1.2rem;font-weight:500;line-height:32px}#fix-container[data-astro-cid-4wdtffzm]{flex-direction:column;align-items:center;display:flex}.fix-text[data-astro-cid-4wdtffzm]{color:var(--link-color);cursor:pointer;margin-top:0;font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;font-size:.75rem;font-weight:200;line-height:1rem;text-decoration:underline}.metadata-text[data-astro-cid-4wdtffzm]{opacity:.7;margin-top:4px;font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;font-size:.75rem;font-weight:200}footer[data-astro-cid-4wdtffzm]{color:var(--ds-gray-900);flex-direction:row;justify-content:center;align-items:center;padding-bottom:24px;font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;font-size:.75rem;font-weight:200;line-height:1rem;display:flex}footer[data-astro-cid-4wdtffzm] div[data-astro-cid-4wdtffzm]{flex-direction:row;gap:3px;display:flex}@media (width<=600px){body{height:100dvh;max-height:100dvh}main[data-astro-cid-4wdtffzm]{padding:1rem 2rem}body{text-align:center;font-size:1.4rem;line-height:1.55}footer[data-astro-cid-4wdtffzm]{text-align:center;flex-direction:column;padding:24px 12px;display:flex;& .hide-mobile{display:none}}footer[data-astro-cid-4wdtffzm] p[data-astro-cid-4wdtffzm]{margin:6px auto}footer[data-astro-cid-4wdtffzm] div[data-astro-cid-4wdtffzm]{flex-direction:column;gap:0;display:flex}}\n</style></head><body data-astro-cid-4wdtffzm><div id=\"root\" class=\"container\" data-astro-cid-4wdtffzm><main data-astro-cid-4wdtffzm><div class=\"spinner\" data-astro-cid-ijmsm3te><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\" data-astro-cid-ijmsm3te><g class=\"spinner-circle\" data-astro-cid-ijmsm3te><rect x=\"11\" y=\"1\" width=\"2\" height=\"6\" opacity=\"1\" data-astro-cid-ijmsm3te></rect><rect x=\"11\" y=\"1\" width=\"2\" height=\"6\" transform=\"rotate(36 12 12)\" opacity=\".1\" data-astro-cid-ijmsm3te></rect><rect x=\"11\" y=\"1\" width=\"2\" height=\"6\" transform=\"rotate(72 12 12)\" opacity=\".2\" data-astro-cid-ijmsm3te></rect><rect x=\"11\" y=\"1\" width=\"2\" height=\"6\" transform=\"rotate(108 12 12)\" opacity=\".3\" data-astro-cid-ijmsm3te></rect><rect x=\"11\" y=\"1\" width=\"2\" height=\"6\" transform=\"rotate(144 12 12)\" opacity=\".4\" data-astro-cid-ijmsm3te></rect><rect x=\"11\" y=\"1\" width=\"2\" height=\"6\" transform=\"rotate(180 12 12)\" opacity=\".5\" data-astro-cid-ijmsm3te></rect><rect x=\"11\" y=\"1\" width=\"2\" height=\"6\" transform=\"rotate(216 12 12)\" opacity=\".6\" data-astro-cid-ijmsm3te></rect><rect x=\"11\" y=\"1\" width=\"2\" height=\"6\" transform=\"rotate(252 12 12)\" opacity=\".7\" data-astro-cid-ijmsm3te></rect><rect x=\"11\" y=\"1\" width=\"2\" height=\"6\" transform=\"rotate(288 12 12)\" opacity=\".8\" data-astro-cid-ijmsm3te></rect><rect x=\"11\" y=\"1\" width=\"2\" height=\"6\" transform=\"rotate(324 12 12)\" opacity=\".9\" data-astro-cid-ijmsm3te></rect></g></svg></div><p id=\"header-text\" data-astro-cid-4wdtffzm>We're verifying your browser</p><div id=\"curl: (23) Failure writing output to destination\n","exit_code":0,"status":"completed"}}
{"type":"item.started","item":{"id":"item_24","type":"command_execution","command":"/bin/bash -lc \"curl -sSL --max-time 20 'https://www.google.com/search?q=%22pro_v2%22+%22voice+cloning%22&gbv=1' | perl -ne 'while(/<a href=\\\"\\\\/url\\\\?q=([\"'^&\"]+).*?>(.*?)<'\"\\\\/a>/g){\"'$t=$2;$t=~s/<[''^>]+>//g; print \"$t'\"\\\\t\"'$1'\"\\\\n\\\"}' | head -20\ncurl -sSL --max-time 20 'https://www.bing.com/search?format=rss&q=%22pro_v2%22+%22voice+cloning%22' | sed 's/></>\\\\n</g' | rg '<title>|<link>|<description>' | sed -n '1,50p'\"","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_24","type":"command_execution","command":"/bin/bash -lc \"curl -sSL --max-time 20 'https://www.google.com/search?q=%22pro_v2%22+%22voice+cloning%22&gbv=1' | perl -ne 'while(/<a href=\\\"\\\\/url\\\\?q=([\"'^&\"]+).*?>(.*?)<'\"\\\\/a>/g){\"'$t=$2;$t=~s/<[''^>]+>//g; print \"$t'\"\\\\t\"'$1'\"\\\\n\\\"}' | head -20\ncurl -sSL --max-time 20 'https://www.bing.com/search?format=rss&q=%22pro_v2%22+%22voice+cloning%22' | sed 's/></>\\\\n</g' | rg '<title>|<link>|<description>' | sed -n '1,50p'\"","aggregated_output":"<title>Bing: \"pro_v2\" \"voice cloning\"</title>\n<link>http://www.bing.com:80/search?q=%22pro_v2%22+%22voice+cloning%22</link>\n<description>Search results</description>\n<title>\"pro_v2\" \"voice cloning\"</title>\n<link>http://www.bing.com:80/search?q=%22pro_v2%22+%22voice+cloning%22</link>\n<title>ProDemand Automotive Repair Information - Mitchell1, Snap-on Inc.</title>\n<link>https://www.prodemand.com/</link>\n<description>ProDemand® delivers complete OEM repair, estimating &amp; maintenance information, along with exclusive real-world knowledge in a single lookup, to help automotive technicians repair vehicles more accurately and efficiently.</description>\n<title>Procore Log In</title>\n<link>https://login.procore.com/</link>\n<description>Welcome to the world's most widely used construction project management platform. Log in to your Procore account using your email and password.</description>\n<title>PRO Definition &amp; Meaning - Merriam-Webster</title>\n<link>https://www.merriam-webster.com/dictionary/pro</link>\n<description>The meaning of PRO is an argument or evidence in affirmation. How to use pro in a sentence.</description>\n<title>Freight Tracking by PRO Number - Parcels</title>\n<link>https://parcelsapp.com/en/freight-tracking</link>\n<description>A PRO number is the nine-digit number used to identify a freight bill, affixed to shipments in the form of a scannable barcode sticker. Once you've entered the PRO number, your tracking results will display for the shipment.</description>\n<title>PRO | English meaning - Cambridge Dictionary</title>\n<link>https://dictionary.cambridge.org/dictionary/english/pro</link>\n<description>PRO definition: 1. an advantage to or a reason for doing something: 2. a person who plays a sport as a job rather…. Learn more.</description>\n<title>Pro Football Talk - NBC Sports</title>\n<link>https://www.nbcsports.com/nfl/profootballtalk</link>\n<description>Find all the latest ProFootballTalk news, live coverage, videos, highlights, stats, predictions, and results right here on NBC Sports.</description>\n<title>PRO</title>\n<link>https://www.pro-bikegear.com/</link>\n<description>Find your perfect saddle or cockpit in just a few steps.</description>\n<title>Available with NFL+ Premium | NFL Pro</title>\n<link>https://pro.nfl.com/nflpro</link>\n<description>With NFL+ Premium, get access to NFL Pro and over 95 unique player and team performance stats and all-22 film for an advanced analytics platform (available on desktop and mobile web).</description>\n<title>PRO Definition &amp; Meaning | Dictionary.com</title>\n<link>https://www.dictionary.com/browse/pro</link>\n<description>Pro is a Latin root word meaning for. If you make a list of pros and cons, you are listing the reasons for doing something and the reasons not to, respectively. Pro is also the shortened form of the word \"professional,\" often referring to professional sports.</description>\n<title>NFL Pro</title>\n<link>https://pro.nfl.com/</link>\n<description>Next Gen Stats and All 22 Film.</description>\n","exit_code":0,"status":"completed"}}
{"type":"item.started","item":{"id":"item_25","type":"command_execution","command":"/bin/bash -lc \"curl -sSL --max-time 20 -H 'Accept: application/vnd.github+json' 'https://api.github.com/search/code?q=%22pro_v2%22+%22voice+cloning%22' | jq '{message,total_count,items: [.items[]? | {repository:.repository.full_name,path}]}'\"","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_25","type":"command_execution","command":"/bin/bash -lc \"curl -sSL --max-time 20 -H 'Accept: application/vnd.github+json' 'https://api.github.com/search/code?q=%22pro_v2%22+%22voice+cloning%22' | jq '{message,total_count,items: [.items[]? | {repository:.repository.full_name,path}]}'\"","aggregated_output":"{\n  \"message\": \"Requires authentication\",\n  \"total_count\": null,\n  \"items\": []\n}\n","exit_code":0,"status":"completed"}}
{"type":"item.started","item":{"id":"item_26","type":"command_execution","command":"/bin/bash -lc \"curl -sS --max-time 30 -N 'https://sourcegraph.com/.api/search/stream?q=context:global%20%22pro_v2%22%20%22voice%20cloning%22&v=V3' | sed -n '1,120p'\"","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_26","type":"command_execution","command":"/bin/bash -lc \"curl -sS --max-time 30 -N 'https://sourcegraph.com/.api/search/stream?q=context:global%20%22pro_v2%22%20%22voice%20cloning%22&v=V3' | sed -n '1,120p'\"","aggregated_output":"event: filters\ndata: [{\"value\":\"archived:yes\",\"label\":\"Include archived repos\",\"count\":68213,\"exhaustive\":false,\"kind\":\"utility\"},{\"value\":\"fork:yes\",\"label\":\"Include forked repos\",\"count\":282,\"exhaustive\":false,\"kind\":\"utility\"}]\n\nevent: progress\ndata: {\"done\":false,\"matchCount\":0,\"durationMs\":214,\"skipped\":[{\"reason\":\"repository-fork\",\"title\":\"282 forked\",\"message\":\"By default we exclude forked repositories. Include them with `fork:yes` in your query.\",\"severity\":\"info\",\"suggested\":{\"title\":\"include forked\",\"queryExpression\":\"fork:yes\"}},{\"reason\":\"excluded-archive\",\"title\":\"68k archived\",\"message\":\"By default we exclude archived repositories. Include them with `archived:yes` in your query.\",\"severity\":\"info\",\"suggested\":{\"title\":\"include archived\",\"queryExpression\":\"archived:yes\"}}],\"trace\":\"https://console.cloud.google.com/traces/list?tid=13e6219ed9030e1c57a1f89b2cfffb50\\u0026authuser=0\\u0026project=src-c4cd661e8a76d6b51c26\"}\n\nevent: progress\ndata: {\"done\":false,\"matchCount\":0,\"durationMs\":5012,\"skipped\":[{\"reason\":\"repository-fork\",\"title\":\"282 forked\",\"message\":\"By default we exclude forked repositories. Include them with `fork:yes` in your query.\",\"severity\":\"info\",\"suggested\":{\"title\":\"include forked\",\"queryExpression\":\"fork:yes\"}},{\"reason\":\"excluded-archive\",\"title\":\"68k archived\",\"message\":\"By default we exclude archived repositories. Include them with `archived:yes` in your query.\",\"severity\":\"info\",\"suggested\":{\"title\":\"include archived\",\"queryExpression\":\"archived:yes\"}}],\"trace\":\"https://console.cloud.google.com/traces/list?tid=13e6219ed9030e1c57a1f89b2cfffb50\\u0026authuser=0\\u0026project=src-c4cd661e8a76d6b51c26\"}\n\nevent: filters\ndata: [{\"value\":\"archived:yes\",\"label\":\"Include archived repos\",\"count\":68213,\"exhaustive\":true,\"kind\":\"utility\"},{\"value\":\"fork:yes\",\"label\":\"Include forked repos\",\"count\":282,\"exhaustive\":true,\"kind\":\"utility\"}]\n\nevent: progress\ndata: {\"done\":true,\"matchCount\":0,\"durationMs\":5060,\"skipped\":[{\"reason\":\"repository-fork\",\"title\":\"282 forked\",\"message\":\"By default we exclude forked repositories. Include them with `fork:yes` in your query.\",\"severity\":\"info\",\"suggested\":{\"title\":\"include forked\",\"queryExpression\":\"fork:yes\"}},{\"reason\":\"excluded-archive\",\"title\":\"68k archived\",\"message\":\"By default we exclude archived repositories. Include them with `archived:yes` in your query.\",\"severity\":\"info\",\"suggested\":{\"title\":\"include archived\",\"queryExpression\":\"archived:yes\"}}],\"trace\":\"https://console.cloud.google.com/traces/list?tid=13e6219ed9030e1c57a1f89b2cfffb50\\u0026authuser=0\\u0026project=src-c4cd661e8a76d6b51c26\"}\n\nevent: done\ndata: {}\n\n","exit_code":0,"status":"completed"}}
{"type":"item.started","item":{"id":"item_27","type":"command_execution","command":"/bin/bash -lc \"curl -sS --max-time 30 -N 'https://sourcegraph.com/.api/search/stream?q=context:global%20%22pro_v2%22&v=V3' | rg '\"'^event: matches|''^data: '\"\\\\[' | sed -n '1,80p'\"","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_27","type":"command_execution","command":"/bin/bash -lc \"curl -sS --max-time 30 -N 'https://sourcegraph.com/.api/search/stream?q=context:global%20%22pro_v2%22&v=V3' | rg '\"'^event: matches|''^data: '\"\\\\[' | sed -n '1,80p'\"","aggregated_output":"data: [{\"value\":\"archived:yes\",\"label\":\"Include archived repos\",\"count\":68213,\"exhaustive\":false,\"kind\":\"utility\"},{\"value\":\"fork:yes\",\"label\":\"Include forked repos\",\"count\":282,\"exhaustive\":false,\"kind\":\"utility\"}]\nevent: matches\ndata: [{\"type\":\"content\",\"path\":\"Pro_V2/Pro_V2.kicad_sch\",\"repositoryID\":39964648,\"repository\":\"github.com/kata0510/Lily58\",\"repoStars\":2296,\"repoLastFetched\":\"2026-09-21T18:36:31.046787Z\",\"branches\":[\"\"],\"commit\":\"58c649797c185b7b32b9928d4546665153cfacfd\",\"hunks\":null,\"lineMatches\":[{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":16811,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":16879,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":16945,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":17013,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":17079,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":17147,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":17213,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":17281,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":17347,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":17415,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":17481,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":17549,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":17617,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":17683,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":17751,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":17817,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":17885,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":17951,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":18017,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":18085,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":18151,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":18219,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":18285,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":18353,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":18421,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":18487,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":18555,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":18621,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":18689,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":18755,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":18821,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":18889,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":18955,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":19023,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":19089,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":19157,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":19225,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":19291,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":19359,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":19425,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":19493,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":19559,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":19625,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":19693,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":19759,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":19827,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":19893,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":19961,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":20029,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":20095,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":20163,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":20229,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":20297,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":20363,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":20429,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":20497,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":20563,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":20631,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":20699,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":20765,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":20833,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":20899,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":20967,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":21033,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":21099,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":21167,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":21233,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":21301,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":21367,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":21435,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":21503,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":21569,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":21637,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":21703,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":21771,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":21837,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":21903,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":21971,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":22037,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":22105,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":22171,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":22239,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":22307,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":22373,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":22441,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":22507,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":22575,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":22641,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":22707,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":22775,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":22841,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":22909,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":22975,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":23043,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":23111,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":23177,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":23245,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":23311,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":23379,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":23445,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":23511,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":23579,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":23645,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":23713,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":23779,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":23847,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":23915,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":23981,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":24049,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":24115,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":24183,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":24249,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":24315,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":24383,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":24449,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":24517,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":24582,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":24647,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":24712,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":24777,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":24842,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":24907,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":24972,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":25037,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":25102,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":25168,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":25234,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":25299,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":25364,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":25429,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":25494,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":25559,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":25624,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":25689,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":25754,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":25819,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":25897,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":25962,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":26040,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":26104,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":26182,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":26261,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":26339,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":26403,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":26469,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":26547,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":26611,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":26674,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":26739,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":26805,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":26884,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":26953,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":27017,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":27082,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":27147,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":27211,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":27275,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":27340,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":27405,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":27478,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":27557,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":27626,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":27690,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":27754,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":27833,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":27897,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":27976,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":28041,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":28120,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":28185,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":28264,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":28329,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":28392,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":28456,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":28520,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":28599,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":28665,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":28728,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":28794,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":28863,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":28929,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":28993,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":29071,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":29136,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":29201,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":29264,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":29343,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":29407,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":29477,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":29542,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":29605,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":29692,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":29771,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":29836,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":29901,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":29965,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":30043,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":30107,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":30172,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":30236,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":30300,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":30364,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":30429,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":30508,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":30577,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":30640,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":30709,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":30773,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":30839,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":30912,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":30977,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":31042,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":31105,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":31184,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":31247,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":31310,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":31375,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":31439,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":31504,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":31573,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":31652,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":31717,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":31796,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":31862,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":31927,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":31995,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":32073,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":32138,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":32203,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":32281,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":32346,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":32425,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":32494,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":32557,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":32621,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":32699,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":32764,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":32843,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":32916,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":32985,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":33054,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":33120,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":33185,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":33251,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":33315,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":33384,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":33462,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":33526,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":33591,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":33655,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":33719,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":33855,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":33922,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":34001,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":34070,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":34146,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":34209,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":34272,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":34341,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":34410,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":34475,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":34541,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":34614,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":34683,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":34752,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":34816,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":34880,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":34943,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":35006,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":35070,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":35148,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":35214,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":35281,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":35350,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":35415,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":35480,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":35543,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":35608,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":35673,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":35743,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":35808,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":35873,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":35938,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":36007,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":36073,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":36137,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":36200,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":36265,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":36330,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":36417,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":36481,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":36545,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":36611,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":36674,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":36761,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":36824,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":36890,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":36968,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":37037,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":37271,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":37335,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":37400,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":37463,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":37527,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":37592,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":37656,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":37890,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":37959,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":38038,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":38116,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":38185,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":38249,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":38327,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":38406,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":38471,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":38534,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":38670,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":38734,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":38799,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":38865,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":38934,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":38999,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":39064,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":39129,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":39194,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":39263,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":39340,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":39405,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":39469,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":39548,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":39627,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":39692,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":39761,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":39826,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":39891,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":39954,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":40033,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":40111,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":40176,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":40240,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":40304,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":40369,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":40448,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":40513,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":40592,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":40655,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":40718,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":40785,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":40849,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":40918,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":40982,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":41060,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":41123,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":41192,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":41255,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":41324,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":41390,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":41453,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":41517,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":41581,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":41646,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":41718,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":41784,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":41853,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":41931,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":42000,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":42064,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":42142,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":42208,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":42274,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":42338,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":42404,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":42477,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":42542,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":42607,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":42670,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":42749,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":42814,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":42879,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":42946,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":43015,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":43081,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":43150,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":43217,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":43286,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":43351,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":43428,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":43491,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":43570,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":43633,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":43712,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":43790,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":43855,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":43920,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":43983,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":44062,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":44141,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":44205,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":44269,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":44348,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":44425,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":44490,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":44568,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":44631,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":44700,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":44765,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":44830,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":44909,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":44973,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":45037,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":45100,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":45165,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":45229,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":45296,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":45360,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":45427,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":45492,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":45579,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":45643,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":45712,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":45777,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":45841,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":45919,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":45997,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":46075,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":46141,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":46206,\"offsetAndLengths\":[[12,8]]},{\"line\":\"\\t\\t\\t(project \\\"Pro_V2\\\"\",\"lineNumber\":46270,\"offsetAndLengths\":[[12,8]]}],\"language\":\"KiCad Schematic\"}]\ndata: [{\"value\":\"archived:yes\",\"label\":\"Include archived repos\",\"count\":68213,\"exhaustive\":false,\"kind\":\"utility\"},{\"value\":\"type:file\",\"label\":\"Code\",\"count\":456,\"exhaustive\":false,\"kind\":\"type\"},{\"value\":\"fork:yes\",\"label\":\"Include forked repos\",\"count\":282,\"exhaustive\":false,\"kind\":\"utility\"},{\"value\":\"lang:\\\"kicad schematic\\\"\",\"label\":\"KiCad Schematic\",\"count\":428,\"exhaustive\":false,\"kind\":\"lang\"},{\"value\":\"repo:^github\\\\.com/kata0510/Lily58$\",\"label\":\"github.com/kata0510/Lily58\",\"count\":428,\"exhaustive\":false,\"kind\":\"repo\"},{\"value\":\"lang:typescript\",\"label\":\"TypeScript\",\"count\":18,\"exhaustive\":false,\"kind\":\"lang\"},{\"value\":\"repo:^github\\\\.com/useautumn/autumn$\",\"label\":\"github.com/useautumn/autumn\",\"count\":18,\"exhaustive\":false,\"kind\":\"repo\"},{\"value\":\"-file:\\\\.test\\\\.\\\\w+$\",\"label\":\"Exclude .test.*\",\"count\":16,\"exhaustive\":false,\"kind\":\"file\"},{\"value\":\"lang:tsx\",\"label\":\"TSX\",\"count\":10,\"exhaustive\":false,\"kind\":\"lang\"},{\"value\":\"repo:^github\\\\.com/traycerai/traycer$\",\"label\":\"github.com/traycerai/traycer\",\"count\":10,\"exhaustive\":false,\"kind\":\"repo\"}]\nevent: matches\ndata: [{\"type\":\"content\",\"path\":\"protocol/src/auth/user.ts\",\"repositoryID\":64169394,\"repository\":\"github.com/traycerai/traycer\",\"repoStars\":1502,\"repoLastFetched\":\"2026-09-22T00:05:23.182352Z\",\"branches\":[\"\"],\"commit\":\"d0d4103dc81a483edff48a27221a6d241f8328e3\",\"hunks\":null,\"lineMatches\":[{\"line\":\"  | \\\"PRO_V2\\\"\",\"lineNumber\":65,\"offsetAndLengths\":[[4,8]]}],\"language\":\"TypeScript\"},{\"type\":\"content\",\"path\":\"apps/website/app/blog/[slug]/opengraph-image.tsx\",\"repositoryID\":64108808,\"repository\":\"github.com/useautumn/autumn\",\"repoStars\":2680,\"repoLastFetched\":\"2026-09-21T23:20:50.617826Z\",\"branches\":[\"\"],\"commit\":\"10462e7fffd1f09f05b6c546f419c308ed8f1857\",\"hunks\":null,\"lineMatches\":[{\"line\":\"\\t\\t\\t\\t\\taccentCells={[\\\"pro_v2\\\"]}\",\"lineNumber\":219,\"offsetAndLengths\":[[19,8]]},{\"line\":\"\\t\\t\\t\\t\\t\\t[\\\"cus_001\\\", \\\"pro_v2\\\"],\",\"lineNumber\":223,\"offsetAndLengths\":[[18,8]]},{\"line\":\"\\t\\t\\t\\t\\taccentCells={[\\\"pro_v2\\\", \\\"400\\\"]}\",\"lineNumber\":230,\"offsetAndLengths\":[[19,8]]},{\"line\":\"\\t\\t\\t\\t\\t\\t[\\\"pro_v2\\\", \\\"$40\\\", \\\"400\\\"],\",\"lineNumber\":236,\"offsetAndLengths\":[[7,8]]}],\"language\":\"TSX\"},{\"type\":\"content\",\"path\":\"apps/website/components/blogComponents/stop-rebuilding-your-billing-system/shared.tsx\",\"repositoryID\":64108808,\"repository\":\"github.com/useautumn/autumn\",\"repoStars\":2680,\"repoLastFetched\":\"2026-09-21T23:20:50.617826Z\",\"branches\":[\"\"],\"commit\":\"10462e7fffd1f09f05b6c546f419c308ed8f1857\",\"hunks\":null,\"lineMatches\":[{\"line\":\"\\t{ id: \\\"cus_02\\\", email: \\\"sam@beta.io\\\", planId: \\\"pro_v2\\\" },\",\"lineNumber\":44,\"offsetAndLengths\":[[47,8]]},{\"line\":\"\\t\\tid: \\\"pro_v2\\\",\",\"lineNumber\":25,\"offsetAndLengths\":[[6,8]]}],\"language\":\"TSX\"},{\"type\":\"content\",\"path\":\"apps/website/components/blogComponents/stop-rebuilding-your-billing-system/PostgresTablesHero.tsx\",\"repositoryID\":64108808,\"repository\":\"github.com/useautumn/autumn\",\"repoStars\":2680,\"repoLastFetched\":\"2026-09-21T23:20:50.617826Z\",\"branches\":[\"\"],\"commit\":\"10462e7fffd1f09f05b6c546f419c308ed8f1857\",\"hunks\":null,\"lineMatches\":[{\"line\":\"\\t\\t\\t[\\\"cus_001\\\", \\\"pro_v2\\\"],\",\"lineNumber\":39,\"offsetAndLengths\":[[15,8]]},{\"line\":\"\\t{ key: \\\"customers-0-1\\\", values: [\\\"pro_v2\\\", \\\"acme_custom\\\", \\\"pro_v2\\\"] },\",\"lineNumber\":99,\"offsetAndLengths\":[[34,8],[59,8]]},{\"line\":\"\\t\\t\\t[\\\"pro_v2\\\", \\\"$40\\\", \\\"400\\\"],\",\"lineNumber\":54,\"offsetAndLengths\":[[4,8]]}],\"language\":\"TSX\"},{\"type\":\"content\",\"path\":\"clients/gui-app/src/lib/auth/__tests__/traycer-subscription-content.test.ts\",\"repositoryID\":64169394,\"repository\":\"github.com/traycerai/traycer\",\"repoStars\":1502,\"repoLastFetched\":\"2026-09-22T00:05:23.182352Z\",\"branches\":[\"\"],\"commit\":\"d0d4103dc81a483edff48a27221a6d241f8328e3\",\"hunks\":null,\"lineMatches\":[{\"line\":\"    expect(subscriptionPlanLabel(\\\"PRO_V2\\\")).toBe(\\\"Pro (Legacy)\\\");\",\"lineNumber\":244,\"offsetAndLengths\":[[33,8]]}],\"language\":\"TypeScript\"},{\"type\":\"content\",\"path\":\"server/tests/unit/billing/billing-change-response/sync.test.ts\",\"repositoryID\":64108808,\"repository\":\"github.com/useautumn/autumn\",\"repoStars\":2680,\"repoLastFetched\":\"2026-09-21T23:20:50.617826Z\",\"branches\":[\"\"],\"commit\":\"10462e7fffd1f09f05b6c546f419c308ed8f1857\",\"hunks\":null,\"lineMatches\":[{\"line\":\"\\t\\t\\tactivated: [\\\"pro_v2\\\"],\",\"lineNumber\":48,\"offsetAndLengths\":[[15,8]]},{\"line\":\"\\t\\tconst newPro = makeFullCusProduct({ planId: \\\"pro_v2\\\", startedAt: NOW });\",\"lineNumber\":26,\"offsetAndLengths\":[[46,8]]}],\"language\":\"TypeScript\"},{\"type\":\"content\",\"path\":\"server/tests/unit/billing/billing-change-response/migrate.test.ts\",\"repositoryID\":64108808,\"repository\":\"github.com/useautumn/autumn\",\"repoStars\":2680,\"repoLastFetched\":\"2026-09-21T23:20:50.617826Z\",\"branches\":[\"\"],\"commit\":\"10462e7fffd1f09f05b6c546f419c308ed8f1857\",\"hunks\":null,\"lineMatches\":[{\"line\":\"\\t\\t\\tactivated: [\\\"pro_v2\\\"],\",\"lineNumber\":45,\"offsetAndLengths\":[[15,8]]},{\"line\":\"\\t\\tconst newPro = makeFullCusProduct({ planId: \\\"pro_v2\\\", startedAt: NOW });\",\"lineNumber\":28,\"offsetAndLengths\":[[46,8]]}],\"language\":\"TypeScript\"},{\"type\":\"content\",\"path\":\"server/tests/unit/catalogV2/claim-alias-insert-transaction.test.ts\",\"repositoryID\":64108808,\"repository\":\"github.com/useautumn/autumn\",\"repoStars\":2680,\"repoLastFetched\":\"2026-09-21T23:20:50.617826Z\",\"branches\":[\"\"],\"commit\":\"10462e7fffd1f09f05b6c546f419c308ed8f1857\",\"hunks\":null,\"lineMatches\":[{\"line\":\"\\t\\t\\t\\t\\t\\taliasReplacement: { alias_id: \\\"pro\\\", plan_id: \\\"pro_v2\\\" },\",\"lineNumber\":82,\"offsetAndLengths\":[[52,8]]}],\"language\":\"TypeScript\"},{\"type\":\"content\",\"path\":\"server/tests/unit/billing/billing-change-response/update-subscription.test.ts\",\"repositoryID\":64108808,\"repository\":\"github.com/useautumn/autumn\",\"repoStars\":2680,\"repoLastFetched\":\"2026-09-21T23:20:50.617826Z\",\"branches\":[\"\"],\"commit\":\"10462e7fffd1f09f05b6c546f419c308ed8f1857\",\"hunks\":null,\"lineMatches\":[{\"line\":\"\\t\\t\\tactivated: [\\\"pro_v2\\\"],\",\"lineNumber\":178,\"offsetAndLengths\":[[15,8]]},{\"line\":\"\\t\\tconst newPro = makeFullCusProduct({ planId: \\\"pro_v2\\\", startedAt: NOW });\",\"lineNumber\":161,\"offsetAndLengths\":[[46,8]]}],\"language\":\"TypeScript\"},{\"type\":\"content\",\"path\":\"server/tests/unit/catalogV2/productStateUtils/projectProductStatesContext.test.ts\",\"repositoryID\":64108808,\"repository\":\"github.com/useautumn/autumn\",\"repoStars\":2680,\"repoLastFetched\":\"2026-09-21T23:20:50.617826Z\",\"branches\":[\"\"],\"commit\":\"10462e7fffd1f09f05b6c546f419c308ed8f1857\",\"hunks\":null,\"lineMatches\":[{\"line\":\"\\t\\t\\t\\tupdateUpsert({ current: pro, next: { ...pro, id: \\\"pro_v2\\\" } }),\",\"lineNumber\":124,\"offsetAndLengths\":[[53,8]]}],\"language\":\"TypeScript\"},{\"type\":\"content\",\"path\":\"protocol/src/auth/_internal/schemas.ts\",\"repositoryID\":64169394,\"repository\":\"github.com/traycerai/traycer\",\"repoStars\":1502,\"repoLastFetched\":\"2026-09-22T00:05:23.182352Z\",\"branches\":[\"\"],\"commit\":\"d0d4103dc81a483edff48a27221a6d241f8328e3\",\"hunks\":null,\"lineMatches\":[{\"line\":\"    \\\"PRO_V2\\\",\",\"lineNumber\":95,\"offsetAndLengths\":[[4,8]]}],\"language\":\"TypeScript\"},{\"type\":\"content\",\"path\":\"protocol/src/auth/__tests__/auth-record-major-1-frozen.test.ts\",\"repositoryID\":64169394,\"repository\":\"github.com/traycerai/traycer\",\"repoStars\":1502,\"repoLastFetched\":\"2026-09-22T00:05:23.182352Z\",\"branches\":[\"\"],\"commit\":\"d0d4103dc81a483edff48a27221a6d241f8328e3\",\"hunks\":null,\"lineMatches\":[{\"line\":\"                      \\\"PRO_V2\\\",\",\"lineNumber\":365,\"offsetAndLengths\":[[22,8]]},{\"line\":\"                    \\\"PRO_V2\\\",\",\"lineNumber\":672,\"offsetAndLengths\":[[20,8]]},{\"line\":\"                    \\\"PRO_V2\\\",\",\"lineNumber\":916,\"offsetAndLengths\":[[20,8]]},{\"line\":\"                      \\\"PRO_V2\\\",\",\"lineNumber\":1140,\"offsetAndLengths\":[[22,8]]},{\"line\":\"                    \\\"PRO_V2\\\",\",\"lineNumber\":1423,\"offsetAndLengths\":[[20,8]]},{\"line\":\"                          \\\"PRO_V2\\\",\",\"lineNumber\":1823,\"offsetAndLengths\":[[26,8]]},{\"line\":\"                        \\\"PRO_V2\\\",\",\"lineNumber\":2130,\"offsetAndLengths\":[[24,8]]}],\"language\":\"TypeScript\"}]\ndata: [{\"value\":\"archived:yes\",\"label\":\"Include archived repos\",\"count\":68213,\"exhaustive\":true,\"kind\":\"utility\"},{\"value\":\"type:file\",\"label\":\"Code\",\"count\":456,\"exhaustive\":true,\"kind\":\"type\"},{\"value\":\"fork:yes\",\"label\":\"Include forked repos\",\"count\":282,\"exhaustive\":true,\"kind\":\"utility\"},{\"value\":\"lang:\\\"kicad schematic\\\"\",\"label\":\"KiCad Schematic\",\"count\":428,\"exhaustive\":true,\"kind\":\"lang\"},{\"value\":\"repo:^github\\\\.com/kata0510/Lily58$\",\"label\":\"github.com/kata0510/Lily58\",\"count\":428,\"exhaustive\":true,\"kind\":\"repo\"},{\"value\":\"lang:typescript\",\"label\":\"TypeScript\",\"count\":18,\"exhaustive\":true,\"kind\":\"lang\"},{\"value\":\"repo:^github\\\\.com/useautumn/autumn$\",\"label\":\"github.com/useautumn/autumn\",\"count\":18,\"exhaustive\":true,\"kind\":\"repo\"},{\"value\":\"-file:\\\\.test\\\\.\\\\w+$\",\"label\":\"Exclude .test.*\",\"count\":16,\"exhaustive\":true,\"kind\":\"file\"},{\"value\":\"lang:tsx\",\"label\":\"TSX\",\"count\":10,\"exhaustive\":true,\"kind\":\"lang\"},{\"value\":\"repo:^github\\\\.com/traycerai/traycer$\",\"label\":\"github.com/traycerai/traycer\",\"count\":10,\"exhaustive\":true,\"kind\":\"repo\"}]\n","exit_code":0,"status":"completed"}}
{"type":"item.started","item":{"id":"item_28","type":"command_execution","command":"/bin/bash -lc 'for n in 18 19 20 23 24 25 26 27 28; do echo PR$n; jq -r '\"'.title, (.body // \\\"\\\"), \\\"-- commits --\\\", (.commits.nodes[]?.commit.message // empty)' .styx_prs/pr_\"'$n.json; done'","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_28","type":"command_execution","command":"/bin/bash -lc 'for n in 18 19 20 23 24 25 26 27 28; do echo PR$n; jq -r '\"'.title, (.body // \\\"\\\"), \\\"-- commits --\\\", (.commits.nodes[]?.commit.message // empty)' .styx_prs/pr_\"'$n.json; done'","aggregated_output":"PR18\nRefined voice cloning settings\nUpdate settings for voice cloning.\n-- commits --\nRefined checkpointing and enabled weighted sampler for multi-speaker baseline training.\nRefined checkpointing and enabled weighted sampler for multi-speaker baseline training.\nMerge branch 'develop' of https://github.com/potion/potion-voice into develop\nMerge branch 'staging' into develop\nAdded support for Potion Diverse and Mozilla Common Voice data-sets as well as for continuation of training runs.\nMerge conflict resolved (naming convention diversion addressed.\nTest sentences added based on dataset arguments; training parameters revised; phoneme usage supported as argument.\nAdd loss to config explicitely; use different resblock_type_decoder by default\nphoneme support; updated training parameters; removed use_cpu option (unsupported).\nRemove overwrite of phoneme usage; use setting from config.\nAdded new script to generate a merged speaker embeddings file (for multiple datasets).\nMinor bug fix (argument misspelled).\nRemoved unnecessary import; improved comments.\nAdded new voice conversion option (idea 1: convert from multi-speaker model; idea 2: clone voice, synthesize speech, convert into recorded template; ...).\nReplaces hard-coded spk embedding reference; commented code more thoroughly.\nAdded new voice cloning approach (using fine-tuning via continue_path).\nSpelling and formatting improvements.\nRevised training parameters after testing (no freeze and unique phoneme cache per run).\nFixed typo\nExplicitly name phonemizer (i.e., espeak).\nRemove scaling factors for now; improved conversion settings.\nAdded numpy import for assert statements.\nFixed mistake in target_auddio_embedding computation.\nAdded clean-up steps to remove temporary files.\nFixed typo.\nAdded (but left them commented out) additional configuration options used in the YourTTS paper.\nAdded scale related synth parameters (to be tested / refined).\nAdded sampiling rate as argument (in preparation for higher quality training runs).\nAdded ffmpeg-normalize and require resemblyzer>=1.3.0.\nNew cloning step and deployment guidance added; TTS requirements updated.\nFixed typo in requirements files.\nTTS repo assumes config.json name is fixed ... it's hardcoded; so, keep it as config.json.\nPR19\nUpdate voice clone 23 05\n\n-- commits --\nChanged version of python package\nAdded code for new changes\nAdded changes\nAdded changes for synthesizer\nAdded change\nAdded path change\nAdded changes for not to save the salutation to global\nMerge branch 'staging' into update-voice-clone-23-05\nAdded code for deleting directory\nAdded delete code for template\nPR20\nStaging > Main\n\n-- commits --\nRefined checkpointing and enabled weighted sampler for multi-speaker baseline training.\nRefined checkpointing and enabled weighted sampler for multi-speaker baseline training.\nMerge branch 'develop' of https://github.com/potion/potion-voice into develop\nRefined voice cloning to support new capabilities to determine best model; updated recently adde capability to determine best multi-speaker model.\nAdded json output option.\nAdded syntax & usage examples for new find_best_* scripts; improved code readability\nMinor bug fix: mispelling of variable corrected.\nout.cloned_model_path now returns the full path, not just the path to the output folder.\nAdded updates for new feature\nupdated env\nAdded console\nBug fix: dataset naming conventions back in sync.\nMerge branch 'new-feature-score-model' into new-feature-updates\nAdded changes\nAdded path changes\nAdded path changes\nAdded path changes\nAdded changes to model name\nAdded changes to model name\nAdded code for removing speakers\nMerge pull request #17 from potion/new-feature-updates\n\nNew feature updates\nMerge pull request #15 from potion/new-feature-score-model\n\nNew feature score model\nMerge branch 'staging' into develop\nAdded support for Potion Diverse and Mozilla Common Voice data-sets as well as for continuation of training runs.\nMerge conflict resolved (naming convention diversion addressed.\nTest sentences added based on dataset arguments; training parameters revised; phoneme usage supported as argument.\nAdd loss to config explicitely; use different resblock_type_decoder by default\nphoneme support; updated training parameters; removed use_cpu option (unsupported).\nRemove overwrite of phoneme usage; use setting from config.\nAdded new script to generate a merged speaker embeddings file (for multiple datasets).\nMinor bug fix (argument misspelled).\nRemoved unnecessary import; improved comments.\nAdded new voice conversion option (idea 1: convert from multi-speaker model; idea 2: clone voice, synthesize speech, convert into recorded template; ...).\nReplaces hard-coded spk embedding reference; commented code more thoroughly.\nAdded new voice cloning approach (using fine-tuning via continue_path).\nSpelling and formatting improvements.\nRevised training parameters after testing (no freeze and unique phoneme cache per run).\nFixed typo\nExplicitly name phonemizer (i.e., espeak).\nRemove scaling factors for now; improved conversion settings.\nAdded numpy import for assert statements.\nFixed mistake in target_auddio_embedding computation.\nAdded clean-up steps to remove temporary files.\nFixed typo.\nAdded (but left them commented out) additional configuration options used in the YourTTS paper.\nAdded scale related synth parameters (to be tested / refined).\nAdded sampiling rate as argument (in preparation for higher quality training runs).\nAdded ffmpeg-normalize and require resemblyzer>=1.3.0.\nNew cloning step and deployment guidance added; TTS requirements updated.\nChanged version of python package\nAdded code for new changes\nAdded changes\nAdded changes for synthesizer\nAdded change\nAdded path change\nFixed typo in requirements files.\nTTS repo assumes config.json name is fixed ... it's hardcoded; so, keep it as config.json.\nMerge pull request #18 from potion/develop\n\nRefined voice cloning settings\nAdded changes for not to save the salutation to global\nMerge branch 'staging' into update-voice-clone-23-05\nAdded code for deleting directory\nAdded delete code for template\nMerge pull request #19 from potion/update-voice-clone-23-05\n\nUpdate voice clone 23 05\nSwitch to 48k as default sampling rate; disable mixed_precision due to possible min()/max() runtime error.\nAdd progress tracker and suppress default TTS command-line outputs.\nAdd progress tracker and suppress default TTS command-line outputs (part 2).\nMerge pull request #21 from potion/dev-find-best-fixup\n\nDev find best fixup\nMinor improvements to support CPU-only processing.\nAdded more usage examples and necessary Coqui.ai TTS changes.\nMerge pull request #22 from potion/dev-cpu-only\n\nDev cpu only\nUpdated requirements: git clone --depth 1 --branch v0.16.0 https://github.com/coqui-ai/TTS onwards addresses the CPU-only processing issues.\nEfficiency improvements: Rearranged loop order and removed re-init of speaker mgr and vocoder.\nMoved tqdm to outermost loop.\nEfficiency improvement: Removed re-init of vocoder.\nEnable use_speaker_encoder_as_loss byu default.\nDisable use_speaker_encoder_as_loss until we have a 48k speaker encoder.\nEfficiency improvements: re-use config and speaker embeddings when multiple models are evaluated.\nBug fix: removed unnecessary argument.\nNo more need to suppress cmd output; fix remove silence bug; code readability improvements; better error handling.\nFixed Vits config & model imports / typing references.\nFixed error handling for speaker embeddings.\nTyping improvements; trim_silence improvements.\nTesting alternative sim_score routine.\nImproved speaker similarity scoring approach.\nRemove scoring test import.\nFix ValueError issue.\nAdd unload model (clean-up) routine; code readibility improvements.\nAdd unload model (clean-up) routine.\nSwitching to 48k HZ sampling rate by default.\nsampling_rate check fixes\nSupport minimise call for multiple models (i.e., skip saving / overwritting minimised config).\nRefreshed documentation to reflect 48k sampling rate setup and usage.\nMerge branch 'staging' into develop-07-08\nMerge branch 'staging' into develop-07-08\nMerge pull request #24 from potion/develop-07-08\n\nDevelop 07 08 code updates\nAdded code for cloning script\nMerge pull request #25 from potion/develop-07-08-updates\n\nAdded code for cloning script\nAdded changes for sr 48000\nMerge pull request #26 from potion/develop-07-08-updates\n\nAdded changes for sr 48000\nExtended similarity scoring approach to also includde naturalness assessment.\nMerge branch 'develop' of https://github.com/potion/potion-voice into develop\nBug fix: Wrong path used for synth samples.\nAdded naturalness score to find_best_cloned_model; improved comments.\nBug fix: init quality score correction\nvoice quality score redefined: 3/4 sim_scoe and 1/4 nat_score.\nReadying updated scoring approach for staging.\nBug fix: Adjust to prev name change of init_synth argument.\nInit fixup; improved comments.\nImproved wording for console-based output.\nMerge pull request #23 from potion/develop\n\nDevelop\nupdated model name\nMerge pull request #27 from potion/develop\n\nupdated model name\nPR23\nDevelop\nSupport of 48k Hz sampling rate as default; GPU and CPU-based usage for all scripts but baseline training run.\r\n\r\nSee voice-cloning/docs/Voice\\ Cloning\\ @\\ 48k\\ Hz\\ Sampling\\ Rate\\ -\\ Step-by-Step.txt for example usage.\r\n\r\nModel assets can be found at s3://potion-ai-models/potion-voice-2023-08/\n-- commits --\nSwitch to 48k as default sampling rate; disable mixed_precision due to possible min()/max() runtime error.\nAdd progress tracker and suppress default TTS command-line outputs.\nAdd progress tracker and suppress default TTS command-line outputs (part 2).\nMerge pull request #21 from potion/dev-find-best-fixup\n\nDev find best fixup\nMinor improvements to support CPU-only processing.\nAdded more usage examples and necessary Coqui.ai TTS changes.\nMerge pull request #22 from potion/dev-cpu-only\n\nDev cpu only\nUpdated requirements: git clone --depth 1 --branch v0.16.0 https://github.com/coqui-ai/TTS onwards addresses the CPU-only processing issues.\nEfficiency improvements: Rearranged loop order and removed re-init of speaker mgr and vocoder.\nMoved tqdm to outermost loop.\nEfficiency improvement: Removed re-init of vocoder.\nEnable use_speaker_encoder_as_loss byu default.\nDisable use_speaker_encoder_as_loss until we have a 48k speaker encoder.\nEfficiency improvements: re-use config and speaker embeddings when multiple models are evaluated.\nBug fix: removed unnecessary argument.\nNo more need to suppress cmd output; fix remove silence bug; code readability improvements; better error handling.\nFixed Vits config & model imports / typing references.\nFixed error handling for speaker embeddings.\nTyping improvements; trim_silence improvements.\nTesting alternative sim_score routine.\nImproved speaker similarity scoring approach.\nRemove scoring test import.\nFix ValueError issue.\nAdd unload model (clean-up) routine; code readibility improvements.\nAdd unload model (clean-up) routine.\nSwitching to 48k HZ sampling rate by default.\nsampling_rate check fixes\nSupport minimise call for multiple models (i.e., skip saving / overwritting minimised config).\nRefreshed documentation to reflect 48k sampling rate setup and usage.\nMerge branch 'staging' into develop-07-08\nMerge branch 'staging' into develop-07-08\nMerge pull request #24 from potion/develop-07-08\n\nDevelop 07 08 code updates\nAdded code for cloning script\nMerge pull request #25 from potion/develop-07-08-updates\n\nAdded code for cloning script\nAdded changes for sr 48000\nMerge pull request #26 from potion/develop-07-08-updates\n\nAdded changes for sr 48000\nExtended similarity scoring approach to also includde naturalness assessment.\nMerge branch 'develop' of https://github.com/potion/potion-voice into develop\nBug fix: Wrong path used for synth samples.\nAdded naturalness score to find_best_cloned_model; improved comments.\nBug fix: init quality score correction\nvoice quality score redefined: 3/4 sim_scoe and 1/4 nat_score.\nReadying updated scoring approach for staging.\nBug fix: Adjust to prev name change of init_synth argument.\nInit fixup; improved comments.\nImproved wording for console-based output.\nPR24\nDevelop 07 08 code updates\n\n-- commits --\nChanged version of python package\nAdded code for new changes\nAdded changes\nAdded changes for synthesizer\nAdded change\nAdded path change\nMerge pull request #18 from potion/develop\n\nRefined voice cloning settings\nAdded changes for not to save the salutation to global\nMerge branch 'staging' into update-voice-clone-23-05\nAdded code for deleting directory\nAdded delete code for template\nMerge pull request #19 from potion/update-voice-clone-23-05\n\nUpdate voice clone 23 05\nMerge branch 'staging' into develop-07-08\nMerge branch 'staging' into develop-07-08\nPR25\nAdded code for cloning script\n\n-- commits --\nAdded code for cloning script\nPR26\nAdded changes for sr 48000\n\n-- commits --\nAdded changes for sr 48000\nPR27\nupdated model name\n\n-- commits --\nupdated model name\nPR28\nGCP support, upgraded TTS, new model with cleaner data\n\n-- commits --\nAdded GCP support details and revised config settings for 48k Hz sampling rate usage with TTS v0.20.6\nRicher config settings (added sampling rate-based configs) and updated training settings.\nImproved error handling and robustness; added support for FLAC files - VCTK v0.92 preprocessing.\nAdd support for 24k sampling rate.\nImproved for directory name in extract_archive\nBug fix in extract_archive\nSupport VCTK v0.92 _mic[12] naming convention.\nRename wav_dir to audio_dir and correct function call arguments.\nVerify that after extraction the dataset root and its audio and transcription file directories are identified correctly.\nImproved quality assurance: Ensure that each speaker had transcriptions with matching audio files and vice versa.\nfixups and added support for training merged, VCTK-formatted datasets.\nAdded support for training merged, VCTK-formatted datasets.\nNew cloning approach with termination condition based on speaker similarity and voice naturalness scores.\nAdded minimum scoring thresholds for speaker similarity and naturalness; updated scoring parameters.\nSkip checkpoint scoring iff keyboard interrupt.\nExpand pattern to also pick up best_simnat_checkpoint_*.pth checkpoint files.\n48k Voice cloning documentation now based on clone_voice_via_continue_n_natqa.py; adjusted default cloning parameters.\nfind_best_cloned_model.py now also checks for minimum quality nat & sim scores; returns None for best_model if they are not met.\nAdd support for training speaker encoder model at 16k and 48k sampling rates.\nBug fix: add use_cuda parameters whenever required\nInit logger if None is given.\nEvaluation parameter passing fix.\nBug fix: Eval routine output init missing.\n","exit_code":0,"status":"completed"}}
{"type":"item.started","item":{"id":"item_29","type":"command_execution","command":"/bin/bash -lc \"curl -sSL --max-time 20 'https://www.bing.com/search?format=rss&q=site%3Asendpotion.com+%22pro_v2%22' | sed 's/></>\\\\n</g' | rg '<title>|<link>|<description>' | sed -n '1,80p'\ncurl -sSL --max-time 20 'https://www.bing.com/search?format=rss&q=%22pro_v2%22+%22voice+clone%22' | sed 's/></>\\\\n</g' | rg '<title>|<link>|<description>' | sed -n '1,80p'\"","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_29","type":"command_execution","command":"/bin/bash -lc \"curl -sSL --max-time 20 'https://www.bing.com/search?format=rss&q=site%3Asendpotion.com+%22pro_v2%22' | sed 's/></>\\\\n</g' | rg '<title>|<link>|<description>' | sed -n '1,80p'\ncurl -sSL --max-time 20 'https://www.bing.com/search?format=rss&q=%22pro_v2%22+%22voice+clone%22' | sed 's/></>\\\\n</g' | rg '<title>|<link>|<description>' | sed -n '1,80p'\"","aggregated_output":"<title>Bing: site:sendpotion.com \"pro_v2\"</title>\n<link>http://www.bing.com:80/search?q=site%3asendpotion.com+%22pro_v2%22</link>\n<description>Search results</description>\n<title>site:sendpotion.com \"pro_v2\"</title>\n<link>http://www.bing.com:80/search?q=site%3asendpotion.com+%22pro_v2%22</link>\n<title>ProDemand Automotive Repair Information - Mitchell1, Snap-on Inc.</title>\n<link>https://www.prodemand.com/</link>\n<description>ProDemand® delivers complete OEM repair, estimating &amp; maintenance information, along with exclusive real-world knowledge in a single lookup, to help automotive technicians repair vehicles more accurately and efficiently.</description>\n<title>Procore Log In</title>\n<link>https://login.procore.com/</link>\n<description>Welcome to the world's most widely used construction project management platform. Log in to your Procore account using your email and password.</description>\n<title>PRO Definition &amp; Meaning - Merriam-Webster</title>\n<link>https://www.merriam-webster.com/dictionary/pro</link>\n<description>The meaning of PRO is an argument or evidence in affirmation. How to use pro in a sentence.</description>\n<title>Freight Tracking by PRO Number - Parcels</title>\n<link>https://parcelsapp.com/en/freight-tracking</link>\n<description>A PRO number is the nine-digit number used to identify a freight bill, affixed to shipments in the form of a scannable barcode sticker. Once you've entered the PRO number, your tracking results will display for the shipment.</description>\n<title>PRO | English meaning - Cambridge Dictionary</title>\n<link>https://dictionary.cambridge.org/dictionary/english/pro</link>\n<description>PRO definition: 1. an advantage to or a reason for doing something: 2. a person who plays a sport as a job rather…. Learn more.</description>\n<title>Pro Football Talk - NBC Sports</title>\n<link>https://www.nbcsports.com/nfl/profootballtalk</link>\n<description>Find all the latest ProFootballTalk news, live coverage, videos, highlights, stats, predictions, and results right here on NBC Sports.</description>\n<title>PRO</title>\n<link>https://www.pro-bikegear.com/</link>\n<description>Find your perfect saddle or cockpit in just a few steps.</description>\n<title>Available with NFL+ Premium | NFL Pro</title>\n<link>https://pro.nfl.com/nflpro</link>\n<description>With NFL+ Premium, get access to NFL Pro and over 95 unique player and team performance stats and all-22 film for an advanced analytics platform (available on desktop and mobile web).</description>\n<title>PRO Definition &amp; Meaning | Dictionary.com</title>\n<link>https://www.dictionary.com/browse/pro</link>\n<description>Pro is a Latin root word meaning for. If you make a list of pros and cons, you are listing the reasons for doing something and the reasons not to, respectively. Pro is also the shortened form of the word \"professional,\" often referring to professional sports.</description>\n<title>NFL Pro</title>\n<link>https://pro.nfl.com/</link>\n<description>Next Gen Stats and All 22 Film.</description>\n<title>Bing: \"pro_v2\" \"voice clone\"</title>\n<link>http://www.bing.com:80/search?q=%22pro_v2%22+%22voice+clone%22</link>\n<description>Search results</description>\n<title>\"pro_v2\" \"voice clone\"</title>\n<link>http://www.bing.com:80/search?q=%22pro_v2%22+%22voice+clone%22</link>\n<title>ProDemand Automotive Repair Information - Mitchell1, Snap-on Inc.</title>\n<link>https://www.prodemand.com/</link>\n<description>ProDemand® delivers complete OEM repair, estimating &amp; maintenance information, along with exclusive real-world knowledge in a single lookup, to help automotive technicians repair vehicles more accurately and efficiently.</description>\n<title>Procore Log In</title>\n<link>https://login.procore.com/</link>\n<description>Welcome to the world's most widely used construction project management platform. Log in to your Procore account using your email and password.</description>\n<title>PRO Definition &amp; Meaning - Merriam-Webster</title>\n<link>https://www.merriam-webster.com/dictionary/pro</link>\n<description>The meaning of PRO is an argument or evidence in affirmation. How to use pro in a sentence.</description>\n<title>Freight Tracking by PRO Number - Parcels</title>\n<link>https://parcelsapp.com/en/freight-tracking</link>\n<description>A PRO number is the nine-digit number used to identify a freight bill, affixed to shipments in the form of a scannable barcode sticker. Once you've entered the PRO number, your tracking results will display for the shipment.</description>\n<title>PRO | English meaning - Cambridge Dictionary</title>\n<link>https://dictionary.cambridge.org/dictionary/english/pro</link>\n<description>PRO definition: 1. an advantage to or a reason for doing something: 2. a person who plays a sport as a job rather…. Learn more.</description>\n<title>Pro Football Talk - NBC Sports</title>\n<link>https://www.nbcsports.com/nfl/profootballtalk</link>\n<description>Find all the latest ProFootballTalk news, live coverage, videos, highlights, stats, predictions, and results right here on NBC Sports.</description>\n<title>PRO</title>\n<link>https://www.pro-bikegear.com/</link>\n<description>Find your perfect saddle or cockpit in just a few steps.</description>\n<title>Available with NFL+ Premium | NFL Pro</title>\n<link>https://pro.nfl.com/nflpro</link>\n<description>With NFL+ Premium, get access to NFL Pro and over 95 unique player and team performance stats and all-22 film for an advanced analytics platform (available on desktop and mobile web).</description>\n<title>PRO Definition &amp; Meaning | Dictionary.com</title>\n<link>https://www.dictionary.com/browse/pro</link>\n<description>Pro is a Latin root word meaning for. If you make a list of pros and cons, you are listing the reasons for doing something and the reasons not to, respectively. Pro is also the shortened form of the word \"professional,\" often referring to professional sports.</description>\n<title>NFL Pro</title>\n<link>https://pro.nfl.com/</link>\n<description>Next Gen Stats and All 22 Film.</description>\n","exit_code":0,"status":"completed"}}
{"type":"item.started","item":{"id":"item_30","type":"command_execution","command":"/bin/bash -lc \"env | cut -d= -f1 | sort | rg -i 'github|token|gh_|styx|task|issue'\"","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_30","type":"command_execution","command":"/bin/bash -lc \"env | cut -d= -f1 | sort | rg -i 'github|token|gh_|styx|task|issue'\"","aggregated_output":"GH_PAGER\n","exit_code":0,"status":"completed"}}
{"type":"item.started","item":{"id":"item_31","type":"command_execution","command":"/bin/bash -lc 'node --version && npm --version && python3 --version && git status --short'","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_31","type":"command_execution","command":"/bin/bash -lc 'node --version && npm --version && python3 --version && git status --short'","aggregated_output":"v14.21.3\n6.14.18\nPython 3.10.21\n","exit_code":0,"status":"completed"}}
{"type":"item.started","item":{"id":"item_32","type":"command_execution","command":"/bin/bash -lc 'npm ls --depth=0 2>/dev/null && npm ls mocha jest proxyquire sinon --depth=0 2>/dev/null || true'","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_32","type":"command_execution","command":"/bin/bash -lc 'npm ls --depth=0 2>/dev/null && npm ls mocha jest proxyquire sinon --depth=0 2>/dev/null || true'","aggregated_output":"potion-voice@1.0.0 /workspace\n├── @bugsnag/js@7.16.2\n├── aws-code-deploy@1.0.11\n├── aws-sdk@2.1134.0\n├── fs-extra@9.1.0\n├── mongoose@6.13.11\n├── pm2@5.2.0\n├── rimraf@3.0.2\n└── uuid@8.3.2\n\npotion-voice@1.0.0 /workspace\n└── (empty)\n\n","exit_code":0,"status":"completed"}}
{"type":"item.completed","item":{"id":"item_33","type":"agent_message","text":"I found the concrete failure path: the cloning worker only reads `job._doc`, while newer tiered requests can arrive as plain/enveloped JSON; that leaves the job ID undefined, so status updates resolve to `null` and the work never starts. I’m making the queue contract backward-compatible, persisting the tier through both cloning/profile records, and making `pro_v2` an explicit pipeline selection with safe legacy defaults."}}
{"type":"item.started","item":{"id":"item_34","type":"file_change","changes":[{"path":"/workspace/app/services/voice_cloning/voice_cloning_model.js","kind":"update"},{"path":"/workspace/voice-cloning-job-handler/job_payload.js","kind":"add"},{"path":"/workspace/voice-cloning-job-handler/pipeline_config.js","kind":"add"},{"path":"/workspace/voice-cloning-job-handler/user_audio_profile/user_audio_profile_model.js","kind":"update"},{"path":"/workspace/voice-cloning-job-handler/voice_cloning/voice_cloning_model.js","kind":"update"},{"path":"/workspace/voice-synthsizer-job-handler/user_audio_profile/user_audio_profile_model.js","kind":"update"}],"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_34","type":"file_change","changes":[{"path":"/workspace/app/services/voice_cloning/voice_cloning_model.js","kind":"update"},{"path":"/workspace/voice-cloning-job-handler/job_payload.js","kind":"add"},{"path":"/workspace/voice-cloning-job-handler/pipeline_config.js","kind":"add"},{"path":"/workspace/voice-cloning-job-handler/user_audio_profile/user_audio_profile_model.js","kind":"update"},{"path":"/workspace/voice-cloning-job-handler/voice_cloning/voice_cloning_model.js","kind":"update"},{"path":"/workspace/voice-synthsizer-job-handler/user_audio_profile/user_audio_profile_model.js","kind":"update"}],"status":"completed"}}
{"type":"item.started","item":{"id":"item_35","type":"command_execution","command":"/bin/bash -lc \"nl -ba voice-cloning-job-handler/index.js | sed -n '1,360p' && nl -ba voice-synthsizer-job-handler/user_audio_profile/user_audio_profile_model.js | sed -n '1,90p' && git diff --stat && git diff --check\"","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_35","type":"command_execution","command":"/bin/bash -lc \"nl -ba voice-cloning-job-handler/index.js | sed -n '1,360p' && nl -ba voice-synthsizer-job-handler/user_audio_profile/user_audio_profile_model.js | sed -n '1,90p' && git diff --stat && git diff --check\"","aggregated_output":"     1\tconst fs = require('fs')\n     2\tconst https = require('https')\n     3\tconst exec = require('child_process').exec\n     4\tconst AWS = require('aws-sdk')\n     5\t\n     6\tconst Bugsnag = require('@bugsnag/js')\n     7\tconst mongoose = require('mongoose')\n     8\tconst version = require('./package.json').version\n     9\tconst sqs = require('../app/services/sqs')\n    10\tconst s3 = require('../app/services/s3')\n    11\tconst voiceCloningService = require('./voice_cloning')\n    12\tconst userAudioProfileService = require('./user_audio_profile')\n    13\t\n    14\tAWS.config.update({ region: 'us-west-2' })\n    15\tconst sqsQueueUrl = process.env.SQS_URL\n    16\tconst mongoUriDev = process.env.MONGODB_URI_DEV\n    17\tconst mongoUriStaging = process.env.MONGODB_URI_STAGING\n    18\tconst mongoUriProd = process.env.MONGODB_URI_PROD\n    19\tlet throttleMessageFetching = true\n    20\tconst APP_ENV = process.env.POTION_APP_ENV\n    21\t\n    22\tconst cloudFrontUrlProd = process.env.CLOUDFRONT_URL_PROD\n    23\tconst cloudFrontUrlDev = process.env.CLOUDFRONT_URL_DEV\n    24\tconst cloudFrontUrlStaging = process.env.CLOUDFRONT_URL_STAGING\n    25\t\n    26\tconst updateUrl = (str, cloudFrontUrl) => {\n    27\t  const host = new URL(str).host\n    28\t  return str.replace(`https://${host}`, cloudFrontUrl)\n    29\t}\n    30\t\n    31\tfunction connectDB(dbUri, retryCount = 0) {\n    32\t  return new Promise((resolve, reject) => {\n    33\t    console.log('Connection Attempt : ', retryCount)\n    34\t    mongoose.set('strictQuery', true)\n    35\t    mongoose\n    36\t      .connect(dbUri)\n    37\t      .then((msg) => {\n    38\t        console.log('Connected to Mongo DB !')\n    39\t        resolve()\n    40\t      })\n    41\t      .catch((err) => {\n    42\t        console.log('Failed to connect dns mongo: ', err)\n    43\t        if (retryCount < 6) {\n    44\t          retryCount++\n    45\t          connectDB(dbUri, retryCount)\n    46\t        }\n    47\t      })\n    48\t  })\n    49\t}\n    50\t\n    51\tfunction execShellCommand(cmd, logPath) {\n    52\t  // const exec = require(\"child_process\").exec;\n    53\t  return new Promise((resolve, reject) => {\n    54\t    exec(cmd, { maxBuffer: 1024 * 1000000 }, async (error, stdout, stderr) => {\n    55\t      if (error) {\n    56\t        console.log('Error while proccessing python command', error)\n    57\t        reject(error)\n    58\t      }\n    59\t      // console.log('Stdout --- ', stdout)\n    60\t      // console.log('Stderror --- ', stderr)\n    61\t      await fs.promises.writeFile(`${logPath}/error.log`, stderr)\n    62\t      await fs.promises.writeFile(`${logPath}/info.log`, stdout)\n    63\t\n    64\t      resolve()\n    65\t    })\n    66\t  })\n    67\t}\n    68\t\n    69\tasync function getFile(waveUrl, path) {\n    70\t  return new Promise((resolve) => {\n    71\t    https.get(waveUrl, (res) => {\n    72\t      const writeStream = fs.createWriteStream(path)\n    73\t\n    74\t      res.pipe(writeStream)\n    75\t\n    76\t      writeStream.on('finish', () => {\n    77\t        writeStream.close()\n    78\t        resolve()\n    79\t      })\n    80\t    })\n    81\t  })\n    82\t}\n    83\t\n    84\tfunction pad(s) {\n    85\t  while (s.length < 3) s = '0' + s // IN future we will need padding to 4\n    86\t  return s\n    87\t}\n    88\t\n    89\tconst processQueue = () => {\n    90\t  /* eslint-disable no-async-promise-executor */\n    91\t  return new Promise(async (resolve, reject) => {\n    92\t    try {\n    93\t      const response = await sqs.fetchMessageFromSQS(sqsQueueUrl)\n    94\t\n    95\t      if (\n    96\t        typeof response.Messages !== 'undefined' &&\n    97\t        response.Messages.length > 0\n    98\t      ) {\n    99\t        throttleMessageFetching = false\n   100\t        const job = JSON.parse(response.Messages[0].Body)\n   101\t        const receiptHandle = response.Messages[0].ReceiptHandle\n   102\t        console.log('job===', job)\n   103\t\n   104\t        const { metadata, input, _id, userAudioProfileId } = job._doc\n   105\t        console.log('userAudioProfileId', userAudioProfileId)\n   106\t        console.log('_id', _id)\n   107\t        const { env } = job\n   108\t        console.log('env', env)\n   109\t\n   110\t        console.log('metadata------', metadata)\n   111\t        console.log('input', input)\n   112\t        const DB_URI =\n   113\t          env === 'production'\n   114\t            ? mongoUriProd\n   115\t            : env === 'staging'\n   116\t            ? mongoUriStaging\n   117\t            : mongoUriDev\n   118\t\n   119\t        console.log('DB_URI ', DB_URI)\n   120\t        await connectDB(DB_URI)\n   121\t\n   122\t        const cloudFrontUrl =\n   123\t          env === 'production'\n   124\t            ? cloudFrontUrlProd\n   125\t            : env === 'staging'\n   126\t            ? cloudFrontUrlStaging\n   127\t            : cloudFrontUrlDev\n   128\t\n   129\t        try {\n   130\t          await sqs.deleteMessageFromSQS(sqsQueueUrl, receiptHandle)\n   131\t\n   132\t          const { directoryName } = metadata\n   133\t          console.log('directoryName', directoryName)\n   134\t          const logPath = `/mnt/efs/potion-voice/${env}/${directoryName}`\n   135\t          if (!fs.existsSync(logPath)) {\n   136\t            fs.mkdirSync(logPath, { recursive: true })\n   137\t          }\n   138\t          // update the db model to processing\n   139\t          await voiceCloningService.update({ _id, status: 'processing' })\n   140\t          await userAudioProfileService.update({\n   141\t            _id: userAudioProfileId,\n   142\t            status: 'processing',\n   143\t          })\n   144\t\n   145\t          // create directory for userid-useraudioprofileid if not exist\n   146\t          const rootPath = `/tmp/${directoryName}`\n   147\t          const wavePath = `${rootPath}/wav48/1`\n   148\t          if (!fs.existsSync(wavePath)) {\n   149\t            fs.mkdirSync(wavePath, { recursive: true })\n   150\t          }\n   151\t\n   152\t          const txtPath = `${rootPath}/txt/1`\n   153\t          if (!fs.existsSync(txtPath)) {\n   154\t            fs.mkdirSync(txtPath, { recursive: true })\n   155\t          }\n   156\t          // download the training data files and put it in respective directories\n   157\t          for (let index = 0; index < input.length; index++) {\n   158\t            const item = input[index]\n   159\t\n   160\t            const { waveUrl, originalText } = item\n   161\t            // download wave file\n   162\t            const waveFilePath = `${wavePath}/1_${pad('' + (index + 1))}.wav`\n   163\t\n   164\t            await getFile(updateUrl(waveUrl, cloudFrontUrl), waveFilePath)\n   165\t\n   166\t            const txtFilePath = `${txtPath}/1_${pad('' + (index + 1))}.txt`\n   167\t            await fs.promises.writeFile(txtFilePath, originalText)\n   168\t          }\n   169\t\n   170\t          const zipFileName = directoryName + '.tgz'\n   171\t\n   172\t          // /tmp/directoryName.tgz\n   173\t\n   174\t          await execShellCommand(\n   175\t            `cd /tmp && tar czvf ${zipFileName}  ${directoryName}`,\n   176\t            logPath\n   177\t          )\n   178\t          console.log('ZIP created ', zipFileName)\n   179\t\n   180\t          // re-sample audio\n   181\t          const SAMPLING_LABEL = `Time Taken for re-sampling ${directoryName}`\n   182\t          console.time(SAMPLING_LABEL)\n   183\t\n   184\t          const outputPath = `/mnt/efs/potion-voice/${env}/${directoryName}`\n   185\t\n   186\t          const samplingCommand = `python3 ../voice-cloning/prepare_datasets.py --dataset_preset potion_voice_cloning --dataset_archive_path /tmp/${zipFileName} --output_path ${outputPath}`\n   187\t          console.log('samplingCommand ', samplingCommand)\n   188\t          const samplingResponse = await execShellCommand(\n   189\t            samplingCommand,\n   190\t            logPath\n   191\t          )\n   192\t          console.timeEnd(SAMPLING_LABEL)\n   193\t\n   194\t          // /mnt/efs/potion-voice/${env}/speakrs.pth\n   195\t          // /mnt/efs/potion-voice/${env}/txt\n   196\t          // /mnt/efs/potion-voice/${env}/${directoryName}/wav\n   197\t\n   198\t          const outPath = `/mnt/efs/potion-voice/${env}/${directoryName}/sr22050/${directoryName}`\n   199\t\n   200\t          const resultsPath = outPath + '/results'\n   201\t\n   202\t          //update pth file for cloning\n   203\t          // clone the voice\n   204\t          const VOICE_CLONING_LABEL = `Time Taken for voice cloning ${directoryName}`\n   205\t          console.time(VOICE_CLONING_LABEL)\n   206\t          const trainingModelCommand = `python3 ../voice-cloning/clone_voice.py --baseline_model_path ../voice-cloning/pretrained-models/checkpoint_365000.pth --speaker_dataset_path ${outPath} --speaker_embeddings_path ${\n   207\t            outPath + '/speakers.pth'\n   208\t          } --output_path ${resultsPath}`\n   209\t\n   210\t          console.log('Training Model Command', trainingModelCommand)\n   211\t          const trainingResponse = await execShellCommand(\n   212\t            trainingModelCommand,\n   213\t            logPath\n   214\t          )\n   215\t\n   216\t          console.timeEnd(VOICE_CLONING_LABEL)\n   217\t\n   218\t          let generatedDirectoryName = ''\n   219\t          fs.readdirSync(`${resultsPath}/`).forEach((file) => {\n   220\t            if (file.includes('vits_potion_clone'))\n   221\t              // use output from above to get right path and directory name\n   222\t              generatedDirectoryName = file\n   223\t          })\n   224\t\n   225\t          // minimize cloning model\n   226\t          const VOICE_MINIMIZE_LABEL = `Time Taken for voice minimizing cloning ${directoryName}`\n   227\t          console.time(VOICE_MINIMIZE_LABEL)\n   228\t          const minimizeCloningModelCommand = `python3 ../voice-cloning/minimize_cloned_voice_model.py --voice_model_asset_path ${\n   229\t            resultsPath + '/' + generatedDirectoryName + '/'\n   230\t          } --voice_model_name checkpoint_365200.pth`\n   231\t\n   232\t          console.log(\n   233\t            'Minimize Cloning Model Command',\n   234\t            minimizeCloningModelCommand\n   235\t          )\n   236\t          const minimizeCloning = await execShellCommand(\n   237\t            minimizeCloningModelCommand,\n   238\t            logPath\n   239\t          )\n   240\t          console.timeEnd(VOICE_MINIMIZE_LABEL)\n   241\t\n   242\t          // Add the  code to update location of generated model and status into DB\n   243\t          await voiceCloningService.update({ _id, status: 'completed' })\n   244\t\n   245\t          const training_model_path = {\n   246\t            voice_model_path: `${resultsPath}/${generatedDirectoryName}/checkpoint_365200.pth`,\n   247\t            voice_model_config_path: `${resultsPath}/${generatedDirectoryName}/config.json`,\n   248\t            voice_model_speakers_file_path: `${outPath}/speakers.pth`, // TODO update the name to voice model speakers embeddings\n   249\t            voice_model_light_path: `${resultsPath}/${generatedDirectoryName}/checkpoint_365200_light.pth`,\n   250\t            voice_model_config_light_path: `${resultsPath}/${generatedDirectoryName}/config_light.json`,\n   251\t          }\n   252\t\n   253\t          await userAudioProfileService.update({\n   254\t            _id: userAudioProfileId,\n   255\t            status: 'completed',\n   256\t            training_model_path,\n   257\t          })\n   258\t\n   259\t          // add code to put that model into S3\n   260\t          let keys = Object.keys(training_model_path)\n   261\t\n   262\t          const training_model_s3_path = {}\n   263\t\n   264\t          for (let index = 0; index < keys.length; index++) {\n   265\t            const path = training_model_path[keys[index]]\n   266\t            const s3Path = await s3.upload({\n   267\t              filePath: path,\n   268\t              fileName: `${directoryName}/${path.split('/').pop()}`,\n   269\t              bucket: `potion-voice-users-training-model/${env}`,\n   270\t            })\n   271\t            training_model_s3_path[keys[index]] = s3Path\n   272\t          }\n   273\t          //  add S3 path to user audio profile model\n   274\t          await userAudioProfileService.update({\n   275\t            _id: userAudioProfileId,\n   276\t            training_model_s3_path,\n   277\t          })\n   278\t        } catch (error) {\n   279\t          console.log('error********************', error)\n   280\t          Bugsnag.notify(\n   281\t            new Error(\n   282\t              `Unable to train for voice cloning videos ` + JSON.stringify(job)\n   283\t            )\n   284\t          )\n   285\t          Bugsnag.notify(error)\n   286\t\n   287\t          // update the db to set status as error\n   288\t          await voiceCloningService.update({ _id, status: 'error' })\n   289\t          await userAudioProfileService.update({\n   290\t            _id: userAudioProfileId,\n   291\t            status: 'error',\n   292\t          })\n   293\t\n   294\t          resolve() // to continue working on new jobs\n   295\t        }\n   296\t      } else {\n   297\t        throttleMessageFetching = true\n   298\t      }\n   299\t      resolve()\n   300\t    } catch (error) {\n   301\t      console.error('Error while training voice clone', { error })\n   302\t      Bugsnag.notify(error)\n   303\t      resolve() // to continue working on new jobs\n   304\t    } finally {\n   305\t      mongoose.connection.close()\n   306\t    }\n   307\t  })\n   308\t}\n   309\t\n   310\tfunction sleep(ms) {\n   311\t  return new Promise((resolve) => {\n   312\t    setTimeout(resolve, ms)\n   313\t  })\n   314\t}\n   315\tconst init = async () => {\n   316\t  console.log('potion Voice Clone Process Started')\n   317\t  Bugsnag.start({\n   318\t    appVersion: APP_ENV + version,\n   319\t    apiKey: process.env.BUGSNAG_BACKEND_KEY,\n   320\t    releaseStage: process.env.NODE_ENV,\n   321\t  })\n   322\t\n   323\t  try {\n   324\t    while (true) {\n   325\t      await processQueue()\n   326\t      if (throttleMessageFetching) await sleep(2000)\n   327\t    }\n   328\t  } catch (error) {\n   329\t    Bugsnag.notify(error)\n   330\t  }\n   331\t}\n   332\tinit()\n     1\tconst mongoose = require('mongoose')\n     2\tconst Schema = mongoose.Schema\n     3\t\n     4\tconst UserAudioProfileSchema = Schema(\n     5\t  {\n     6\t    userId: {\n     7\t      type: Schema.Types.ObjectId,\n     8\t      ref: 'User',\n     9\t      required: true,\n    10\t    },\n    11\t    name: {\n    12\t      type: String,\n    13\t      required: true,\n    14\t      default: '',\n    15\t    },\n    16\t    tier: {\n    17\t      type: String,\n    18\t      required: false,\n    19\t      default: null,\n    20\t      lowercase: true,\n    21\t      trim: true,\n    22\t    },\n    23\t    status: {\n    24\t      type: String,\n    25\t      required: false,\n    26\t      default: 'created',\n    27\t    },\n    28\t    training_model_path: {\n    29\t      type: Schema.Types.Mixed,\n    30\t      default: null,\n    31\t    },\n    32\t    training_model_s3_path: {\n    33\t      type: Schema.Types.Mixed,\n    34\t      default: null,\n    35\t    },\n    36\t    deleted: {\n    37\t      type: Boolean,\n    38\t      required: true,\n    39\t      default: false,\n    40\t    },\n    41\t  },\n    42\t  {\n    43\t    timestamps: true,\n    44\t  }\n    45\t)\n    46\t\n    47\tmodule.exports = mongoose.model('UserAudioProfile', UserAudioProfileSchema)\n app/services/voice_cloning/voice_cloning_model.js                  | 7 +++++++\n .../user_audio_profile/user_audio_profile_model.js                 | 7 +++++++\n voice-cloning-job-handler/voice_cloning/voice_cloning_model.js     | 7 +++++++\n .../user_audio_profile/user_audio_profile_model.js                 | 7 +++++++\n 4 files changed, 28 insertions(+)\n","exit_code":0,"status":"completed"}}
{"type":"item.started","item":{"id":"item_36","type":"file_change","changes":[{"path":"/workspace/voice-cloning-job-handler/index.js","kind":"update"}],"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_36","type":"file_change","changes":[{"path":"/workspace/voice-cloning-job-handler/index.js","kind":"update"}],"status":"completed"}}
{"type":"item.started","item":{"id":"item_37","type":"command_execution","command":"/bin/bash -lc 'node --check voice-cloning-job-handler/index.js && node --check voice-cloning-job-handler/job_payload.js && node --check voice-cloning-job-handler/pipeline_config.js && git diff --check && git status --short'","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_37","type":"command_execution","command":"/bin/bash -lc 'node --check voice-cloning-job-handler/index.js && node --check voice-cloning-job-handler/job_payload.js && node --check voice-cloning-job-handler/pipeline_config.js && git diff --check && git status --short'","aggregated_output":" M app/services/voice_cloning/voice_cloning_model.js\n M voice-cloning-job-handler/index.js\n M voice-cloning-job-handler/user_audio_profile/user_audio_profile_model.js\n M voice-cloning-job-handler/voice_cloning/voice_cloning_model.js\n M voice-synthsizer-job-handler/user_audio_profile/user_audio_profile_model.js\n?? voice-cloning-job-handler/job_payload.js\n?? voice-cloning-job-handler/pipeline_config.js\n","exit_code":0,"status":"completed"}}
{"type":"item.started","item":{"id":"item_38","type":"file_change","changes":[{"path":"/workspace/package.json","kind":"update"},{"path":"/workspace/voice-cloning-job-handler/index.js","kind":"update"},{"path":"/workspace/voice-cloning-job-handler/package.json","kind":"update"},{"path":"/workspace/voice-cloning-job-handler/test/pro_v2_job.test.js","kind":"add"}],"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_38","type":"file_change","changes":[{"path":"/workspace/package.json","kind":"update"},{"path":"/workspace/voice-cloning-job-handler/index.js","kind":"update"},{"path":"/workspace/voice-cloning-job-handler/package.json","kind":"update"},{"path":"/workspace/voice-cloning-job-handler/test/pro_v2_job.test.js","kind":"add"}],"status":"completed"}}
{"type":"item.started","item":{"id":"item_39","type":"command_execution","command":"/bin/bash -lc \"sed -n '1,45p' package-lock.json 2>/dev/null || true && npm test\"","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_39","type":"command_execution","command":"/bin/bash -lc \"sed -n '1,45p' package-lock.json 2>/dev/null || true && npm test\"","aggregated_output":"\n> potion-voice@1.0.0 test /workspace\n> node voice-cloning-job-handler/test/pro_v2_job.test.js\n\nok - decodes a flat pro_v2 cloning request\nok - decodes the legacy Mongoose envelope with a top-level tier\nok - decodes SNS and request envelopes used by tiered submissions\nok - normalizes tier values and rejects malformed jobs\nok - selects configured pro_v2 assets with working legacy fallbacks\nok - persists pro_v2 on cloning jobs and audio profiles\n","exit_code":0,"status":"completed"}}
{"type":"item.completed","item":{"id":"item_40","type":"agent_message","text":"The compatibility tests now pass for flat `pro_v2`, legacy Mongoose, and SNS-wrapped submissions. I’ve also moved the completed transition until after every model asset uploads, so a clone can no longer report `completed` while its model state is still `null`; I’m doing a final pass over failure/ack behavior and schema consistency."}}
{"type":"item.started","item":{"id":"item_41","type":"command_execution","command":"/bin/bash -lc \"git diff -- . ':\"'!package-lock.json'\"' && git diff --check && git status --short\"","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_41","type":"command_execution","command":"/bin/bash -lc \"git diff -- . ':\"'!package-lock.json'\"' && git diff --check && git status --short\"","aggregated_output":"diff --git a/app/services/voice_cloning/voice_cloning_model.js b/app/services/voice_cloning/voice_cloning_model.js\nindex d6048b6..3376456 100644\n--- a/app/services/voice_cloning/voice_cloning_model.js\n+++ b/app/services/voice_cloning/voice_cloning_model.js\n@@ -13,6 +13,13 @@ const VoiceCloningSchema = Schema(\n       ref: 'UserAudioProfile',\n       required: true,\n     },\n+    tier: {\n+      type: String,\n+      required: false,\n+      default: null,\n+      lowercase: true,\n+      trim: true,\n+    },\n     status: {\n       type: String,\n       required: false,\ndiff --git a/package.json b/package.json\nindex bd78508..0011b37 100644\n--- a/package.json\n+++ b/package.json\n@@ -3,7 +3,9 @@\n   \"version\": \"1.0.0\",\n   \"description\": \"This will handle the voice cloning jobs\",\n   \"main\": \"index.js\",\n-  \"scripts\": {},\n+  \"scripts\": {\n+    \"test\": \"node voice-cloning-job-handler/test/pro_v2_job.test.js\"\n+  },\n   \"dependencies\": {\n     \"@bugsnag/js\": \"^7.3.5\",\n     \"aws-sdk\": \"^2.752.0\",\ndiff --git a/voice-cloning-job-handler/index.js b/voice-cloning-job-handler/index.js\nindex 0995e23..3eb0a85 100644\n--- a/voice-cloning-job-handler/index.js\n+++ b/voice-cloning-job-handler/index.js\n@@ -10,6 +10,8 @@ const sqs = require('../app/services/sqs')\n const s3 = require('../app/services/s3')\n const voiceCloningService = require('./voice_cloning')\n const userAudioProfileService = require('./user_audio_profile')\n+const { decodeCloningJob, validateCloningJob } = require('./job_payload')\n+const { getCloningPipeline } = require('./pipeline_config')\n \n AWS.config.update({ region: 'us-west-2' })\n const sqsQueueUrl = process.env.SQS_URL\n@@ -29,39 +31,40 @@ const updateUrl = (str, cloudFrontUrl) => {\n }\n \n function connectDB(dbUri, retryCount = 0) {\n-  return new Promise((resolve, reject) => {\n-    console.log('Connection Attempt : ', retryCount)\n-    mongoose.set('strictQuery', true)\n-    mongoose\n-      .connect(dbUri)\n-      .then((msg) => {\n-        console.log('Connected to Mongo DB !')\n-        resolve()\n-      })\n-      .catch((err) => {\n-        console.log('Failed to connect dns mongo: ', err)\n-        if (retryCount < 6) {\n-          retryCount++\n-          connectDB(dbUri, retryCount)\n-        }\n-      })\n-  })\n+  console.log('Connection Attempt : ', retryCount)\n+  mongoose.set('strictQuery', true)\n+\n+  return mongoose\n+    .connect(dbUri)\n+    .then(() => {\n+      console.log('Connected to Mongo DB !')\n+    })\n+    .catch((error) => {\n+      console.log('Failed to connect dns mongo: ', error)\n+      if (retryCount < 6) return connectDB(dbUri, retryCount + 1)\n+      throw error\n+    })\n }\n \n function execShellCommand(cmd, logPath) {\n   // const exec = require(\"child_process\").exec;\n   return new Promise((resolve, reject) => {\n     exec(cmd, { maxBuffer: 1024 * 1000000 }, async (error, stdout, stderr) => {\n+      try {\n+        await fs.promises.writeFile(`${logPath}/error.log`, stderr)\n+        await fs.promises.writeFile(`${logPath}/info.log`, stdout)\n+      } catch (logError) {\n+        reject(logError)\n+        return\n+      }\n+\n       if (error) {\n-        console.log('Error while proccessing python command', error)\n+        console.log('Error while processing python command', error)\n         reject(error)\n+        return\n       }\n-      // console.log('Stdout --- ', stdout)\n-      // console.log('Stderror --- ', stderr)\n-      await fs.promises.writeFile(`${logPath}/error.log`, stderr)\n-      await fs.promises.writeFile(`${logPath}/info.log`, stdout)\n \n-      resolve()\n+      resolve(stdout)\n     })\n   })\n }\n@@ -97,15 +100,19 @@ const processQueue = () => {\n         response.Messages.length > 0\n       ) {\n         throttleMessageFetching = false\n-        const job = JSON.parse(response.Messages[0].Body)\n+        const job = validateCloningJob(\n+          decodeCloningJob(response.Messages[0].Body)\n+        )\n         const receiptHandle = response.Messages[0].ReceiptHandle\n         console.log('job===', job)\n \n-        const { metadata, input, _id, userAudioProfileId } = job._doc\n+        const { metadata, input, _id, userAudioProfileId, env, tier } = job\n+        const pipeline = getCloningPipeline(tier)\n+        const tierUpdate = tier ? { tier } : {}\n         console.log('userAudioProfileId', userAudioProfileId)\n         console.log('_id', _id)\n-        const { env } = job\n         console.log('env', env)\n+        console.log('tier', tier || 'legacy')\n \n         console.log('metadata------', metadata)\n         console.log('input', input)\n@@ -136,10 +143,15 @@ const processQueue = () => {\n             fs.mkdirSync(logPath, { recursive: true })\n           }\n           // update the db model to processing\n-          await voiceCloningService.update({ _id, status: 'processing' })\n+          await voiceCloningService.update({\n+            _id,\n+            status: 'processing',\n+            ...tierUpdate,\n+          })\n           await userAudioProfileService.update({\n             _id: userAudioProfileId,\n             status: 'processing',\n+            ...tierUpdate,\n           })\n \n           // create directory for userid-useraudioprofileid if not exist\n@@ -203,7 +215,7 @@ const processQueue = () => {\n           // clone the voice\n           const VOICE_CLONING_LABEL = `Time Taken for voice cloning ${directoryName}`\n           console.time(VOICE_CLONING_LABEL)\n-          const trainingModelCommand = `python3 ../voice-cloning/clone_voice.py --baseline_model_path ../voice-cloning/pretrained-models/checkpoint_365000.pth --speaker_dataset_path ${outPath} --speaker_embeddings_path ${\n+          const trainingModelCommand = `python3 ${pipeline.cloneScriptPath} --baseline_model_path ${pipeline.baselineModelPath} --speaker_dataset_path ${outPath} --speaker_embeddings_path ${\n             outPath + '/speakers.pth'\n           } --output_path ${resultsPath}`\n \n@@ -221,13 +233,16 @@ const processQueue = () => {\n               // use output from above to get right path and directory name\n               generatedDirectoryName = file\n           })\n+          if (!generatedDirectoryName) {\n+            throw new Error('Voice cloning did not produce a model directory')\n+          }\n \n           // minimize cloning model\n           const VOICE_MINIMIZE_LABEL = `Time Taken for voice minimizing cloning ${directoryName}`\n           console.time(VOICE_MINIMIZE_LABEL)\n-          const minimizeCloningModelCommand = `python3 ../voice-cloning/minimize_cloned_voice_model.py --voice_model_asset_path ${\n+          const minimizeCloningModelCommand = `python3 ${pipeline.minimizeScriptPath} --voice_model_asset_path ${\n             resultsPath + '/' + generatedDirectoryName + '/'\n-          } --voice_model_name checkpoint_365200.pth`\n+          } --voice_model_name ${pipeline.voiceModelName}`\n \n           console.log(\n             'Minimize Cloning Model Command',\n@@ -239,25 +254,16 @@ const processQueue = () => {\n           )\n           console.timeEnd(VOICE_MINIMIZE_LABEL)\n \n-          // Add the  code to update location of generated model and status into DB\n-          await voiceCloningService.update({ _id, status: 'completed' })\n-\n           const training_model_path = {\n-            voice_model_path: `${resultsPath}/${generatedDirectoryName}/checkpoint_365200.pth`,\n+            voice_model_path: `${resultsPath}/${generatedDirectoryName}/${pipeline.voiceModelName}`,\n             voice_model_config_path: `${resultsPath}/${generatedDirectoryName}/config.json`,\n             voice_model_speakers_file_path: `${outPath}/speakers.pth`, // TODO update the name to voice model speakers embeddings\n-            voice_model_light_path: `${resultsPath}/${generatedDirectoryName}/checkpoint_365200_light.pth`,\n+            voice_model_light_path: `${resultsPath}/${generatedDirectoryName}/${pipeline.voiceModelLightName}`,\n             voice_model_config_light_path: `${resultsPath}/${generatedDirectoryName}/config_light.json`,\n           }\n \n-          await userAudioProfileService.update({\n-            _id: userAudioProfileId,\n-            status: 'completed',\n-            training_model_path,\n-          })\n-\n           // add code to put that model into S3\n-          let keys = Object.keys(training_model_path)\n+          const keys = Object.keys(training_model_path)\n \n           const training_model_s3_path = {}\n \n@@ -270,11 +276,20 @@ const processQueue = () => {\n             })\n             training_model_s3_path[keys[index]] = s3Path\n           }\n-          //  add S3 path to user audio profile model\n+          // Only publish the completed state once every model asset is ready.\n           await userAudioProfileService.update({\n             _id: userAudioProfileId,\n+            status: 'completed',\n+            ...tierUpdate,\n+            training_model_path,\n             training_model_s3_path,\n           })\n+          await voiceCloningService.update({\n+            _id,\n+            status: 'completed',\n+            ...tierUpdate,\n+            training_model: training_model_s3_path,\n+          })\n         } catch (error) {\n           console.log('error********************', error)\n           Bugsnag.notify(\n@@ -285,10 +300,15 @@ const processQueue = () => {\n           Bugsnag.notify(error)\n \n           // update the db to set status as error\n-          await voiceCloningService.update({ _id, status: 'error' })\n+          await voiceCloningService.update({\n+            _id,\n+            status: 'error',\n+            ...tierUpdate,\n+          })\n           await userAudioProfileService.update({\n             _id: userAudioProfileId,\n             status: 'error',\n+            ...tierUpdate,\n           })\n \n           resolve() // to continue working on new jobs\n@@ -329,4 +349,9 @@ const init = async () => {\n     Bugsnag.notify(error)\n   }\n }\n-init()\n+if (require.main === module) init()\n+\n+module.exports = {\n+  init,\n+  processQueue,\n+}\ndiff --git a/voice-cloning-job-handler/package.json b/voice-cloning-job-handler/package.json\nindex 76c8092..04699cf 100644\n--- a/voice-cloning-job-handler/package.json\n+++ b/voice-cloning-job-handler/package.json\n@@ -4,6 +4,7 @@\n   \"description\": \"This will handle the voice cloning jobs\",\n   \"main\": \"index.js\",\n   \"scripts\": {\n+    \"test\": \"node test/pro_v2_job.test.js\",\n     \"deploy-production\": \"npx dotenv-cli -e ./app-scripts/env-aws-code-deploy/.env.production.aws-code-deploy node ./app-scripts/deploy-scripts/deploy-production.js\",\n     \"deploy-staging\": \"npx dotenv-cli -e ./app-scripts/env-aws-code-deploy/.env.staging.aws-code-deploy node ./app-scripts/deploy-scripts/deploy-staging.js\"\n   },\n@@ -21,4 +22,4 @@\n   },\n   \"author\": \"potion Team\",\n   \"license\": \"ISC\"\n-}\n\\ No newline at end of file\n+}\ndiff --git a/voice-cloning-job-handler/user_audio_profile/user_audio_profile_model.js b/voice-cloning-job-handler/user_audio_profile/user_audio_profile_model.js\nindex 9d840cc..5dab7a0 100644\n--- a/voice-cloning-job-handler/user_audio_profile/user_audio_profile_model.js\n+++ b/voice-cloning-job-handler/user_audio_profile/user_audio_profile_model.js\n@@ -13,6 +13,13 @@ const UserAudioProfileSchema = Schema(\n       required: true,\n       default: '',\n     },\n+    tier: {\n+      type: String,\n+      required: false,\n+      default: null,\n+      lowercase: true,\n+      trim: true,\n+    },\n     status: {\n       type: String,\n       required: false,\ndiff --git a/voice-cloning-job-handler/voice_cloning/voice_cloning_model.js b/voice-cloning-job-handler/voice_cloning/voice_cloning_model.js\nindex d6048b6..3376456 100644\n--- a/voice-cloning-job-handler/voice_cloning/voice_cloning_model.js\n+++ b/voice-cloning-job-handler/voice_cloning/voice_cloning_model.js\n@@ -13,6 +13,13 @@ const VoiceCloningSchema = Schema(\n       ref: 'UserAudioProfile',\n       required: true,\n     },\n+    tier: {\n+      type: String,\n+      required: false,\n+      default: null,\n+      lowercase: true,\n+      trim: true,\n+    },\n     status: {\n       type: String,\n       required: false,\ndiff --git a/voice-synthsizer-job-handler/user_audio_profile/user_audio_profile_model.js b/voice-synthsizer-job-handler/user_audio_profile/user_audio_profile_model.js\nindex 9d840cc..5dab7a0 100644\n--- a/voice-synthsizer-job-handler/user_audio_profile/user_audio_profile_model.js\n+++ b/voice-synthsizer-job-handler/user_audio_profile/user_audio_profile_model.js\n@@ -13,6 +13,13 @@ const UserAudioProfileSchema = Schema(\n       required: true,\n       default: '',\n     },\n+    tier: {\n+      type: String,\n+      required: false,\n+      default: null,\n+      lowercase: true,\n+      trim: true,\n+    },\n     status: {\n       type: String,\n       required: false,\n M app/services/voice_cloning/voice_cloning_model.js\n M package.json\n M voice-cloning-job-handler/index.js\n M voice-cloning-job-handler/package.json\n M voice-cloning-job-handler/user_audio_profile/user_audio_profile_model.js\n M voice-cloning-job-handler/voice_cloning/voice_cloning_model.js\n M voice-synthsizer-job-handler/user_audio_profile/user_audio_profile_model.js\n?? voice-cloning-job-handler/job_payload.js\n?? voice-cloning-job-handler/pipeline_config.js\n?? voice-cloning-job-handler/test/\n","exit_code":0,"status":"completed"}}
{"type":"item.started","item":{"id":"item_42","type":"command_execution","command":"/bin/bash -lc \"sed -n '1,260p' app/services/s3/index.js && wc -c app/services/s3/s3_service.js && rg -n \\\"s3.upload|return.*Location|resolve\\\" app/services/s3/index.js\"","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_42","type":"command_execution","command":"/bin/bash -lc \"sed -n '1,260p' app/services/s3/index.js && wc -c app/services/s3/s3_service.js && rg -n \\\"s3.upload|return.*Location|resolve\\\" app/services/s3/index.js\"","aggregated_output":"const AWS = require('aws-sdk')\r\nconst fs = require('fs')\r\nconst { stringifyError } = require('../utils/logService')\r\nvar s3 = new AWS.S3()\r\n\r\nconst fetchS3Object = async ({ fileName, bucket, filePath }) => {\r\n  filePath = filePath || '/tmp/' + fileName\r\n  console.log('Fetching', stringifyObj({ fileName, filePath }))\r\n  try {\r\n    var params = { Bucket: bucket, Key: fileName }\r\n    const downloadResult = await s3.getObject(params).promise()\r\n    fs.writeFileSync(filePath, downloadResult.Body, function (err) {\r\n      if (err) console.log(err.code, '-', err.message)\r\n    })\r\n    return filePath\r\n  } catch (error) {\r\n    console.log('Download from S3 Error:', stringifyError(error))\r\n    throw error\r\n  }\r\n}\r\n\r\nconst upload = ({\r\n  filePath,\r\n  fileName,\r\n  bucket,\r\n  contentType,\r\n  fileType,\r\n  // accessControl,\r\n}) => {\r\n  return new Promise((resolve, reject) => {\r\n    // accessControl = accessControl || 'public-read'\r\n    fs.readFile(filePath, function (err, data) {\r\n      if (err) reject(err)\r\n      const params = {\r\n        Bucket: bucket, // pass your bucket name\r\n        Key: fileName,\r\n        Body: data,\r\n        // ContentType: contentType,\r\n        // ContentDisposition: `inline; fileName=${fileName}.${fileType}`,\r\n        // ACL: accessControl,\r\n      }\r\n      s3.upload(params, function (err, data) {\r\n        if (err) {\r\n          reject(err)\r\n          console.log(`${fileName} Upload to s3`, stringifyError(err))\r\n        } else {\r\n          console.log(\r\n            `Successfully uploaded data ${fileName}`,\r\n            stringifyError(data)\r\n          )\r\n          resolve(data.Location)\r\n        }\r\n      })\r\n    })\r\n  })\r\n}\r\n\r\nmodule.exports = {\r\n  upload,\r\n  fetchS3Object,\r\n}\r\n0 app/services/s3/s3_service.js\n30:  return new Promise((resolve, reject) => {\r\n42:      s3.upload(params, function (err, data) {\r\n51:          resolve(data.Location)\r\n","exit_code":0,"status":"completed"}}
{"type":"item.started","item":{"id":"item_43","type":"command_execution","command":"/bin/bash -lc 'npm test'","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_43","type":"command_execution","command":"/bin/bash -lc 'npm test'","aggregated_output":"ok - decodes a flat pro_v2 cloning request\nok - decodes the legacy Mongoose envelope with a top-level tier\nok - decodes SNS and request envelopes used by tiered submissions\nok - normalizes tier values and rejects malformed jobs\nok - selects configured pro_v2 assets with working legacy fallbacks\nok - persists pro_v2 on cloning jobs and audio profiles\n","exit_code":0,"status":"completed"}}
{"type":"item.started","item":{"id":"item_44","type":"command_execution","command":"/bin/bash -lc \"node -e \\\"const worker = require('./voice-cloning-job-handler'); if (typeof worker.processQueue \"'!== '\"'function') process.exit(1)\\\"\"","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_44","type":"command_execution","command":"/bin/bash -lc \"node -e \\\"const worker = require('./voice-cloning-job-handler'); if (typeof worker.processQueue \"'!== '\"'function') process.exit(1)\\\"\"","aggregated_output":"","exit_code":0,"status":"completed"}}
{"type":"item.started","item":{"id":"item_45","type":"file_change","changes":[{"path":"/workspace/voice-cloning-job-handler/index.js","kind":"update"}],"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_45","type":"file_change","changes":[{"path":"/workspace/voice-cloning-job-handler/index.js","kind":"update"}],"status":"completed"}}
{"type":"item.started","item":{"id":"item_46","type":"file_change","changes":[{"path":"/workspace/voice-cloning-job-handler/job_payload.js","kind":"update"},{"path":"/workspace/voice-cloning-job-handler/test/pro_v2_job.test.js","kind":"update"}],"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_46","type":"file_change","changes":[{"path":"/workspace/voice-cloning-job-handler/job_payload.js","kind":"update"},{"path":"/workspace/voice-cloning-job-handler/test/pro_v2_job.test.js","kind":"update"}],"status":"completed"}}
{"type":"item.started","item":{"id":"item_47","type":"command_execution","command":"/bin/bash -lc 'npm test && node --check voice-cloning-job-handler/index.js && git diff --check'","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_47","type":"command_execution","command":"/bin/bash -lc 'npm test && node --check voice-cloning-job-handler/index.js && git diff --check'","aggregated_output":"\n> potion-voice@1.0.0 test /workspace\n> node voice-cloning-job-handler/test/pro_v2_job.test.js\n\nok - decodes a flat pro_v2 cloning request\nok - decodes the legacy Mongoose envelope with a top-level tier\nok - decodes SNS and request envelopes used by tiered submissions\nok - decodes a complete SQS record with a serialized payload envelope\nok - normalizes tier values and rejects malformed jobs\nok - selects configured pro_v2 assets with working legacy fallbacks\nok - persists pro_v2 on cloning jobs and audio profiles\n","exit_code":0,"status":"completed"}}
{"type":"item.started","item":{"id":"item_48","type":"file_change","changes":[{"path":"/workspace/voice-cloning-job-handler/index.js","kind":"update"}],"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_48","type":"file_change","changes":[{"path":"/workspace/voice-cloning-job-handler/index.js","kind":"update"}],"status":"completed"}}
{"type":"item.started","item":{"id":"item_49","type":"command_execution","command":"/bin/bash -lc \"rg -n \\\"sampling_rate|sample_rate|sr22050|sr48000|output_path\\\" voice-cloning/prepare_datasets.py | sed -n '1,220p' && sed -n '1,240p' voice-cloning/prepare_datasets.py\"","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_49","type":"command_execution","command":"/bin/bash -lc \"rg -n \\\"sampling_rate|sample_rate|sr22050|sr48000|output_path\\\" voice-cloning/prepare_datasets.py | sed -n '1,220p' && sed -n '1,240p' voice-cloning/prepare_datasets.py\"","aggregated_output":"25:    parser.add_argument(\"--output_path\",              type = str, default = \"results/datasets\",\n27:    parser.add_argument(\"--sampling_rate\",            type = int, default = 22050, choices = (16000, 22050, 32000, 48000),   # 32k & 48k are untested\n71:    print(\"  + Output path   : {}\" . format(args.output_path))\n72:    print(\"  + Sampling rate : {}\" . format(args.sampling_rate))\n105:    dataset_root = extract_archive(args.dataset_archive_path, os.path.join(args.output_path, \"sr\" + str(args.sampling_rate)))\n108:    dataset_path = os.path.join(args.output_path, \"sr\" + str(args.sampling_rate), dataset_root)\n147:    if not args.sampling_rate == SPK_EMB_SAMPLING_RATE:\n149:        extract_archive(args.dataset_archive_path, os.path.join(args.output_path, \"sr\" + str(args.sampling_rate)))\n150:        print(f\">>> Resampling audio files to {args.sampling_rate}Hz ...\")\n151:        resample_files(dataset_path, args.sampling_rate, file_ext = DATASET_FILE_FORMAT, n_jobs = NUM_RESAMPLE_THREADS)\n189:    os.makedirs(args.output_path, exist_ok = True)\n#!/usr/bin/env python3\n# -*- coding: utf-8 -*-\n\nimport sys\nimport os\nimport argparse\n\n# load coqui-ai/TTS libraries\nfrom TTS.bin.resample import resample_files\nfrom TTS.bin.compute_embeddings import compute_embeddings\n\nimport train_config as tc\n\n\n#\n# parse command line arguments\n#\ndef parse_cmdline_args():\n    parser = argparse.ArgumentParser(\n        description = \"Code to prepare voice dataset for multi-speaker baseline model training (i.e., adjust sampling rate and compute speaker embeddings).\")\n    parser.add_argument(\"--dataset_preset\",           type = str, choices = (\"VCTK\", \"LibriTTS_tc360\", \"DAPS\", \"POTION_Salut\", \"potion_voice_cloning\"), required = True,\n        help = \"Path the voice dataset archive (.zip, .tar.gz, .tgz, .tar.bz2, and .tbz are supported)\")\n    parser.add_argument(\"--dataset_archive_path\",     type = str, required = True,\n        help = \"Path the voice dataset archive (.zip, .tar.gz, .tgz, .tar.bz2, and .tbz are supported)\")\n    parser.add_argument(\"--output_path\",              type = str, default = \"results/datasets\",\n        help = \"Path to store augmented dataset\")\n    parser.add_argument(\"--sampling_rate\",            type = int, default = 22050, choices = (16000, 22050, 32000, 48000),   # 32k & 48k are untested\n        help = \"Sampling rate for training run\")\n\n    return parser.parse_args()\n\n\n#\n# utility functuion to extract archives (zip, tar, tgz, ...)\n#   - returns first entry in archive (typically the main directory name contained in the archive)\n#\ndef extract_archive(archive_path, dest_path):\n\n    from zipfile import ZipFile\n    import tarfile\n\n    if archive_path.endswith('.zip'):\n        opener, getnames, mode = ZipFile, ZipFile.namelist, 'r'\n\n    elif (archive_path.endswith('.tar.gz')) or (archive_path.endswith('.tgz')):\n        opener, getnames, mode = tarfile.open, tarfile.TarFile.getnames, 'r:gz'\n\n    elif (archive_path.endswith('.tar.bz2')) or (archive_path.endswith('.tbz')):\n        opener, getnames, mode = tarfile.open, tarfile.TarFile.getnames, 'r:bz2'\n\n    else:\n        print(\"Extracting archive \" + archive_path + \" is not supported.\")\n        return\n\n    # extract archive\n    with opener(archive_path, mode) as archive:\n        archive_dir = archive.getnames()[0]\n        archive.extractall(path = dest_path)\n\n    return archive_dir\n\n\n#\n# main training method (VITS multi-speaker model)\n#\ndef main(args):\n    print(\"Commencing preparation of dataset for multi-speaker baseline model training:\")\n    print(\"\")\n    print(\"  + Dataset preset: {}\" . format(args.dataset_preset))\n    print(\"  + Dataset       : {}\" . format(args.dataset_archive_path))\n    print(\"  + Output path   : {}\" . format(args.output_path))\n    print(\"  + Sampling rate : {}\" . format(args.sampling_rate))\n    print(\"\")\n\n    # set parameters according to dataset preset\n    if args.dataset_preset  == \"VCTK\":\n        DATASET_NAME = tc.VCTK_DATASET_NAME\n        DATASET_FORMATTER = tc.VCTK_DATASET_FORMATTER\n        DATASET_FILE_FORMAT = tc.VCTK_DATASET_FILE_FORMAT\n        NO_EVAL = False\n    elif args.dataset_preset == \"LibriTTS_tc360\":\n        DATASET_NAME = tc.LIBRITTS_TC360_DATASET_NAME\n        DATASET_FORMATTER = tc.LIBRITTS_TC360_DATASET_FORMATTER\n        DATASET_FILE_FORMAT = tc.LIBRITTS_TC360_DATASET_FILE_FORMAT\n        NO_EVAL = False\n    elif args.dataset_preset == \"POTION_Salut\":\n        DATASET_NAME = tc.POTION_SALUT_DATASET_NAME\n        DATASET_FORMATTER = tc.POTION_SALUT_DATASET_FORMATTER\n        DATASET_FILE_FORMAT = tc.POTION_SALUT_DATASET_FILE_FORMAT\n        NO_EVAL = False\n    elif args.dataset_preset == \"potion_voice_cloning\":\n        DATASET_NAME = tc.POTION_SALUT_DATASET_NAME\n        DATASET_FORMATTER = tc.POTION_SALUT_DATASET_FORMATTER\n        DATASET_FILE_FORMAT = tc.POTION_SALUT_DATASET_FILE_FORMAT\n        NO_EVAL = True\n\n    # define sampling rate for computing speaker embeddings\n    SPK_EMB_SAMPLING_RATE = 16000\n\n    # define the number of threads used during audio resampling\n    NUM_RESAMPLE_THREADS = 10\n\n    # extract dataset archive\n    print(f\">>> Extracting archive ...\")\n    dataset_root = extract_archive(args.dataset_archive_path, os.path.join(args.output_path, \"sr\" + str(args.sampling_rate)))\n\n    # set dataset path (there should only be ONE directory in the extracted archive location)\n    dataset_path = os.path.join(args.output_path, \"sr\" + str(args.sampling_rate), dataset_root)\n\n    # ensure the dataset_path exists\n    os.makedirs(dataset_path, exist_ok = True)\n\n    # resample dataset for speaker embeddings computation\n    print(f\">>> Resampling audio files to 16000Hz ...\")\n    resample_files(dataset_path, 16000, file_ext = DATASET_FILE_FORMAT, n_jobs = NUM_RESAMPLE_THREADS)\n\n    # compute speaker embeddings\n    SPEAKER_ENCODER_CHECKPOINT_PATH = \"assets/speaker_encoder_model/model_se.pth.tar\"\n    SPEAKER_ENCODER_CONFIG_PATH = \"assets/speaker_encoder_model/config_se.json\"\n\n    # init list speaker embeddings/d-vectors to be used during the training\n    d_vector_files = []\n\n    # check if the speakers embeddings are already computated, if not compute them\n    embeddings_file = os.path.join(dataset_path, \"speakers.pth\")\n\n    if not os.path.isfile(embeddings_file):\n        print(f\">>> Computing speaker embeddings ...\")\n        compute_embeddings(\n            SPEAKER_ENCODER_CHECKPOINT_PATH,\n            SPEAKER_ENCODER_CONFIG_PATH,\n            embeddings_file,\n            old_spakers_file    = None,\n            config_dataset_path = None,\n            formatter_name      = DATASET_FORMATTER,\n            dataset_name        = DATASET_NAME,\n            dataset_path        = dataset_path,\n            meta_file_train     = \"\",\n            meta_file_val       = \"\",\n            disable_cuda        = False,\n            no_eval             = NO_EVAL\n        )\n\n    d_vector_files.append(embeddings_file)\n\n    # if targetted sampling rate is not the same as that used for computing speaker embeddings, replace and resample audio files\n    if not args.sampling_rate == SPK_EMB_SAMPLING_RATE:\n        print(f\">>> Extracting original archive again (overwritting previously resampled files)...\")\n        extract_archive(args.dataset_archive_path, os.path.join(args.output_path, \"sr\" + str(args.sampling_rate)))\n        print(f\">>> Resampling audio files to {args.sampling_rate}Hz ...\")\n        resample_files(dataset_path, args.sampling_rate, file_ext = DATASET_FILE_FORMAT, n_jobs = NUM_RESAMPLE_THREADS)\n\n    # exit gracefully\n    print(\"\")\n    print(\"Completed preparing voice dataset for multi-speaker baseline model training; generated asset locations are as follows:\")\n    print(\"  --> {}\" . format(dataset_path))\n    print(\"  --> {}\" . format(embeddings_file))\n    print(\"\")\n    print(\"Done; bye.\")\n    print(\"\")\n\n\nif __name__ == \"__main__\":\n    # parse command line arguments\n    args = parse_cmdline_args()\n\n    # clear command line arguments to avoid triggering argparse features part of Trainer / coqpit imports\n    #    Traceback (most recent call last):\n    #      File \"train_multispeaker_baseline_model.py\", line 208, in <module>\n    #        main(args)\n    #      File \"train_multispeaker_baseline_model.py\", line 177, in main\n    #        trainer = Trainer(\n    #      File \"/home/ubuntu/dev/potion-voice_venv/lib/python3.8/site-packages/trainer/trainer.py\", line 360, in __init__\n    #        config, new_fields = self.init_training(args, coqpit_overrides, config)\n    #      File \"/home/ubuntu/dev/potion-voice_venv/lib/python3.8/site-packages/trainer/trainer.py\", line 594, in init_training\n    #        config.parse_known_args(coqpit_overrides, relaxed_parser=True)\n    #      File \"/home/ubuntu/dev/potion-voice_venv/lib/python3.8/site-packages/coqpit/coqpit.py\", line 843, in parse_known_args\n    #        parser = self.init_argparse(arg_prefix=arg_prefix, relaxed_parser=relaxed_parser)\n    #      File \"/home/ubuntu/dev/potion-voice_venv/lib/python3.8/site-packages/coqpit/coqpit.py\", line 881, in init_argparse\n    #        _init_argparse(\n    #      File \"/home/ubuntu/dev/potion-voice_venv/lib/python3.8/site-packages/coqpit/coqpit.py\", line 529, in _init_argparse\n    #        parser = _init_argparse(\n    #      File \"/home/ubuntu/dev/potion-voice_venv/lib/python3.8/site-packages/coqpit/coqpit.py\", line 550, in _init_argparse\n    #        return default.init_argparse(\n    #    AttributeError: 'str' object has no attribute 'init_argparse'\n    sys.argv = [sys.argv[0]]\n\n    # ensure the output path exists\n    os.makedirs(args.output_path, exist_ok = True)\n\n    main(args)\n","exit_code":0,"status":"completed"}}
{"type":"item.started","item":{"id":"item_50","type":"command_execution","command":"/bin/bash -lc 'git diff --stat && git status --short && npm test && node --check voice-cloning-job-handler/job_payload.js && node --check voice-cloning-job-handler/pipeline_config.js && node --check voice-cloning-job-handler/index.js'","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_50","type":"command_execution","command":"/bin/bash -lc 'git diff --stat && git status --short && npm test && node --check voice-cloning-job-handler/job_payload.js && node --check voice-cloning-job-handler/pipeline_config.js && node --check voice-cloning-job-handler/index.js'","aggregated_output":"\n> potion-voice@1.0.0 test /workspace\n> node voice-cloning-job-handler/test/pro_v2_job.test.js\n\nok - decodes a flat pro_v2 cloning request\nok - decodes the legacy Mongoose envelope with a top-level tier\nok - decodes SNS and request envelopes used by tiered submissions\nok - decodes a complete SQS record with a serialized payload envelope\nok - normalizes tier values and rejects malformed jobs\nok - selects configured pro_v2 assets with working legacy fallbacks\nok - persists pro_v2 on cloning jobs and audio profiles\n","exit_code":0,"status":"completed"}}
{"type":"item.started","item":{"id":"item_51","type":"command_execution","command":"/bin/bash -lc \"sed -n '1,280p' voice-cloning-job-handler/job_payload.js && sed -n '1,220p' voice-cloning-job-handler/pipeline_config.js && sed -n '80,360p' voice-cloning-job-handler/index.js\"","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_51","type":"command_execution","command":"/bin/bash -lc \"sed -n '1,280p' voice-cloning-job-handler/job_payload.js && sed -n '1,220p' voice-cloning-job-handler/pipeline_config.js && sed -n '80,360p' voice-cloning-job-handler/index.js\"","aggregated_output":"const PRO_V2_TIER = 'pro_v2'\n\nconst isRecord = (value) =>\n  value !== null && typeof value === 'object' && !Array.isArray(value)\n\nconst parseJson = (value, label) => {\n  if (typeof value !== 'string') return value\n\n  try {\n    return JSON.parse(value)\n  } catch (error) {\n    throw new Error(`Invalid JSON in ${label}: ${error.message}`)\n  }\n}\n\nconst findJobDocument = (value, envelopes, depth = 0) => {\n  if (!isRecord(value) || depth > 5) return null\n\n  envelopes.push(value)\n\n  if (isRecord(value._doc)) return value._doc\n\n  if (value._id && value.userAudioProfileId) return value\n\n  const envelopeKeys = [\n    'job',\n    'payload',\n    'request',\n    'data',\n    'voiceCloning',\n    'voiceCloningJob',\n  ]\n\n  for (const key of envelopeKeys) {\n    const child =\n      typeof value[key] === 'string'\n        ? parseJson(value[key], `${key} envelope`)\n        : value[key]\n\n    if (isRecord(child)) {\n      const document = findJobDocument(child, envelopes, depth + 1)\n      if (document) return document\n    }\n  }\n\n  return depth === 0 ? value : null\n}\n\nconst firstDefined = (values) =>\n  values.find((value) => value !== undefined && value !== null)\n\nconst normalizeTier = (tier) => {\n  if (tier === undefined || tier === null || tier === '') return null\n  if (typeof tier !== 'string') {\n    throw new TypeError('Voice cloning tier must be a string')\n  }\n\n  return tier.trim().toLowerCase()\n}\n\n/**\n * Decode both the original Mongoose-shaped queue message and newer plain JSON\n * request envelopes. Tiered requests are sent as plain payloads, whereas the\n * original producer spread a Mongoose document and put the data in `_doc`.\n */\nconst decodeCloningJob = (body) => {\n  let message = parseJson(body, 'SQS message body')\n\n  // Also accept an SQS record itself, which is useful for direct consumers.\n  if (\n    isRecord(message) &&\n    !message._id &&\n    !message._doc &&\n    message.Body !== undefined\n  ) {\n    const outerMessage = message\n    const innerMessage = parseJson(message.Body, 'SQS Body')\n    if (isRecord(innerMessage)) {\n      message = { ...outerMessage, ...innerMessage, Body: outerMessage.Body }\n    }\n  }\n\n  // SQS queues may be subscribed to SNS, which wraps the actual message.\n  if (isRecord(message) && message.Message !== undefined) {\n    const outerMessage = message\n    message = parseJson(message.Message, 'SNS Message')\n\n    if (isRecord(message)) {\n      message = {\n        ...outerMessage,\n        ...message,\n        Message: outerMessage.Message,\n      }\n    }\n  }\n\n  if (!isRecord(message)) {\n    throw new TypeError('Voice cloning queue message must contain an object')\n  }\n\n  const envelopes = []\n  const document = findJobDocument(message, envelopes)\n\n  if (!isRecord(document)) {\n    throw new TypeError('Voice cloning queue message does not contain a job')\n  }\n\n  const tier = normalizeTier(\n    firstDefined([\n      document.tier,\n      document.metadata && document.metadata.tier,\n      ...envelopes.map((envelope) => envelope.tier),\n      ...envelopes.map(\n        (envelope) => envelope.metadata && envelope.metadata.tier\n      ),\n    ])\n  )\n  const env = firstDefined([\n    document.env,\n    ...envelopes.map((envelope) => envelope.env),\n  ])\n\n  return {\n    ...document,\n    ...(env === undefined ? {} : { env }),\n    ...(tier === null ? {} : { tier }),\n  }\n}\n\nconst validateCloningJob = (job) => {\n  if (!isRecord(job)) throw new TypeError('Voice cloning job is required')\n\n  const missingFields = []\n  if (!job._id) missingFields.push('_id')\n  if (!job.userAudioProfileId) missingFields.push('userAudioProfileId')\n  if (!Array.isArray(job.input)) missingFields.push('input')\n  if (!isRecord(job.metadata)) missingFields.push('metadata')\n  if (!job.metadata || !job.metadata.directoryName) {\n    missingFields.push('metadata.directoryName')\n  }\n\n  if (missingFields.length) {\n    throw new Error(\n      `Invalid voice cloning job; missing ${missingFields.join(', ')}`\n    )\n  }\n\n  return job\n}\n\nmodule.exports = {\n  PRO_V2_TIER,\n  decodeCloningJob,\n  normalizeTier,\n  validateCloningJob,\n}\nconst path = require('path')\nconst { normalizeTier, PRO_V2_TIER } = require('./job_payload')\n\nconst DEFAULT_BASELINE_MODEL_PATH =\n  '../voice-cloning/pretrained-models/checkpoint_365000.pth'\nconst DEFAULT_CLONE_SCRIPT_PATH = '../voice-cloning/clone_voice.py'\nconst DEFAULT_MINIMIZE_SCRIPT_PATH =\n  '../voice-cloning/minimize_cloned_voice_model.py'\nconst DEFAULT_VOICE_MODEL_NAME = 'checkpoint_365200.pth'\n\nconst appendSuffix = (filename, suffix) => {\n  const extension = path.extname(filename)\n  const basename = path.basename(filename, extension)\n  return `${basename}_${suffix}${extension}`\n}\n\n/**\n * pro_v2 can use its own deployed model assets without making the queue\n * consumer incompatible with installations that still use the legacy model.\n */\nconst getCloningPipeline = (tier, env = process.env) => {\n  const normalizedTier = normalizeTier(tier)\n  const isProV2 = normalizedTier === PRO_V2_TIER\n  const prefix = isProV2 ? 'PRO_V2_' : ''\n\n  const setting = (name, fallback) =>\n    env[`${prefix}${name}`] || env[name] || fallback\n\n  const voiceModelName = setting(\n    'VOICE_MODEL_NAME',\n    DEFAULT_VOICE_MODEL_NAME\n  )\n\n  return {\n    tier: normalizedTier,\n    baselineModelPath: setting(\n      'BASELINE_MODEL_PATH',\n      DEFAULT_BASELINE_MODEL_PATH\n    ),\n    cloneScriptPath: setting('CLONE_SCRIPT_PATH', DEFAULT_CLONE_SCRIPT_PATH),\n    minimizeScriptPath: setting(\n      'MINIMIZE_SCRIPT_PATH',\n      DEFAULT_MINIMIZE_SCRIPT_PATH\n    ),\n    voiceModelName,\n    voiceModelLightName: appendSuffix(voiceModelName, 'light'),\n  }\n}\n\nmodule.exports = {\n  getCloningPipeline,\n}\n        writeStream.close()\n        resolve()\n      })\n    })\n  })\n}\n\nfunction pad(s) {\n  while (s.length < 3) s = '0' + s // IN future we will need padding to 4\n  return s\n}\n\nconst requireUpdatedState = (state, name) => {\n  if (!state) throw new Error(`${name} state update returned null`)\n  return state\n}\n\nconst processQueue = () => {\n  /* eslint-disable no-async-promise-executor */\n  return new Promise(async (resolve, reject) => {\n    try {\n      const response = await sqs.fetchMessageFromSQS(sqsQueueUrl)\n\n      if (\n        typeof response.Messages !== 'undefined' &&\n        response.Messages.length > 0\n      ) {\n        throttleMessageFetching = false\n        const job = validateCloningJob(\n          decodeCloningJob(response.Messages[0].Body)\n        )\n        const receiptHandle = response.Messages[0].ReceiptHandle\n        console.log('job===', job)\n\n        const { metadata, input, _id, userAudioProfileId, env, tier } = job\n        const pipeline = getCloningPipeline(tier)\n        const tierUpdate = tier ? { tier } : {}\n        console.log('userAudioProfileId', userAudioProfileId)\n        console.log('_id', _id)\n        console.log('env', env)\n        console.log('tier', tier || 'legacy')\n\n        console.log('metadata------', metadata)\n        console.log('input', input)\n        const DB_URI =\n          env === 'production'\n            ? mongoUriProd\n            : env === 'staging'\n            ? mongoUriStaging\n            : mongoUriDev\n\n        console.log('DB_URI ', DB_URI)\n        await connectDB(DB_URI)\n\n        const cloudFrontUrl =\n          env === 'production'\n            ? cloudFrontUrlProd\n            : env === 'staging'\n            ? cloudFrontUrlStaging\n            : cloudFrontUrlDev\n\n        try {\n          const { directoryName } = metadata\n          console.log('directoryName', directoryName)\n          const logPath = `/mnt/efs/potion-voice/${env}/${directoryName}`\n          if (!fs.existsSync(logPath)) {\n            fs.mkdirSync(logPath, { recursive: true })\n          }\n          // update the db model to processing\n          requireUpdatedState(\n            await voiceCloningService.update({\n              _id,\n              status: 'processing',\n              ...tierUpdate,\n            }),\n            'Voice cloning job'\n          )\n          requireUpdatedState(\n            await userAudioProfileService.update({\n              _id: userAudioProfileId,\n              status: 'processing',\n              ...tierUpdate,\n            }),\n            'User audio profile'\n          )\n\n          // Acknowledge only after both records have a non-null processing state.\n          await sqs.deleteMessageFromSQS(sqsQueueUrl, receiptHandle)\n\n          // create directory for userid-useraudioprofileid if not exist\n          const rootPath = `/tmp/${directoryName}`\n          const wavePath = `${rootPath}/wav48/1`\n          if (!fs.existsSync(wavePath)) {\n            fs.mkdirSync(wavePath, { recursive: true })\n          }\n\n          const txtPath = `${rootPath}/txt/1`\n          if (!fs.existsSync(txtPath)) {\n            fs.mkdirSync(txtPath, { recursive: true })\n          }\n          // download the training data files and put it in respective directories\n          for (let index = 0; index < input.length; index++) {\n            const item = input[index]\n\n            const { waveUrl, originalText } = item\n            // download wave file\n            const waveFilePath = `${wavePath}/1_${pad('' + (index + 1))}.wav`\n\n            await getFile(updateUrl(waveUrl, cloudFrontUrl), waveFilePath)\n\n            const txtFilePath = `${txtPath}/1_${pad('' + (index + 1))}.txt`\n            await fs.promises.writeFile(txtFilePath, originalText)\n          }\n\n          const zipFileName = directoryName + '.tgz'\n\n          // /tmp/directoryName.tgz\n\n          await execShellCommand(\n            `cd /tmp && tar czvf ${zipFileName}  ${directoryName}`,\n            logPath\n          )\n          console.log('ZIP created ', zipFileName)\n\n          // re-sample audio\n          const SAMPLING_LABEL = `Time Taken for re-sampling ${directoryName}`\n          console.time(SAMPLING_LABEL)\n\n          const outputPath = `/mnt/efs/potion-voice/${env}/${directoryName}`\n\n          const samplingCommand = `python3 ../voice-cloning/prepare_datasets.py --dataset_preset potion_voice_cloning --dataset_archive_path /tmp/${zipFileName} --output_path ${outputPath}`\n          console.log('samplingCommand ', samplingCommand)\n          const samplingResponse = await execShellCommand(\n            samplingCommand,\n            logPath\n          )\n          console.timeEnd(SAMPLING_LABEL)\n\n          // /mnt/efs/potion-voice/${env}/speakrs.pth\n          // /mnt/efs/potion-voice/${env}/txt\n          // /mnt/efs/potion-voice/${env}/${directoryName}/wav\n\n          const outPath = `/mnt/efs/potion-voice/${env}/${directoryName}/sr22050/${directoryName}`\n\n          const resultsPath = outPath + '/results'\n\n          //update pth file for cloning\n          // clone the voice\n          const VOICE_CLONING_LABEL = `Time Taken for voice cloning ${directoryName}`\n          console.time(VOICE_CLONING_LABEL)\n          const trainingModelCommand = `python3 ${pipeline.cloneScriptPath} --baseline_model_path ${pipeline.baselineModelPath} --speaker_dataset_path ${outPath} --speaker_embeddings_path ${\n            outPath + '/speakers.pth'\n          } --output_path ${resultsPath}`\n\n          console.log('Training Model Command', trainingModelCommand)\n          const trainingResponse = await execShellCommand(\n            trainingModelCommand,\n            logPath\n          )\n\n          console.timeEnd(VOICE_CLONING_LABEL)\n\n          let generatedDirectoryName = ''\n          fs.readdirSync(`${resultsPath}/`).forEach((file) => {\n            if (file.includes('vits_potion_clone'))\n              // use output from above to get right path and directory name\n              generatedDirectoryName = file\n          })\n          if (!generatedDirectoryName) {\n            throw new Error('Voice cloning did not produce a model directory')\n          }\n\n          // minimize cloning model\n          const VOICE_MINIMIZE_LABEL = `Time Taken for voice minimizing cloning ${directoryName}`\n          console.time(VOICE_MINIMIZE_LABEL)\n          const minimizeCloningModelCommand = `python3 ${pipeline.minimizeScriptPath} --voice_model_asset_path ${\n            resultsPath + '/' + generatedDirectoryName + '/'\n          } --voice_model_name ${pipeline.voiceModelName}`\n\n          console.log(\n            'Minimize Cloning Model Command',\n            minimizeCloningModelCommand\n          )\n          const minimizeCloning = await execShellCommand(\n            minimizeCloningModelCommand,\n            logPath\n          )\n          console.timeEnd(VOICE_MINIMIZE_LABEL)\n\n          const training_model_path = {\n            voice_model_path: `${resultsPath}/${generatedDirectoryName}/${pipeline.voiceModelName}`,\n            voice_model_config_path: `${resultsPath}/${generatedDirectoryName}/config.json`,\n            voice_model_speakers_file_path: `${outPath}/speakers.pth`, // TODO update the name to voice model speakers embeddings\n            voice_model_light_path: `${resultsPath}/${generatedDirectoryName}/${pipeline.voiceModelLightName}`,\n            voice_model_config_light_path: `${resultsPath}/${generatedDirectoryName}/config_light.json`,\n          }\n\n          // add code to put that model into S3\n          const keys = Object.keys(training_model_path)\n\n          const training_model_s3_path = {}\n\n          for (let index = 0; index < keys.length; index++) {\n            const path = training_model_path[keys[index]]\n            const s3Path = await s3.upload({\n              filePath: path,\n              fileName: `${directoryName}/${path.split('/').pop()}`,\n              bucket: `potion-voice-users-training-model/${env}`,\n            })\n            if (!s3Path) {\n              throw new Error(`Model upload returned no location for ${path}`)\n            }\n            training_model_s3_path[keys[index]] = s3Path\n          }\n          // Only publish the completed state once every model asset is ready.\n          requireUpdatedState(\n            await userAudioProfileService.update({\n              _id: userAudioProfileId,\n              status: 'completed',\n              ...tierUpdate,\n              training_model_path,\n              training_model_s3_path,\n            }),\n            'User audio profile'\n          )\n          requireUpdatedState(\n            await voiceCloningService.update({\n              _id,\n              status: 'completed',\n              ...tierUpdate,\n              training_model: training_model_s3_path,\n            }),\n            'Voice cloning job'\n          )\n        } catch (error) {\n          console.log('error********************', error)\n          Bugsnag.notify(\n            new Error(\n              `Unable to train for voice cloning videos ` + JSON.stringify(job)\n            )\n          )\n          Bugsnag.notify(error)\n\n          // update the db to set status as error\n          await voiceCloningService.update({\n            _id,\n            status: 'error',\n            ...tierUpdate,\n          })\n          await userAudioProfileService.update({\n            _id: userAudioProfileId,\n            status: 'error',\n            ...tierUpdate,\n          })\n\n          resolve() // to continue working on new jobs\n        }\n      } else {\n        throttleMessageFetching = true\n      }\n      resolve()\n    } catch (error) {\n      console.error('Error while training voice clone', { error })\n      Bugsnag.notify(error)\n      resolve() // to continue working on new jobs\n    } finally {\n      mongoose.connection.close()\n    }\n  })\n}\n\nfunction sleep(ms) {\n  return new Promise((resolve) => {\n    setTimeout(resolve, ms)\n  })\n}\nconst init = async () => {\n  console.log('potion Voice Clone Process Started')\n  Bugsnag.start({\n    appVersion: APP_ENV + version,\n    apiKey: process.env.BUGSNAG_BACKEND_KEY,\n","exit_code":0,"status":"completed"}}
{"type":"item.started","item":{"id":"item_52","type":"command_execution","command":"/bin/bash -lc \"jq -r '.files.nodes[] | [.path,.additions,.deletions,.changeType] | @tsv' .styx_prs/pr_25.json .styx_prs/pr_26.json .styx_prs/pr_27.json && jq -r '.commits.nodes[].commit | [.oid,.message] | @tsv' .styx_prs/pr_25.json .styx_prs/pr_26.json .styx_prs/pr_27.json\"","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_52","type":"command_execution","command":"/bin/bash -lc \"jq -r '.files.nodes[] | [.path,.additions,.deletions,.changeType] | @tsv' .styx_prs/pr_25.json .styx_prs/pr_26.json .styx_prs/pr_27.json && jq -r '.commits.nodes[].commit | [.oid,.message] | @tsv' .styx_prs/pr_25.json .styx_prs/pr_26.json .styx_prs/pr_27.json\"","aggregated_output":"voice-cloning-job-handler/index.js\t2\t2\tMODIFIED\nvoice-cloning-job-handler/index.js\t1\t1\tMODIFIED\nvoice-cloning-job-handler/index.js\t2\t2\tMODIFIED\na3afe89e0e4289c33044e3b9401a5d0bda2be401\tAdded code for cloning script\nea4608475587cea4615a4980bc767708a186d57e\tAdded changes for sr 48000\n040f8565569ff7d324db918f17e5aabfb15ba4ca\tupdated model name\n","exit_code":0,"status":"completed"}}
{"type":"item.started","item":{"id":"item_53","type":"command_execution","command":"/bin/bash -lc 'for url in https://app.sendpotion.com https://sendpotion.com https://www.sendpotion.com; do echo \"$url\"; curl -sSL --max-time 15 \"$url\" | rg -o '\"'src=\\\"[\"'^\"]+'\"\\\\.js[\"'^\"]*\"'\"' | head -10; done\"","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_53","type":"command_execution","command":"/bin/bash -lc 'for url in https://app.sendpotion.com https://sendpotion.com https://www.sendpotion.com; do echo \"$url\"; curl -sSL --max-time 15 \"$url\" | rg -o '\"'src=\\\"[\"'^\"]+'\"\\\\.js[\"'^\"]*\"'\"' | head -10; done\"","aggregated_output":"src=\"/_nuxt/9d04b47.js\"\nsrc=\"/_nuxt/c35d57a.js\"\nsrc=\"/_nuxt/6ae578d.js\"\nsrc=\"/_nuxt/6317850.js\"\nsrc=\"/_nuxt/1cfdcf6.js\"\nhttps://sendpotion.com\nsrc=\"/assets/js/bundle.js?v=0.3.15\"\nsrc=\"https://unpkg.com/typed.js@2.1.0/dist/typed.umd.js\"\nhttps://www.sendpotion.com\nsrc=\"/assets/js/bundle.js?v=0.3.15\"\nsrc=\"https://unpkg.com/typed.js@2.1.0/dist/typed.umd.js\"\n","exit_code":0,"status":"completed"}}
{"type":"item.started","item":{"id":"item_54","type":"command_execution","command":"/bin/bash -lc 'for js in 9d04b47 c35d57a 6ae578d 6317850 1cfdcf6; do curl -sSL --max-time 20 \"https://app.sendpotion.com/_nuxt/$js.js\"; done | rg -o -i '\"'.{0,120}(pro_v2|voice.?clon|userAudioProfile|voiceCloning).{0,180}' | sed -n '1,120p'\"","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_54","type":"command_execution","command":"/bin/bash -lc 'for js in 9d04b47 c35d57a 6ae578d 6317850 1cfdcf6; do curl -sSL --max-time 20 \"https://app.sendpotion.com/_nuxt/$js.js\"; done | rg -o -i '\"'.{0,120}(pro_v2|voice.?clon|userAudioProfile|voiceCloning).{0,180}' | sed -n '1,120p'\"","aggregated_output":"\":\"Starter plan\",\"starterPrice\":\"$99 / mo / seat\",\"starterFeature1\":\"750 AI videos / mo\",\"starterFeature2\":\"AI face and voice cloning\",\"starterFeature3\":\"Custom branding\",\"starterFeature4\":\"Multiple custom domains\",\"starterFeature5\":\"Workspaces\",\"starterFeature6\":\"Admin and team features\",\"startFreeTrial\":\"St\nhecklist\":\"Checklist\",\"tutorials\":\"Tutorials\",\"paymentPlans\":\"Payment plans\",\"unlockAI\":\"Unlock AI generated videos and voice cloning!\",\"letAIGenerate\":\"Let {name}\\'s AI generate videos for you\",\"upgradeAppSumoTier2\":\"Upgrade to AppSumo Tier 2\",\"upgradeAppSumoTier3\":\"Upgrade to AppSumo Tier 3\",\"appSumoTier2De\n","exit_code":0,"status":"completed"}}
{"type":"item.started","item":{"id":"item_55","type":"command_execution","command":"/bin/bash -lc 'for js in 9d04b47 c35d57a 6ae578d 6317850 1cfdcf6; do curl -sSL --max-time 20 \"https://app.sendpotion.com/_nuxt/$js.js\"; done | rg -o '\"'[a-f0-9]{7}\\\\.js' | sort -u | sed -n '1,200p'\"","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_55","type":"command_execution","command":"/bin/bash -lc 'for js in 9d04b47 c35d57a 6ae578d 6317850 1cfdcf6; do curl -sSL --max-time 20 \"https://app.sendpotion.com/_nuxt/$js.js\"; done | rg -o '\"'[a-f0-9]{7}\\\\.js' | sort -u | sed -n '1,200p'\"","aggregated_output":"","exit_code":0,"status":"completed"}}
{"type":"item.started","item":{"id":"item_56","type":"command_execution","command":"/bin/bash -lc 'curl -sSL --max-time 20 https://app.sendpotion.com/_nuxt/9d04b47.js | head -c 3000'","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_56","type":"command_execution","command":"/bin/bash -lc 'curl -sSL --max-time 20 https://app.sendpotion.com/_nuxt/9d04b47.js | head -c 3000'","aggregated_output":"!function(e){function r(r){for(var n,o,f=r[0],d=r[1],u=r[2],b=0,l=[];b<f.length;b++)o=f[b],Object.prototype.hasOwnProperty.call(a,o)&&a[o]&&l.push(a[o][0]),a[o]=0;for(n in d)Object.prototype.hasOwnProperty.call(d,n)&&(e[n]=d[n]);for(i&&i(r);l.length;)l.shift()();return c.push.apply(c,u||[]),t()}function t(){for(var e,r=0;r<c.length;r++){for(var t=c[r],n=!0,f=1;f<t.length;f++){var d=t[f];0!==a[d]&&(n=!1)}n&&(c.splice(r--,1),e=o(o.s=t[0]))}return e}var n={},a={84:0},c=[];function o(r){if(n[r])return n[r].exports;var t=n[r]={i:r,l:!1,exports:{}};return e[r].call(t.exports,t,t.exports,o),t.l=!0,t.exports}o.e=function(e){var r=[],t=a[e];if(0!==t)if(t)r.push(t[2]);else{var n=new Promise((function(r,n){t=a[e]=[r,n]}));r.push(t[2]=n);var c,f=document.createElement(\"script\");f.charset=\"utf-8\",f.timeout=120,o.nc&&f.setAttribute(\"nonce\",o.nc),f.src=function(e){return o.p+\"\"+{0:\"6fb4f7a\",1:\"970d858\",2:\"56c2a4f\",3:\"b76b91d\",4:\"d285f13\",5:\"24faf45\",6:\"67abe2b\",7:\"ddd24cb\",8:\"f9bc9de\",9:\"1e67c52\",10:\"b4561b9\",11:\"ce4c4b3\",12:\"8453cc6\",13:\"7c6215b\",14:\"04414c1\",15:\"048fb22\",16:\"9ce6678\",19:\"da6e16a\",20:\"0dc9d06\",21:\"91bdd74\",22:\"2a7d7c5\",23:\"f1fece8\",24:\"2f4dd7c\",25:\"6ca391e\",26:\"6cbe082\",27:\"f296c45\",28:\"cd3ec73\",29:\"c35d57a\",30:\"bb6f6af\",31:\"17e68d5\",32:\"b24b054\",33:\"66554ed\",34:\"402fe27\",35:\"27d2b47\",36:\"31c1859\",37:\"a61b2c1\",38:\"d8cf828\",39:\"c2c0ae7\",40:\"6d35648\",41:\"185c247\",42:\"2333713\",43:\"217dc42\",44:\"f76eab1\",45:\"1740053\",46:\"661d082\",47:\"c3ea1e7\",48:\"baefa4d\",49:\"d051255\",50:\"b6ca1e0\",51:\"0084dd1\",52:\"35897e2\",53:\"cd24bac\",54:\"270837d\",55:\"202b91e\",56:\"febb9f6\",57:\"15a6941\",58:\"14a93e1\",59:\"0ce0567\",60:\"1f94504\",61:\"bb7da48\",62:\"644ca40\",63:\"9397c41\",64:\"0f613e2\",65:\"62a2ee8\",66:\"972d99a\",67:\"af8ab07\",68:\"5ca396a\",69:\"9ce9999\",70:\"1e7b083\",71:\"6ae0a4e\",72:\"01836d6\",73:\"b59aaa0\",74:\"e4b4302\",75:\"4eacc0f\",76:\"2bc020e\",77:\"ee87d9a\",78:\"64c9168\",79:\"750db06\",80:\"d8c379d\",81:\"854d10f\",82:\"3f0fbca\",83:\"00ad381\",86:\"cfb3c9b\"}[e]+\".js\"}(e);var d=new Error;c=function(r){f.onerror=f.onload=null,clearTimeout(u);var t=a[e];if(0!==t){if(t){var n=r&&(\"load\"===r.type?\"missing\":r.type),c=r&&r.target&&r.target.src;d.message=\"Loading chunk \"+e+\" failed.\\n(\"+n+\": \"+c+\")\",d.name=\"ChunkLoadError\",d.type=n,d.request=c,t[1](d)}a[e]=void 0}};var u=setTimeout((function(){c({type:\"timeout\",target:f})}),12e4);f.onerror=f.onload=c,document.head.appendChild(f)}return Promise.all(r)},o.m=e,o.c=n,o.d=function(e,r,t){o.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:t})},o.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},o.t=function(e,r){if(1&r&&(e=o(e)),8&r)return e;if(4&r&&\"object\"==typeof e&&e&&e.__esModule)return e;var t=Object.create(null);if(o.r(t),Object.defineProperty(t,\"default\",{enumerable:!0,value:e}),2&r&&\"string\"!=typeof e)for(var n in e)o.d(t,n,function(r){return e[r]}.bind(null,n));return t},o.n=function(e){var r=e&&e.__esModule?function(){r","exit_code":0,"status":"completed"}}
{"type":"item.started","item":{"id":"item_57","type":"command_execution","command":"/bin/bash -lc \"curl -sSL --max-time 20 https://app.sendpotion.com/_nuxt/9d04b47.js | rg -o '\\\"[a-f0-9]{7}\\\"' | tr -d '\\\"' | sort -u | while read -r chunk_id; do curl -sSL --max-time 15 \\\"https://app.sendpotion.com/_nuxt/\"'${chunk_id}.js\"; done | rg -o -i '\"'.{0,160}(pro_v2|tier.{0,20}pro|voice.?clon|userAudioProfile|voiceCloning).{0,220}' | sed -n '1,240p'\"","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_57","type":"command_execution","command":"/bin/bash -lc \"curl -sSL --max-time 20 https://app.sendpotion.com/_nuxt/9d04b47.js | rg -o '\\\"[a-f0-9]{7}\\\"' | tr -d '\\\"' | sort -u | while read -r chunk_id; do curl -sSL --max-time 15 \\\"https://app.sendpotion.com/_nuxt/\"'${chunk_id}.js\"; done | rg -o -i '\"'.{0,160}(pro_v2|tier.{0,20}pro|voice.?clon|userAudioProfile|voiceCloning).{0,220}' | sed -n '1,240p'\"","aggregated_output":"mCameraPosition:o.a,TrainingVideo:i.a},data:function(){return{verifyCameraPosition:!1,recorderKey:Object(a.v4)(),recordingId:null,recorderState:null,loading:!1,userAudioProfile:null}},computed:{paidUser:function(){return\"basic\"!==((this.$auth.user||{}).subscription||{}).plan}},mounted:function(){var t=this;return Object(n.a)(regeneratorRuntime.mark((function e(){var r,n,a,o;return regeneratorR\ne 0:return t.loading=!0,e.next=3,t.$auth.fetchUser();case 3:return e.next=5,t.$axios.get(\"api/synthetic-voice/fetchAudioProfile\");case 5:if(r=e.sent,n=r.data,t.userAudioProfile=n.data,t.userAudioProfile){e.next=14;break}return e.next=11,t.$axios.post(\"/api/synthetic-voice/start\",{});case 11:a=e.sent,o=a.data,t.userAudioProfile=o.data;case 14:t.userAudioProfile&&t.userAudioProfile.trainingVideo\n&&(\"created\"!==t.userAudioProfile.status&&\"created\"!==t.userAudioProfile.potionAiTrainingStatus?t.$router.push(\"/onboarding/payment\"):t.next()),t.loading=!1;case 16:case\"end\":return e.stop()}}),e)})))()},methods:{startAITraining:function(){var t=this;return Object(n.a)(regeneratorRuntime.mar\ntion e(){var r;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=\"/api/synthetic-voice/model-training-approve/\".concat(t.userAudioProfile._id),t.paidUser&&(r=\"/api/synthetic-voice/start-training/\".concat(t.userAudioProfile._id)),e.next=4,t.$axios.post(r);case 4:case\"end\":return e.stop()}}),e)})))()},next:function(){var t=this;return Object(n.a)(regenerato\nrRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t.userAudioProfile.userApproval){e.next=3;break}return e.next=3,t.startAITraining();case 3:t.$router.push(\"/onboarding/payment\");case 4:case\"end\":return e.stop()}}),e)})))()}}},s=(r(1816),r(29)),d=Object(s.a)(c,(function(){var t=this,e=t.\null,\"04372232\",null).exports),v=i(116),m={components:{SplitLayout:a.a,Checklist:b,PotionText:c.a,Button:v.a},data:function(){return{continueSteps:!1,loading:!1,userAudioProfile:{}}},computed:{onboardingStepsCompleted:function(){return(this.$auth.user||{}).onboardingStepsCompleted||[]},trainedAi:function(){return this.userAudioProfile&&\"created\"!==this.userAudioProfile.status&&\"created\"!==this.\nuserAudioProfile.potionAiTrainingStatus},paidUser:function(){return\"basic\"!==((this.$auth.user||{}).subscription||{}).plan},hasStripePayment:function(){return\"stripe\"===((this.$auth.user||{}).subscription||{}).origin}},mounted:function(\noarding\"!==this.$route.path||(this.continueSteps=!0,this.$router.push(\"/onboarding/welcome\")),\"/onboarding\"!==this.$route.path&&(this.continueSteps=!0),this.getUserAudioProfile()},methods:{getUserAudioProfile:function(){var t=this;return Object(r.a)(regeneratorRuntime.mark((function e(){var i,r;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t.loading=!0,\ne.next=3,t.$axios.get(\"api/synthetic-voice/fetchAudioProfile\");case 3:i=e.sent,r=i.data,t.userAudioProfile=r.data,t.loading=!1;case 7:case\"end\":return e.stop()}}),e)})))()},continueHandler:function(){var t=this;return Object(r.a)(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(\nt(u.e)([\"syntheticVoiceAI\"])),{},{useAiGeneratedVoice:function(){return this.videoPost.userId&&this.videoPost.userId.useAiGeneratedVoice&&this.videoPost.userId.userAudioProfile&&\"completed\"===this.videoPost.userId.userAudioProfile.status&&!0===this.videoPost.userId.userAudioProfile.userApproval}}),watch:{backToVideo:function(){this.isPending()||this.$store.commit(\"common/setDynamicScreenEditBa\niceAI||{}).audioProfile||{})._id},useAiGeneratedVoice:function(){return this.videoPost.userId&&this.videoPost.userId.useAiGeneratedVoice&&this.videoPost.userId.userAudioProfile},recordingData:function(){var e=this.videoPost;return{id:this.videoPost._id,recordingObject:e,subtitles:this.recordingSubtitles}},newProspectNames:function(){return JSON.parse(JSON.stringify(this.prospectNames))},baseUr\nis.publicRecording.publicRecording){var e=this.publicRecording.publicRecording,t=e.autoGenerated,r=!1===e.dynamicVideoTemplate&&!t;this.$auth.user&&!r&&this.getUserAudioProfile()}},methods:E(E({},Object(o.b)(\"publicRecording\",{updateNextVideo:\"updateNextVideo\",updateLastVideo:\"updateLastVideo\",updateCurrentVideoIndex:\"updateCurrentVideoIndex\",getRecording:\"get\",fetchAllDynamicRecordings:\"fetch\nfetchDynamicVideoDetails:\"fetchDynamicVideoDetails\",fetchDynamicRecordings:\"fetchDynamicRecordings\",fetchDynamicSalutations:\"fetchDynamicSalutations\"})),{},{getUserAudioProfile:function(){var e=this;return Object(i.a)(regeneratorRuntime.mark((function t(){var r,n,a,i,o;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return r=e.$auth.strategy.token.get(),t.next=3\nt(u.e)([\"syntheticVoiceAI\"])),{},{useAiGeneratedVoice:function(){return this.videoPost.userId&&this.videoPost.userId.useAiGeneratedVoice&&this.videoPost.userId.userAudioProfile&&\"completed\"===this.videoPost.userId.userAudioProfile.status&&!0===this.videoPost.userId.userAudioProfile.userApproval}}),watch:{backToVideo:function(){this.isPending()||this.$store.commit(\"common/setDynamicScreenEditBa\n\",n(\"/upgrade-account\"));case 19:case\"end\":return t.stop()}}),t)})))()},beforeMount:function(){this.handleCustomSubdomainRedirect(),this.getRecording(),this.getUserAudioProfile()},mounted:function(){window.appAnalytics.page(\"Dynamic video create\"),this.reRecordingId=this.$route.query.reRecordingId,this.$auth.user&&(this.fetchCounts(),this.checkDynamicVideosCount()),this.reRecordingId&&!(this.$\nt(i.b)(\"recordings\",{fetchCounts:\"fetchCounts\"})),Object(i.b)(\"publicRecording\",{publicRecordingGet:\"get\"})),{},{handleSalutationStoreUpdate:function(){this.getUserAudioProfile()},checkDynamicVideosCount:function(){var e=this;return Object(a.a)(regeneratorRuntime.mark((function t(){var r,n,a;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(r=((e.$auth.user||{}\npublicRecordingGet(e.$route.query.reRecordingId),t.next=12;break;case 9:t.prev=9,t.t0=t.catch(0);case 12:case\"end\":return t.stop()}}),t,null,[[0,9]])})))()},getUserAudioProfile:function(){var e=this;return Object(a.a)(regeneratorRuntime.mark((function t(){var r,n;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,e.$axios.get(\"/api/user/aud\nRecording:{type:Boolean,default:!0},activePageId:{type:String,default:\"trim\"},transcript:{type:Object,default:null},recordingUpdating:{type:Boolean,default:!1},userAudioProfileId:{type:String,default:null},dynamicRecordingsCount:{type:Number,default:0},dynamicVideosLimitForBasicPlan:{type:Number,default:1e6},salutations:{type:Array,default:function(){return[]}},user:{type:Object,default:functi\nts:qe},mixins:[b.a,u.a,p.a,g.a,h],props:{videoPost:{type:Object,default:null},transcript:{type:Object,default:null},recordingUpdating:{type:Boolean,default:!1},userAudioProfileId:{type:String,default:null},dynamicRecordingsCount:{type:Number,default:0},dynamicVideosLimitForBasicPlan:{type:Number,default:1e6},salutations:{type:Array,default:function(){return[]}},user:{type:Object,default:functi\nvariation:\"text\"}},[t._v(t._s(t.sentence.text))])],1)])}),[],!1,null,\"0ab6368c\",null).exports),w={components:{PotionText:d.a,Button:u.a,DataTableCell:_},props:{userAudioProfile:{type:Object,default:function(){return{}}}},data:function(){return{audioPlay:!1,cardAudio:null}},computed:{sentenceColor:function(){return this.userAudioProfile.trainingVideo?\"potion-grey-dark\":\"black\"}}},k=(r(1891),Obj\n\"serial\"}}),t._v(\" \"),r(\"DataTableCell\",{attrs:{sentence:{text:\"Train your video AI\"},\"content-type\":\"sentence\",\"sentence-color\":t.sentenceColor}}),t._v(\" \"),t.userAudioProfile.potionAiTrainingStatus&&\"created\"!==t.userAudioProfile.potionAiTrainingStatus?t._e():r(\"div\",{staticClass:\"center-items\"},[t.userAudioProfile.trainingVideo?r(\"Button\",{attrs:{\"icon-name\":\"repeat-outline\",size:\"medium\",\"\nn      \")])],1)],1)],1)}),[],!1,null,\"cffbceb2\",null).exports),P={components:{PotionText:d.a,TrainingVideoCard:k},props:{userApproval:{type:Boolean,default:!1},userAudioProfile:{type:Object,default:function(){return{}}}}},O=(r(1893),Object(b.a)(P,(function(){var t=this,e=t.$createElement,r=t._self._c||e;return r(\"div\",{staticClass:\"sentence-list\"},[r(\"div\",{staticClass:\"header\"},[r(\"div\",{stat\n\"black\",variation:\"text\"}},[t._v(\"\\n      \"+t._s(t.$t(\"syntheticVoice.trainAI\"))+\"\\n    \")])],1),t._v(\" \"),r(\"TrainingVideoCard\",{attrs:{\"user-audio-profile\":t.userAudioProfile},on:{\"record-training-video\":function(e){return t.$emit(\"record-training-video\")}}})],1)}),[],!1,null,\"7984498f\",null).exports),T=r(1426),j=r(81),S={components:{Intro:y,SentenceList:O,TrainingVideo:T.a,PotionText:d.a,Bu\n(){return{sentences:[],sentenceText:[],currentSentence:null,loading:!0,showIntro:!0,userApproval:!1,audioProfileId:null,updateApproveStatus:!1,sentenceReady:!1,userAudioProfile:null,showRecordTrainingVideo:!1,loadingStartTraining:!1}},computed:{totalRecorded:function(){return this.sentences.filter((function(t){return t.url})).length},showIntroPanel:function(){return!this.audioProfileId&&this.s\ntion(e){for(;;)switch(e.prev=e.next){case 0:return t.loading=!0,e.next=3,t.$axios.post(\"/api/synthetic-voice/start\",{});case 3:r=e.sent,n=r.data,t.loading=!1,t.userAudioProfile=n.data,t.audioProfileId=t.userAudioProfile._id;case 8:case\"end\":return e.stop()}}),e)})))()},showFirstSentenceRecord:function(){if(this.sentences.length){var t=this.sentences[0]._id;this.sentenceText=[this.sentences.fin\ntion(){var t=this;return Object(l.a)(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t.userAudioProfile.trainingVideo){e.next=3;break}return j.a.open({message:\"Please record the training video.\",indefinite:!0,variation:\"error\"}),e.abrupt(\"return\");case 3:return t.loadingStartTraining=!0,e.prev=4,e.next=7,t.$axios.post(\"/a\n((function(e){for(;;)switch(e.prev=e.next){case 0:return t.loading=!0,e.next=3,t.$axios.get(\"api/synthetic-voice/fetchAudioProfile\");case 3:r=e.sent,n=r.data,t.userAudioProfile=n.data,t.audioProfileId=(t.userAudioProfile||{})._id,t.loading=!1;case 8:case\"end\":return e.stop()}}),e)})))()}}},C=(r(1895),Object(b.a)(S,(function(){var t=this,e=t.$createElement,r=t._self._c||e;return r(\"div\",{static\n.fetchAudioProfile(),t.showRecordTrainingVideo=!1},back:function(e){t.showRecordTrainingVideo=!1}}})],1):t._e():r(\"SentenceList\",{attrs:{\"user-audio-profile\":t.userAudioProfile,\"user-approval\":t.userApproval},on:{\"record-training-video\":function(e){t.showRecordTrainingVideo=!0}}}),t._v(\" \"),t.userAudioProfile&&t.userAudioProfile.trainingVideo&&\"created\"===t.userAudioProfile.potionAiTrainingSta\nAITraining}},[r(\"PotionText\",{attrs:{color:\"white\"}},[t._v(\"\\n          \"+t._s(t.$t(\"syntheticVoice.startTraining\"))+\"\\n        \")])],1)],1):t._e(),t._v(\" \"),t.userAudioProfile&&\"started\"===t.userAudioProfile.potionAiTrainingStatus?r(\"div\",{staticClass:\"potion-ai-status-alert\"},[r(\"PotionText\",[t._v(\"\\n        \"+t._s(t.$t(\"syntheticVoice.trainingInProgress\"))+\"\\n      \")])],1):t._e()]],2)}),[]\nRecording:{type:Boolean,default:!0},activePageId:{type:String,default:\"trim\"},transcript:{type:Object,default:null},recordingUpdating:{type:Boolean,default:!1},userAudioProfileId:{type:String,default:null},dynamicRecordingsCount:{type:Number,default:0},dynamicVideosLimitForBasicPlan:{type:Number,default:1e6},salutations:{type:Array,default:function(){return[]}},user:{type:Object,default:functi\nts:Ze},mixins:[b.a,v.a,u.a,g.a,h],props:{videoPost:{type:Object,default:null},transcript:{type:Object,default:null},recordingUpdating:{type:Boolean,default:!1},userAudioProfileId:{type:String,default:null},dynamicRecordingsCount:{type:Number,default:0},dynamicVideosLimitForBasicPlan:{type:Number,default:1e6},salutations:{type:Array,default:function(){return[]}},user:{type:Object,default:functi\ned,t=!1===e.dynamicVideoTemplate&&!a;this.$auth.user&&!t&&(this.fetchDynamicVideoDetails(),this.fetchDynamicRecordings(),this.fetchDynamicSalutations(),this.getUserAudioProfile())}},mounted:function(){var e=this;this.$auth.loggedIn&&this.$store.dispatch(\"syntheticVoiceAI/getAudioProfile\"),window.dispatchEvent(new Event(\"checkExtensionInstalled\"));var a=function a(t){t.data&&\"extensionInstalled\nlutations\"})),Object(o.b)(\"recordings\",{fetchTranscript:\"fetchTranscript\",fetchCounts:\"fetchCounts\"})),Object(o.b)(\"clipboard\",{setClipboardRec:\"set\"})),{},{getUserAudioProfile:function(){var e=this;return Object(r.a)(regeneratorRuntime.mark((function a(){var t,i,r,o,d;return regeneratorRuntime.wrap((function(a){for(;;)switch(a.prev=a.next){case 0:return t=e.$auth.strategy.token.get(),a.next=3\nls,origin:\"onboarding\"},on:{finalSave:e.finalSave,\"back-step\":function(t){return e.$emit(\"back-to-synthetic\")}}})}),[],!1,null,\"456e891f\",null).exports},props:{userAudioProfile:{type:Object,default:function(){return{}}},sentences:{type:Array,default:function(){return[]}}},data:function(){return{sentenceText:[],currentSentence:null,loading:!1,userApproval:!1,audioProfileId:null,updateApproveSta\n}},computed:{paidUser:function(){return this.$auth.user.subscription&&\"basic\"!==this.$auth.user.subscription.plan}},mounted:function(){this.audioProfileId=this.userAudioProfile._id,this.recordSentence()},methods:{recordSentence:function(){this.sentenceText=Object(i.a)(this.sentences.filter((function(e){return!e.url||\"failed\"===e.validationStatus})))},getUserApprovalStatus:function(e){var t=thi\nts),v={components:{ConfirmCameraPosition:a.a,TrainingSentences:h},data:function(){return{verifyCameraPosition:!1,recordingId:null,recorderState:null,loading:!1,userAudioProfile:null,sentences:[]}},mounted:function(){var e=this;return Object(r.a)(regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return e.loading=!0,t.next=3,Pro\nmise.all([e.fetchUserAudioProfile(),e.fetchSentences()]);case 3:e.loading=!1;case 4:case\"end\":return t.stop()}}),t)})))()},methods:{next:function(){this.$router.push(\"/onboarding/payment\")},fetchUserAudioProfile:function(){var e=this;return Object(r.a)(\nntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,e.$axios.get(\"api/synthetic-voice/fetchAudioProfile\");case 2:if(n=t.sent,r=n.data,e.userAudioProfile=r.data,e.userAudioProfile&&e.userAudioProfile.trainingVideo){t.next=8;break}return e.$router.push(\"/onboarding/training\"),t.abrupt(\"return\");case 8:e.userAudioProfile&&\"created\"!==e.userAudioProfile.status&&\"created\"!==\ne.userAudioProfile.potionAiTrainingStatus&&e.$router.push(\"/onboarding/payment\");case 9:case\"end\":return t.stop()}}),t)})))()},fetchSentences:function(){var e=this;return Object(r.a)(regeneratorRuntime.mark((function t(){var n,r;return re\n$createElement,n=e._self._c||t;return n(\"div\",{staticClass:\"cnt\"},[e.verifyCameraPosition?e.loading?e._e():n(\"TrainingSentences\",{attrs:{\"user-audio-profile\":e.userAudioProfile,sentences:e.sentences},on:{startAITraining:e.next}}):n(\"ConfirmCameraPosition\",{on:{confirm:function(t){e.verifyCameraPosition=!0}}}),e._v(\" \"),e.loading?n(\"b-loading\",{attrs:{active:\"\",\"is-full-page\":!0}}):e._e()],1)})\nrdingStatus:function(){return this.user&&this.user.isOnboarded?1:0},quotaResetDate:function(){return this.subscription&&this.subscription.quotaResetDate||null},userAudioProfile:function(){return this.user&&this.user.userAudioProfile||!1},role:function(){var t=this;return this.roles.findIndex((function(e){return t.user&&e.value.toLowerCase()===t.user.role}))},currentPeriodEndDate:function(){ret\n,proxy:!0},{key:\"theme-action\",fn:function(){return[n(\"Button\",{attrs:{variation:\"translucent\",size:\"medium\",loading:t.loadingResetAiTrainingButton,disabled:!t.userAudioProfile,icon:\"re-record\"},nativeOn:{click:function(e){return t.openResetUserAiTrainingPopup(e)}}},[t._v(\"\\n          Reset Voice Al training\\n        \")])]},proxy:!0}])}),t._v(\" \"),n(\"ThemeRow\",{scopedSlots:t._u([{key:\"theme-de\noxy:!0},{key:\"theme-action\",fn:function(){return[n(\"Button\",{attrs:{variation:\"translucent\",size:\"medium\",loading:t.loadingResetVideoTrainingButton,disabled:!t.userAudioProfile,icon:\"re-record\"},nativeOn:{click:function(e){return t.openResetUserVideoTrainingPopup(e)}}},[t._v(\"\\n          Reset Video Al training\\n        \")])]},proxy:!0}])}),t._v(\" \"),n(\"ThemeRow\",{scopedSlots:t._u([{key:\"theme\n","exit_code":0,"status":"completed"}}
{"type":"item.started","item":{"id":"item_58","type":"file_change","changes":[{"path":"/workspace/voice-cloning-job-handler/job_payload.js","kind":"update"}],"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_58","type":"file_change","changes":[{"path":"/workspace/voice-cloning-job-handler/job_payload.js","kind":"update"}],"status":"completed"}}
{"type":"item.started","item":{"id":"item_59","type":"command_execution","command":"/bin/bash -lc \"find app voice-cloning-job-handler voice-synthsizer-job-handler -name '*.js' -print0 | xargs -0 -n1 node --check\"","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_59","type":"command_execution","command":"/bin/bash -lc \"find app voice-cloning-job-handler voice-synthsizer-job-handler -name '*.js' -print0 | xargs -0 -n1 node --check\"","aggregated_output":"","exit_code":0,"status":"completed"}}
{"type":"item.started","item":{"id":"item_60","type":"command_execution","command":"/bin/bash -lc 'git diff --check && npm test && git status --short'","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_60","type":"command_execution","command":"/bin/bash -lc 'git diff --check && npm test && git status --short'","aggregated_output":"\n> potion-voice@1.0.0 test /workspace\n> node voice-cloning-job-handler/test/pro_v2_job.test.js\n\nok - decodes a flat pro_v2 cloning request\nok - decodes the legacy Mongoose envelope with a top-level tier\nok - decodes SNS and request envelopes used by tiered submissions\nok - decodes a complete SQS record with a serialized payload envelope\nok - normalizes tier values and rejects malformed jobs\nok - selects configured pro_v2 assets with working legacy fallbacks\nok - persists pro_v2 on cloning jobs and audio profiles\n M app/services/voice_cloning/voice_cloning_model.js\n M package.json\n M voice-cloning-job-handler/index.js\n M voice-cloning-job-handler/package.json\n M voice-cloning-job-handler/user_audio_profile/user_audio_profile_model.js\n M voice-cloning-job-handler/voice_cloning/voice_cloning_model.js\n M voice-synthsizer-job-handler/user_audio_profile/user_audio_profile_model.js\n?? voice-cloning-job-handler/job_payload.js\n?? voice-cloning-job-handler/pipeline_config.js\n?? voice-cloning-job-handler/test/\n","exit_code":0,"status":"completed"}}
{"type":"item.completed","item":{"id":"item_61","type":"agent_message","text":"Implemented `pro_v2` cloning support.\n\n- Handles flat, Mongoose, SQS, and SNS payloads.\n- Persists tier across cloning/profile records.\n- Routes configurable `pro_v2` model assets with legacy fallbacks.\n- Prevents null status/model completion states.\n- Added regression tests.\n\nVerification: `npm test` passes all 7 tests."}}
{"type":"turn.completed","usage":{"input_tokens":4800106,"cached_input_tokens":4661314,"cache_write_input_tokens":138621,"output_tokens":26832,"reasoning_output_tokens":14060}}
