Created
October 3, 2018 19:09
-
-
Save ProMadGenius/0ea64d60a95b5bfb42c9a9ee72e927bf to your computer and use it in GitHub Desktop.
Buffer // source https://jsbin.com/nubipozite
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!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> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
"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