UNPKG

set-state-compare

Version:

setState for React that compares with the current state and only sets the state if changed.

129 lines 13.3 kB
/** * @param {any} value1 * @param {any} value2 * @param {boolean} [debug] * @returns {boolean} */ function anythingDifferent(value1, value2, debug) { if (Array.isArray(value1) && Array.isArray(value2)) { return arrayDifferent(value1, value2); } else if (isSimpleObject(value1) && isSimpleObject(value2)) { return simpleObjectDifferent(value1, value2, true); } else if (typeof value1 == "object" && typeof value2 == "object" && value1 && value2) { return !Object.is(value1, value2); } else if (value1 !== value2) { if (debug) console.log(`Value 1 ${value1} wasn't the same as value 2 ${value2}`); return true; } return false; } /** * @param {any} value1 * @param {any} value2 * @param {boolean} [debug] * @returns {boolean} */ function referenceDifferent(value1, value2, debug) { const isSame = Object.is(value1, value2); if (!isSame && debug) { console.log(`Value 1 ${value1} wasn't the same as value 2 ${value2}`); } return !isSame; } /** * @param {any[]} array1 * @param {any[]} array2 * @param {boolean} [debug] * @returns {boolean} */ function arrayReferenceDifferent(array1, array2, debug) { if (array1.length !== array2.length) { if (debug) { console.log(`Array length ${array1.length} wasn't the same as ${array2.length}`); } return true; } for (let index = 0; index < array1.length; index += 1) { if (referenceDifferent(array1[index], array2[index], debug)) { return true; } } return false; } /** * @param {any[]} array1 * @param {any[]} array2 * @returns {boolean} */ function arrayDifferent(array1, array2) { if (array1.length != array2.length) { return true; } for (const key in array1) { if (anythingDifferent(array1[key], array2[key])) { return true; } } return false; } /** * @param {any} value * @returns {boolean} */ function isSimpleObject(value) { // Objects that contain $$typeof are special React objects that have recursive issues if (typeof value == "object" && value !== null && value.constructor.name == "Object" && !value["$$typeof"]) { return true; } return false; } /** * @param {object} object1 * @param {object} object2 * @param {boolean} checkLength * @returns {boolean} */ function simpleObjectDifferent(object1, object2, checkLength) { if (checkLength && Object.keys(object1).length !== Object.keys(object2).length) { return true; } return simpleObjectValuesDifferent(object1, object2); } /** * @param {any} object1 * @param {any} object2 * @param {object} [args] * @param {boolean} [args.debug] * @param {(string) => boolean} [args.ignore] * @returns {boolean} */ function simpleObjectValuesDifferent(object1, object2, args) { for (const key in object1) { if (args?.ignore && args.ignore({ key })) { if (args?.debug) console.log(`Ignoring key ${key}`); continue; } if (args?.debug) console.log({ key, object1: object1[key], object2: object2[key] }); if (!(key in object2)) { if (args?.debug) { console.log(`Key ${key} wasn't found in object`); } return true; } else if (anythingDifferent(object1[key], object2[key], args?.debug)) { if (args?.debug) { console.log(`Something was different for ${key}`); } return true; } } return false; } export { anythingDifferent, arrayDifferent, arrayReferenceDifferent, isSimpleObject, referenceDifferent, simpleObjectDifferent, simpleObjectValuesDifferent }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlmZi11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9kaWZmLXV0aWxzLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7OztHQUtHO0FBQ0gsU0FBUyxpQkFBaUIsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUs7SUFDOUMsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUNuRCxPQUFPLGNBQWMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUE7SUFDdkMsQ0FBQztTQUFNLElBQUksY0FBYyxDQUFDLE1BQU0sQ0FBQyxJQUFJLGNBQWMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1FBQzVELE9BQU8scUJBQXFCLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQTtJQUNwRCxDQUFDO1NBQU0sSUFBSSxPQUFPLE1BQU0sSUFBSSxRQUFRLElBQUksT0FBTyxNQUFNLElBQUksUUFBUSxJQUFJLE1BQU0sSUFBSSxNQUFNLEVBQUUsQ0FBQztRQUN0RixPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUE7SUFDbkMsQ0FBQztTQUFNLElBQUksTUFBTSxLQUFLLE1BQU0sRUFBRSxDQUFDO1FBQzdCLElBQUksS0FBSztZQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxNQUFNLCtCQUErQixNQUFNLEVBQUUsQ0FBQyxDQUFBO1FBRWhGLE9BQU8sSUFBSSxDQUFBO0lBQ2IsQ0FBQztJQUVELE9BQU8sS0FBSyxDQUFBO0FBQ2QsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsU0FBUyxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUs7SUFDL0MsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUE7SUFFeEMsSUFBSSxDQUFDLE1BQU0sSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUNyQixPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsTUFBTSwrQkFBK0IsTUFBTSxFQUFFLENBQUMsQ0FBQTtJQUN2RSxDQUFDO0lBRUQsT0FBTyxDQUFDLE1BQU0sQ0FBQTtBQUNoQixDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxTQUFTLHVCQUF1QixDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSztJQUNwRCxJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3BDLElBQUksS0FBSyxFQUFFLENBQUM7WUFDVixPQUFPLENBQUMsR0FBRyxDQUFDLGdCQUFnQixNQUFNLENBQUMsTUFBTSx1QkFBdUIsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUE7UUFDbEYsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFBO0lBQ2IsQ0FBQztJQUVELEtBQUssSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFLEtBQUssR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLEtBQUssSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUN0RCxJQUFJLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUM1RCxPQUFPLElBQUksQ0FBQTtRQUNiLENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyxLQUFLLENBQUE7QUFDZCxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILFNBQVMsY0FBYyxDQUFDLE1BQU0sRUFBRSxNQUFNO0lBQ3BDLElBQUksTUFBTSxDQUFDLE1BQU0sSUFBSSxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDbkMsT0FBTyxJQUFJLENBQUE7SUFDYixDQUFDO0lBRUQsS0FBSyxNQUFNLEdBQUcsSUFBSSxNQUFNLEVBQUUsQ0FBQztRQUN6QixJQUFJLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ2hELE9BQU8sSUFBSSxDQUFBO1FBQ2IsQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPLEtBQUssQ0FBQTtBQUNkLENBQUM7QUFFRDs7O0dBR0c7QUFDSCxTQUFTLGNBQWMsQ0FBQyxLQUFLO0lBQzNCLHFGQUFxRjtJQUNyRixJQUFJLE9BQU8sS0FBSyxJQUFJLFFBQVEsSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLEtBQUssQ0FBQyxXQUFXLENBQUMsSUFBSSxJQUFJLFFBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1FBQzNHLE9BQU8sSUFBSSxDQUFBO0lBQ2IsQ0FBQztJQUVELE9BQU8sS0FBSyxDQUFBO0FBQ2QsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsU0FBUyxxQkFBcUIsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLFdBQVc7SUFDMUQsSUFBSSxXQUFXLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEtBQUssTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUMvRSxPQUFPLElBQUksQ0FBQTtJQUNiLENBQUM7SUFFRCxPQUFPLDJCQUEyQixDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQTtBQUN0RCxDQUFDO0FBRUQ7Ozs7Ozs7R0FPRztBQUNILFNBQVMsMkJBQTJCLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJO0lBQ3pELEtBQUssTUFBTSxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7UUFDMUIsSUFBSSxJQUFJLEVBQUUsTUFBTSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBQyxHQUFHLEVBQUMsQ0FBQyxFQUFFLENBQUM7WUFDdkMsSUFBSSxJQUFJLEVBQUUsS0FBSztnQkFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLGdCQUFnQixHQUFHLEVBQUUsQ0FBQyxDQUFBO1lBQ25ELFNBQVE7UUFDVixDQUFDO1FBRUQsSUFBSSxJQUFJLEVBQUUsS0FBSztZQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFDLENBQUMsQ0FBQTtRQUVqRixJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUN0QixJQUFJLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQztnQkFDaEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEdBQUcseUJBQXlCLENBQUMsQ0FBQTtZQUNsRCxDQUFDO1lBRUQsT0FBTyxJQUFJLENBQUE7UUFDYixDQUFDO2FBQU0sSUFBSSxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3RFLElBQUksSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDO2dCQUNoQixPQUFPLENBQUMsR0FBRyxDQUFDLCtCQUErQixHQUFHLEVBQUUsQ0FBQyxDQUFBO1lBQ25ELENBQUM7WUFFRCxPQUFPLElBQUksQ0FBQTtRQUNiLENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyxLQUFLLENBQUE7QUFDZCxDQUFDO0FBRUQsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixjQUFjLEVBQ2QsdUJBQXVCLEVBQ3ZCLGNBQWMsRUFDZCxrQkFBa0IsRUFDbEIscUJBQXFCLEVBQ3JCLDJCQUEyQixFQUM1QixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAcGFyYW0ge2FueX0gdmFsdWUxXG4gKiBAcGFyYW0ge2FueX0gdmFsdWUyXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtkZWJ1Z11cbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5mdW5jdGlvbiBhbnl0aGluZ0RpZmZlcmVudCh2YWx1ZTEsIHZhbHVlMiwgZGVidWcpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUxKSAmJiBBcnJheS5pc0FycmF5KHZhbHVlMikpIHtcbiAgICByZXR1cm4gYXJyYXlEaWZmZXJlbnQodmFsdWUxLCB2YWx1ZTIpXG4gIH0gZWxzZSBpZiAoaXNTaW1wbGVPYmplY3QodmFsdWUxKSAmJiBpc1NpbXBsZU9iamVjdCh2YWx1ZTIpKSB7XG4gICAgcmV0dXJuIHNpbXBsZU9iamVjdERpZmZlcmVudCh2YWx1ZTEsIHZhbHVlMiwgdHJ1ZSlcbiAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUxID09IFwib2JqZWN0XCIgJiYgdHlwZW9mIHZhbHVlMiA9PSBcIm9iamVjdFwiICYmIHZhbHVlMSAmJiB2YWx1ZTIpIHtcbiAgICByZXR1cm4gIU9iamVjdC5pcyh2YWx1ZTEsIHZhbHVlMilcbiAgfSBlbHNlIGlmICh2YWx1ZTEgIT09IHZhbHVlMikge1xuICAgIGlmIChkZWJ1ZykgY29uc29sZS5sb2coYFZhbHVlIDEgJHt2YWx1ZTF9IHdhc24ndCB0aGUgc2FtZSBhcyB2YWx1ZSAyICR7dmFsdWUyfWApXG5cbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgcmV0dXJuIGZhbHNlXG59XG5cbi8qKlxuICogQHBhcmFtIHthbnl9IHZhbHVlMVxuICogQHBhcmFtIHthbnl9IHZhbHVlMlxuICogQHBhcmFtIHtib29sZWFufSBbZGVidWddXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuZnVuY3Rpb24gcmVmZXJlbmNlRGlmZmVyZW50KHZhbHVlMSwgdmFsdWUyLCBkZWJ1Zykge1xuICBjb25zdCBpc1NhbWUgPSBPYmplY3QuaXModmFsdWUxLCB2YWx1ZTIpXG5cbiAgaWYgKCFpc1NhbWUgJiYgZGVidWcpIHtcbiAgICBjb25zb2xlLmxvZyhgVmFsdWUgMSAke3ZhbHVlMX0gd2Fzbid0IHRoZSBzYW1lIGFzIHZhbHVlIDIgJHt2YWx1ZTJ9YClcbiAgfVxuXG4gIHJldHVybiAhaXNTYW1lXG59XG5cbi8qKlxuICogQHBhcmFtIHthbnlbXX0gYXJyYXkxXG4gKiBAcGFyYW0ge2FueVtdfSBhcnJheTJcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2RlYnVnXVxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmZ1bmN0aW9uIGFycmF5UmVmZXJlbmNlRGlmZmVyZW50KGFycmF5MSwgYXJyYXkyLCBkZWJ1Zykge1xuICBpZiAoYXJyYXkxLmxlbmd0aCAhPT0gYXJyYXkyLmxlbmd0aCkge1xuICAgIGlmIChkZWJ1Zykge1xuICAgICAgY29uc29sZS5sb2coYEFycmF5IGxlbmd0aCAke2FycmF5MS5sZW5ndGh9IHdhc24ndCB0aGUgc2FtZSBhcyAke2FycmF5Mi5sZW5ndGh9YClcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGFycmF5MS5sZW5ndGg7IGluZGV4ICs9IDEpIHtcbiAgICBpZiAocmVmZXJlbmNlRGlmZmVyZW50KGFycmF5MVtpbmRleF0sIGFycmF5MltpbmRleF0sIGRlYnVnKSkge1xuICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZmFsc2Vcbn1cblxuLyoqXG4gKiBAcGFyYW0ge2FueVtdfSBhcnJheTFcbiAqIEBwYXJhbSB7YW55W119IGFycmF5MlxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmZ1bmN0aW9uIGFycmF5RGlmZmVyZW50KGFycmF5MSwgYXJyYXkyKSB7XG4gIGlmIChhcnJheTEubGVuZ3RoICE9IGFycmF5Mi5sZW5ndGgpIHtcbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgZm9yIChjb25zdCBrZXkgaW4gYXJyYXkxKSB7XG4gICAgaWYgKGFueXRoaW5nRGlmZmVyZW50KGFycmF5MVtrZXldLCBhcnJheTJba2V5XSkpIHtcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZhbHNlXG59XG5cbi8qKlxuICogQHBhcmFtIHthbnl9IHZhbHVlXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuZnVuY3Rpb24gaXNTaW1wbGVPYmplY3QodmFsdWUpIHtcbiAgLy8gT2JqZWN0cyB0aGF0IGNvbnRhaW4gJCR0eXBlb2YgYXJlIHNwZWNpYWwgUmVhY3Qgb2JqZWN0cyB0aGF0IGhhdmUgcmVjdXJzaXZlIGlzc3Vlc1xuICBpZiAodHlwZW9mIHZhbHVlID09IFwib2JqZWN0XCIgJiYgdmFsdWUgIT09IG51bGwgJiYgdmFsdWUuY29uc3RydWN0b3IubmFtZSA9PSBcIk9iamVjdFwiICYmICF2YWx1ZVtcIiQkdHlwZW9mXCJdKSB7XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIHJldHVybiBmYWxzZVxufVxuXG4vKipcbiAqIEBwYXJhbSB7b2JqZWN0fSBvYmplY3QxXG4gKiBAcGFyYW0ge29iamVjdH0gb2JqZWN0MlxuICogQHBhcmFtIHtib29sZWFufSBjaGVja0xlbmd0aFxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmZ1bmN0aW9uIHNpbXBsZU9iamVjdERpZmZlcmVudChvYmplY3QxLCBvYmplY3QyLCBjaGVja0xlbmd0aCkge1xuICBpZiAoY2hlY2tMZW5ndGggJiYgT2JqZWN0LmtleXMob2JqZWN0MSkubGVuZ3RoICE9PSBPYmplY3Qua2V5cyhvYmplY3QyKS5sZW5ndGgpIHtcbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgcmV0dXJuIHNpbXBsZU9iamVjdFZhbHVlc0RpZmZlcmVudChvYmplY3QxLCBvYmplY3QyKVxufVxuXG4vKipcbiAqIEBwYXJhbSB7YW55fSBvYmplY3QxXG4gKiBAcGFyYW0ge2FueX0gb2JqZWN0MlxuICogQHBhcmFtIHtvYmplY3R9IFthcmdzXVxuICogQHBhcmFtIHtib29sZWFufSBbYXJncy5kZWJ1Z11cbiAqIEBwYXJhbSB7KHN0cmluZykgPT4gYm9vbGVhbn0gW2FyZ3MuaWdub3JlXVxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmZ1bmN0aW9uIHNpbXBsZU9iamVjdFZhbHVlc0RpZmZlcmVudChvYmplY3QxLCBvYmplY3QyLCBhcmdzKSB7XG4gIGZvciAoY29uc3Qga2V5IGluIG9iamVjdDEpIHtcbiAgICBpZiAoYXJncz8uaWdub3JlICYmIGFyZ3MuaWdub3JlKHtrZXl9KSkge1xuICAgICAgaWYgKGFyZ3M/LmRlYnVnKSBjb25zb2xlLmxvZyhgSWdub3Jpbmcga2V5ICR7a2V5fWApXG4gICAgICBjb250aW51ZVxuICAgIH1cblxuICAgIGlmIChhcmdzPy5kZWJ1ZykgY29uc29sZS5sb2coe2tleSwgb2JqZWN0MTogb2JqZWN0MVtrZXldLCBvYmplY3QyOiBvYmplY3QyW2tleV19KVxuXG4gICAgaWYgKCEoa2V5IGluIG9iamVjdDIpKSB7XG4gICAgICBpZiAoYXJncz8uZGVidWcpIHtcbiAgICAgICAgY29uc29sZS5sb2coYEtleSAke2tleX0gd2Fzbid0IGZvdW5kIGluIG9iamVjdGApXG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0cnVlXG4gICAgfSBlbHNlIGlmIChhbnl0aGluZ0RpZmZlcmVudChvYmplY3QxW2tleV0sIG9iamVjdDJba2V5XSwgYXJncz8uZGVidWcpKSB7XG4gICAgICBpZiAoYXJncz8uZGVidWcpIHtcbiAgICAgICAgY29uc29sZS5sb2coYFNvbWV0aGluZyB3YXMgZGlmZmVyZW50IGZvciAke2tleX1gKVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmYWxzZVxufVxuXG5leHBvcnQge1xuICBhbnl0aGluZ0RpZmZlcmVudCxcbiAgYXJyYXlEaWZmZXJlbnQsXG4gIGFycmF5UmVmZXJlbmNlRGlmZmVyZW50LFxuICBpc1NpbXBsZU9iamVjdCxcbiAgcmVmZXJlbmNlRGlmZmVyZW50LFxuICBzaW1wbGVPYmplY3REaWZmZXJlbnQsXG4gIHNpbXBsZU9iamVjdFZhbHVlc0RpZmZlcmVudFxufVxuIl19