var chunk;
var i;
// Main loop deals with bytes in chunks of 3
for (var i = 0; i < mainLength; i = i + 3) {
// Combine the three bytes into a single integer
chunk = (bytes[i] << 16) | (bytes[i + 1] << 8) | bytes[i + 2];
// Use bitmasks to extract 6-bit segments from the triplet
a = (chunk & 16515072) >> 18 ; // 16515072 = (2^6 - 1) << 18; b = (chunk & 258048) >> 12 ; // 258048 = (2^6 - 1) << 12; c = (chunk & 4032) >> 6 ; // 4032 = (2^6 - 1) << 6; d = chunk & 63 ; // 63 = 2^6 - 1;
// Convert the raw binary segments to the appropriate ASCII encoding
chunk = bytes[mainLength];
a = (chunk & 252) >> 2 ; // 252 = (2^6 - 1) << 2;
// Set the 4 least significant bits to zero
b = (chunk & 3) << 4 ; // 3 = 2^2 - 1;
base64 += encodings[a] + encodings[b] + '==';
chunk = (bytes[mainLength] << 8) | bytes[mainLength + 1];
a = (chunk & 64512) >> 10 ; // 64512 = (2^6 - 1) << 10; b = (chunk & 1008) >> 4 ; // 1008 = (2^6 - 1) << 4;
// Set the 2 least significant bits to zero
c = (chunk & 15) << 2 ; // 15 = 2^4 - 1;
base64 += encodings[a] + encodings[b] + encodings[c] + '=';
counter++;
showProgress(container, counter, maxItems);
};
confun();
json.model = curl(modelId + "_live2d_model.moc" + ".skel");
if (json.hasOwnProperty('physics')) { json.physics = curl(modelId + "_live2d_" + json.physics + ".txt"); }
if (json.hasOwnProperty('pose')) { json.pose = curl(modelId + "_live2d_" + json.pose + ".txt"); }
for (var idx=json.motions.idle.length-1; idx >= 0; idx--) {
let job = makeBase64Request(curl(modelId + "_live2d_" + json.motions.idle[idx].file + ".txt"));
job.then(function(promiseData) {
let _datatoPush = "data:text/plain;base64," + promiseData;
json.motions.idle.splice(idx, 1);
loadingJobs.push(job);
}
for (var idx=json.motions.tap_figure.length-1; idx >= 0 ; idx--) {
let job = makeBase64Request(curl(modelId + "_live2d_" + json.motions.tap_figure[idx].file + ".txt"));
job.then(function(promiseData) {
let _datatoPush = "data:text/plain;base64," + promiseData;
for (var idx=0; idx < json.textures.length; idx++) {
let job = makeBase64Request(curl(modelId + "_live2d_" + json.textures[idx]));
job.then(function(promiseData) {
let _datatoPush = "data:image/png;base64," + promiseData;