Skip to content

Instantly share code, notes, and snippets.

@ProMadGenius
Created October 3, 2018 19:09
Show Gist options
  • Save ProMadGenius/0ea64d60a95b5bfb42c9a9ee72e927bf to your computer and use it in GitHub Desktop.
Save ProMadGenius/0ea64d60a95b5bfb42c9a9ee72e927bf to your computer and use it in GitHub Desktop.
Buffer // source https://jsbin.com/nubipozite
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>Buffer</title>
<script src="https://npmcdn.com/@reactivex/rxjs@5.0.0-beta.3/dist/global/Rx.umd.js"></script>
</head>
<body>
<button id="clickButton">Check new notifications</button>
<script id="jsbin-javascript">
"use strict";
//Crea un observable y además emite un valor cada segundo
var intervalo = Rx.Observable.interval(500);
//Create an observable that emits every time button is clicked
//Crea un observable que emite cada vez que el boton es clickeado
var boton = document.getElementById('clickButton');
var BotonObservador = Rx.Observable.fromEvent(boton, 'click');
/*
Guarda todos los valores emitidos por nuestro intervalo hasta que nosotros damos clic.
Esto causara que el BotonObservador, emita un valor satisfaciendo al 'buffer'
Ahora pasanos todos los valores recogidos desde la ultima vez como un 'array'
*/
var myBufferedInterval = intervalo.buffer(BotonObservador);
//Print values to console
/*const subscribe = myBufferedInterval.subscribe(
val => {
console.clear();
console.log('new notification ids', val);
var numberOfNotifications = val.length;
console.log('New Notifications ', numberOfNotifications)
}
);*/
////////////////////////////////////// EXAMPLE 2
/*
//emit (1,2,3,4,5)
const source = Rx.Observable.from([1,2,3,4,5]);
//add 10 to each value
const example = source.map(val => val + 10);
//output: 11,12,13,14,15
const subscribe = example.subscribe(val => console.log(val));
//emit ({name: 'Joe', age: 30}, {name: 'Frank', age: 20},{name: 'Ryan', age: 50})
const sourceTwo = Rx.Observable.from([{name: 'Joe', age: 30}, {name: 'Frank', age: 20},{name: 'Ryan', age: 50}]);
//grab each persons name
const exampleTwo = sourceTwo.map(person => person.name);
//output: "Joe","Frank","Ryan"
const subscribe = exampleTwo.subscribe(val => console.log(val));*/
///////////////////////////////////////////EXAMPLE 3
//emit immediately, then every 5s
var source3 = Rx.Observable.timer(0, 3000);
var source = Rx.Observable.from([1, 2, 3, 4, 5]);
var source2 = source.map(function (data) { return data + 10; });
//switch to new inner observable when source emits, emit items that are emitted
var example = source.switchMap(function () { return Rx.Observable.interval(500); });
//output: 0,1,2,3,4,5,6,7,8,9...0,1,2,3,4,5,6,7,8
var subscribe = example.subscribe(function (val) { return console.log(val); });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNiaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJqc2Jpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEseURBQXlEO0FBQ3pELElBQU0sU0FBUyxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBRTlDLDhEQUE4RDtBQUM5RCxpRUFBaUU7QUFDakUsSUFBSSxLQUFLLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsQ0FBQztBQUNuRCxJQUFNLGVBQWUsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFFaEU7Ozs7RUFJRTtBQUNGLElBQU0sa0JBQWtCLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztBQUk3RCx5QkFBeUI7QUFDekI7Ozs7Ozs7SUFPSTtBQUVKLGdEQUFnRDtBQUNoRDs7Ozs7Ozs7Ozs7OztrRUFha0U7QUFDbEUsb0RBQW9EO0FBQ3BELGlDQUFpQztBQUNqQyxJQUFNLE9BQU8sR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDN0MsSUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMvQyxJQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLFVBQUEsSUFBSSxJQUFJLE9BQUEsSUFBSSxHQUFFLEVBQUUsRUFBUixDQUFRLENBQUMsQ0FBQztBQUM3QywrRUFBK0U7QUFDL0UsSUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxjQUFNLE9BQUEsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQTNCLENBQTJCLENBQUMsQ0FBQztBQUNwRSxpREFBaUQ7QUFDakQsSUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxVQUFBLEdBQUcsSUFBSSxPQUFBLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQWhCLENBQWdCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vQ3JlYSB1biBvYnNlcnZhYmxlIHkgYWRlbcOhcyBlbWl0ZSB1biB2YWxvciBjYWRhIHNlZ3VuZG9cbmNvbnN0IGludGVydmFsbyA9IFJ4Lk9ic2VydmFibGUuaW50ZXJ2YWwoNTAwKTtcblxuLy9DcmVhdGUgYW4gb2JzZXJ2YWJsZSB0aGF0IGVtaXRzIGV2ZXJ5IHRpbWUgYnV0dG9uIGlzIGNsaWNrZWRcbi8vQ3JlYSB1biBvYnNlcnZhYmxlIHF1ZSBlbWl0ZSBjYWRhIHZleiBxdWUgZWwgYm90b24gZXMgY2xpY2tlYWRvXG52YXIgYm90b24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2xpY2tCdXR0b24nKTtcbmNvbnN0IEJvdG9uT2JzZXJ2YWRvciA9IFJ4Lk9ic2VydmFibGUuZnJvbUV2ZW50KGJvdG9uLCAnY2xpY2snKTtcblxuLypcbkd1YXJkYSB0b2RvcyBsb3MgdmFsb3JlcyBlbWl0aWRvcyBwb3IgbnVlc3RybyBpbnRlcnZhbG8gaGFzdGEgcXVlIG5vc290cm9zIGRhbW9zIGNsaWMuXG5Fc3RvIGNhdXNhcmEgcXVlIGVsIEJvdG9uT2JzZXJ2YWRvciwgZW1pdGEgdW4gdmFsb3Igc2F0aXNmYWNpZW5kbyBhbCAnYnVmZmVyJ1xuQWhvcmEgcGFzYW5vcyB0b2RvcyBsb3MgdmFsb3JlcyByZWNvZ2lkb3MgZGVzZGUgbGEgdWx0aW1hIHZleiBjb21vIHVuICdhcnJheSdcbiovXG5jb25zdCBteUJ1ZmZlcmVkSW50ZXJ2YWwgPSBpbnRlcnZhbG8uYnVmZmVyKEJvdG9uT2JzZXJ2YWRvcik7XG5cblxuXG4vL1ByaW50IHZhbHVlcyB0byBjb25zb2xlXG4vKmNvbnN0IHN1YnNjcmliZSA9IG15QnVmZmVyZWRJbnRlcnZhbC5zdWJzY3JpYmUoXG4gIHZhbCA9PiB7XG4gICAgY29uc29sZS5jbGVhcigpO1xuICAgIGNvbnNvbGUubG9nKCduZXcgbm90aWZpY2F0aW9uIGlkcycsIHZhbCk7XG4gICAgdmFyIG51bWJlck9mTm90aWZpY2F0aW9ucyA9IHZhbC5sZW5ndGg7XG4gICAgY29uc29sZS5sb2coJ05ldyBOb3RpZmljYXRpb25zICcsIG51bWJlck9mTm90aWZpY2F0aW9ucylcbiAgfVxuKTsqL1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLyBFWEFNUExFIDJcbi8qXG4vL2VtaXQgKDEsMiwzLDQsNSlcbmNvbnN0IHNvdXJjZSA9IFJ4Lk9ic2VydmFibGUuZnJvbShbMSwyLDMsNCw1XSk7XG4vL2FkZCAxMCB0byBlYWNoIHZhbHVlXG5jb25zdCBleGFtcGxlID0gc291cmNlLm1hcCh2YWwgPT4gdmFsICsgMTApO1xuLy9vdXRwdXQ6IDExLDEyLDEzLDE0LDE1XG5jb25zdCBzdWJzY3JpYmUgPSBleGFtcGxlLnN1YnNjcmliZSh2YWwgPT4gY29uc29sZS5sb2codmFsKSk7XG5cbi8vZW1pdCAoe25hbWU6ICdKb2UnLCBhZ2U6IDMwfSwge25hbWU6ICdGcmFuaycsIGFnZTogMjB9LHtuYW1lOiAnUnlhbicsIGFnZTogNTB9KVxuY29uc3Qgc291cmNlVHdvID0gUnguT2JzZXJ2YWJsZS5mcm9tKFt7bmFtZTogJ0pvZScsIGFnZTogMzB9LCB7bmFtZTogJ0ZyYW5rJywgYWdlOiAyMH0se25hbWU6ICdSeWFuJywgYWdlOiA1MH1dKTtcbi8vZ3JhYiBlYWNoIHBlcnNvbnMgbmFtZVxuY29uc3QgZXhhbXBsZVR3byA9IHNvdXJjZVR3by5tYXAocGVyc29uID0+IHBlcnNvbi5uYW1lKTtcbi8vb3V0cHV0OiBcIkpvZVwiLFwiRnJhbmtcIixcIlJ5YW5cIlxuY29uc3Qgc3Vic2NyaWJlID0gZXhhbXBsZVR3by5zdWJzY3JpYmUodmFsID0+IGNvbnNvbGUubG9nKHZhbCkpOyovXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vRVhBTVBMRSAzXG4vL2VtaXQgaW1tZWRpYXRlbHksIHRoZW4gZXZlcnkgNXNcbmNvbnN0IHNvdXJjZTMgPSBSeC5PYnNlcnZhYmxlLnRpbWVyKDAsIDMwMDApO1xuY29uc3Qgc291cmNlID0gUnguT2JzZXJ2YWJsZS5mcm9tKFsxLDIsMyw0LDVdKTtcbmNvbnN0IHNvdXJjZTIgPSBzb3VyY2UubWFwKGRhdGEgPT4gZGF0YSArMTApO1xuLy9zd2l0Y2ggdG8gbmV3IGlubmVyIG9ic2VydmFibGUgd2hlbiBzb3VyY2UgZW1pdHMsIGVtaXQgaXRlbXMgdGhhdCBhcmUgZW1pdHRlZFxuY29uc3QgZXhhbXBsZSA9IHNvdXJjZS5zd2l0Y2hNYXAoKCkgPT4gUnguT2JzZXJ2YWJsZS5pbnRlcnZhbCg1MDApKTtcbi8vb3V0cHV0OiAwLDEsMiwzLDQsNSw2LDcsOCw5Li4uMCwxLDIsMyw0LDUsNiw3LDhcbmNvbnN0IHN1YnNjcmliZSA9IGV4YW1wbGUuc3Vic2NyaWJlKHZhbCA9PiBjb25zb2xlLmxvZyh2YWwpKTsiXX0=
</script>
<script id="jsbin-source-javascript" type="text/javascript">
//Crea un observable y además emite un valor cada segundo
const intervalo = Rx.Observable.interval(500);
//Create an observable that emits every time button is clicked
//Crea un observable que emite cada vez que el boton es clickeado
var boton = document.getElementById('clickButton');
const BotonObservador = Rx.Observable.fromEvent(boton, 'click');
/*
Guarda todos los valores emitidos por nuestro intervalo hasta que nosotros damos clic.
Esto causara que el BotonObservador, emita un valor satisfaciendo al 'buffer'
Ahora pasanos todos los valores recogidos desde la ultima vez como un 'array'
*/
const myBufferedInterval = intervalo.buffer(BotonObservador);
//Print values to console
/*const subscribe = myBufferedInterval.subscribe(
val => {
console.clear();
console.log('new notification ids', val);
var numberOfNotifications = val.length;
console.log('New Notifications ', numberOfNotifications)
}
);*/
////////////////////////////////////// EXAMPLE 2
/*
//emit (1,2,3,4,5)
const source = Rx.Observable.from([1,2,3,4,5]);
//add 10 to each value
const example = source.map(val => val + 10);
//output: 11,12,13,14,15
const subscribe = example.subscribe(val => console.log(val));
//emit ({name: 'Joe', age: 30}, {name: 'Frank', age: 20},{name: 'Ryan', age: 50})
const sourceTwo = Rx.Observable.from([{name: 'Joe', age: 30}, {name: 'Frank', age: 20},{name: 'Ryan', age: 50}]);
//grab each persons name
const exampleTwo = sourceTwo.map(person => person.name);
//output: "Joe","Frank","Ryan"
const subscribe = exampleTwo.subscribe(val => console.log(val));*/
///////////////////////////////////////////EXAMPLE 3
//emit immediately, then every 5s
const source3 = Rx.Observable.timer(0, 3000);
const source = Rx.Observable.from([1,2,3,4,5]);
const source2 = source.map(data => data +10);
//switch to new inner observable when source emits, emit items that are emitted
const example = source.switchMap(() => Rx.Observable.interval(500));
//output: 0,1,2,3,4,5,6,7,8,9...0,1,2,3,4,5,6,7,8
const subscribe = example.subscribe(val => console.log(val));</script></body>
</html>
"use strict";
//Crea un observable y además emite un valor cada segundo
var intervalo = Rx.Observable.interval(500);
//Create an observable that emits every time button is clicked
//Crea un observable que emite cada vez que el boton es clickeado
var boton = document.getElementById('clickButton');
var BotonObservador = Rx.Observable.fromEvent(boton, 'click');
/*
Guarda todos los valores emitidos por nuestro intervalo hasta que nosotros damos clic.
Esto causara que el BotonObservador, emita un valor satisfaciendo al 'buffer'
Ahora pasanos todos los valores recogidos desde la ultima vez como un 'array'
*/
var myBufferedInterval = intervalo.buffer(BotonObservador);
//Print values to console
/*const subscribe = myBufferedInterval.subscribe(
val => {
console.clear();
console.log('new notification ids', val);
var numberOfNotifications = val.length;
console.log('New Notifications ', numberOfNotifications)
}
);*/
////////////////////////////////////// EXAMPLE 2
/*
//emit (1,2,3,4,5)
const source = Rx.Observable.from([1,2,3,4,5]);
//add 10 to each value
const example = source.map(val => val + 10);
//output: 11,12,13,14,15
const subscribe = example.subscribe(val => console.log(val));
//emit ({name: 'Joe', age: 30}, {name: 'Frank', age: 20},{name: 'Ryan', age: 50})
const sourceTwo = Rx.Observable.from([{name: 'Joe', age: 30}, {name: 'Frank', age: 20},{name: 'Ryan', age: 50}]);
//grab each persons name
const exampleTwo = sourceTwo.map(person => person.name);
//output: "Joe","Frank","Ryan"
const subscribe = exampleTwo.subscribe(val => console.log(val));*/
///////////////////////////////////////////EXAMPLE 3
//emit immediately, then every 5s
var source3 = Rx.Observable.timer(0, 3000);
var source = Rx.Observable.from([1, 2, 3, 4, 5]);
var source2 = source.map(function (data) { return data + 10; });
//switch to new inner observable when source emits, emit items that are emitted
var example = source.switchMap(function () { return Rx.Observable.interval(500); });
//output: 0,1,2,3,4,5,6,7,8,9...0,1,2,3,4,5,6,7,8
var subscribe = example.subscribe(function (val) { return console.log(val); });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNiaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJqc2Jpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEseURBQXlEO0FBQ3pELElBQU0sU0FBUyxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBRTlDLDhEQUE4RDtBQUM5RCxpRUFBaUU7QUFDakUsSUFBSSxLQUFLLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsQ0FBQztBQUNuRCxJQUFNLGVBQWUsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFFaEU7Ozs7RUFJRTtBQUNGLElBQU0sa0JBQWtCLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztBQUk3RCx5QkFBeUI7QUFDekI7Ozs7Ozs7SUFPSTtBQUVKLGdEQUFnRDtBQUNoRDs7Ozs7Ozs7Ozs7OztrRUFha0U7QUFDbEUsb0RBQW9EO0FBQ3BELGlDQUFpQztBQUNqQyxJQUFNLE9BQU8sR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDN0MsSUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMvQyxJQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLFVBQUEsSUFBSSxJQUFJLE9BQUEsSUFBSSxHQUFFLEVBQUUsRUFBUixDQUFRLENBQUMsQ0FBQztBQUM3QywrRUFBK0U7QUFDL0UsSUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxjQUFNLE9BQUEsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQTNCLENBQTJCLENBQUMsQ0FBQztBQUNwRSxpREFBaUQ7QUFDakQsSUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxVQUFBLEdBQUcsSUFBSSxPQUFBLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQWhCLENBQWdCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vQ3JlYSB1biBvYnNlcnZhYmxlIHkgYWRlbcOhcyBlbWl0ZSB1biB2YWxvciBjYWRhIHNlZ3VuZG9cbmNvbnN0IGludGVydmFsbyA9IFJ4Lk9ic2VydmFibGUuaW50ZXJ2YWwoNTAwKTtcblxuLy9DcmVhdGUgYW4gb2JzZXJ2YWJsZSB0aGF0IGVtaXRzIGV2ZXJ5IHRpbWUgYnV0dG9uIGlzIGNsaWNrZWRcbi8vQ3JlYSB1biBvYnNlcnZhYmxlIHF1ZSBlbWl0ZSBjYWRhIHZleiBxdWUgZWwgYm90b24gZXMgY2xpY2tlYWRvXG52YXIgYm90b24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2xpY2tCdXR0b24nKTtcbmNvbnN0IEJvdG9uT2JzZXJ2YWRvciA9IFJ4Lk9ic2VydmFibGUuZnJvbUV2ZW50KGJvdG9uLCAnY2xpY2snKTtcblxuLypcbkd1YXJkYSB0b2RvcyBsb3MgdmFsb3JlcyBlbWl0aWRvcyBwb3IgbnVlc3RybyBpbnRlcnZhbG8gaGFzdGEgcXVlIG5vc290cm9zIGRhbW9zIGNsaWMuXG5Fc3RvIGNhdXNhcmEgcXVlIGVsIEJvdG9uT2JzZXJ2YWRvciwgZW1pdGEgdW4gdmFsb3Igc2F0aXNmYWNpZW5kbyBhbCAnYnVmZmVyJ1xuQWhvcmEgcGFzYW5vcyB0b2RvcyBsb3MgdmFsb3JlcyByZWNvZ2lkb3MgZGVzZGUgbGEgdWx0aW1hIHZleiBjb21vIHVuICdhcnJheSdcbiovXG5jb25zdCBteUJ1ZmZlcmVkSW50ZXJ2YWwgPSBpbnRlcnZhbG8uYnVmZmVyKEJvdG9uT2JzZXJ2YWRvcik7XG5cblxuXG4vL1ByaW50IHZhbHVlcyB0byBjb25zb2xlXG4vKmNvbnN0IHN1YnNjcmliZSA9IG15QnVmZmVyZWRJbnRlcnZhbC5zdWJzY3JpYmUoXG4gIHZhbCA9PiB7XG4gICAgY29uc29sZS5jbGVhcigpO1xuICAgIGNvbnNvbGUubG9nKCduZXcgbm90aWZpY2F0aW9uIGlkcycsIHZhbCk7XG4gICAgdmFyIG51bWJlck9mTm90aWZpY2F0aW9ucyA9IHZhbC5sZW5ndGg7XG4gICAgY29uc29sZS5sb2coJ05ldyBOb3RpZmljYXRpb25zICcsIG51bWJlck9mTm90aWZpY2F0aW9ucylcbiAgfVxuKTsqL1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLyBFWEFNUExFIDJcbi8qXG4vL2VtaXQgKDEsMiwzLDQsNSlcbmNvbnN0IHNvdXJjZSA9IFJ4Lk9ic2VydmFibGUuZnJvbShbMSwyLDMsNCw1XSk7XG4vL2FkZCAxMCB0byBlYWNoIHZhbHVlXG5jb25zdCBleGFtcGxlID0gc291cmNlLm1hcCh2YWwgPT4gdmFsICsgMTApO1xuLy9vdXRwdXQ6IDExLDEyLDEzLDE0LDE1XG5jb25zdCBzdWJzY3JpYmUgPSBleGFtcGxlLnN1YnNjcmliZSh2YWwgPT4gY29uc29sZS5sb2codmFsKSk7XG5cbi8vZW1pdCAoe25hbWU6ICdKb2UnLCBhZ2U6IDMwfSwge25hbWU6ICdGcmFuaycsIGFnZTogMjB9LHtuYW1lOiAnUnlhbicsIGFnZTogNTB9KVxuY29uc3Qgc291cmNlVHdvID0gUnguT2JzZXJ2YWJsZS5mcm9tKFt7bmFtZTogJ0pvZScsIGFnZTogMzB9LCB7bmFtZTogJ0ZyYW5rJywgYWdlOiAyMH0se25hbWU6ICdSeWFuJywgYWdlOiA1MH1dKTtcbi8vZ3JhYiBlYWNoIHBlcnNvbnMgbmFtZVxuY29uc3QgZXhhbXBsZVR3byA9IHNvdXJjZVR3by5tYXAocGVyc29uID0+IHBlcnNvbi5uYW1lKTtcbi8vb3V0cHV0OiBcIkpvZVwiLFwiRnJhbmtcIixcIlJ5YW5cIlxuY29uc3Qgc3Vic2NyaWJlID0gZXhhbXBsZVR3by5zdWJzY3JpYmUodmFsID0+IGNvbnNvbGUubG9nKHZhbCkpOyovXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vRVhBTVBMRSAzXG4vL2VtaXQgaW1tZWRpYXRlbHksIHRoZW4gZXZlcnkgNXNcbmNvbnN0IHNvdXJjZTMgPSBSeC5PYnNlcnZhYmxlLnRpbWVyKDAsIDMwMDApO1xuY29uc3Qgc291cmNlID0gUnguT2JzZXJ2YWJsZS5mcm9tKFsxLDIsMyw0LDVdKTtcbmNvbnN0IHNvdXJjZTIgPSBzb3VyY2UubWFwKGRhdGEgPT4gZGF0YSArMTApO1xuLy9zd2l0Y2ggdG8gbmV3IGlubmVyIG9ic2VydmFibGUgd2hlbiBzb3VyY2UgZW1pdHMsIGVtaXQgaXRlbXMgdGhhdCBhcmUgZW1pdHRlZFxuY29uc3QgZXhhbXBsZSA9IHNvdXJjZS5zd2l0Y2hNYXAoKCkgPT4gUnguT2JzZXJ2YWJsZS5pbnRlcnZhbCg1MDApKTtcbi8vb3V0cHV0OiAwLDEsMiwzLDQsNSw2LDcsOCw5Li4uMCwxLDIsMyw0LDUsNiw3LDhcbmNvbnN0IHN1YnNjcmliZSA9IGV4YW1wbGUuc3Vic2NyaWJlKHZhbCA9PiBjb25zb2xlLmxvZyh2YWwpKTsiXX0=
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment