Files
family-hub/README.md

14 KiB

IyBGYW1pbHkgSHViIC0gSG9tZSBNYW5hZ2VtZW50IFN5c3RlbQoKPiAqKiJTa3lsaWdodCBvbiBTdGVyb2lkcyIqKiAtIEEgY29tcHJlaGVuc2l2ZSBmYW1pbHkgbWFuYWdlbWVudCBzeXN0ZW0gZm9yIGNhbGVuZGFyLCBjaG9yZXMsIG1lbnUgcGxhbm5pbmcsIGFuZCBzaG9wcGluZyBsaXN0cwoKLS0tCgojIyDwn4+gIFByb2plY3QgT3ZlcnZpZXcKCkZhbWlseSBIdWIgaXMgYSBzdGFuZGFsb25lIGhvbWUgbWFuYWdlbWVudCBzeXN0ZW0gZGVzaWduZWQgZm9yIGEgZmFtaWx5IG9mIDUgKExvdSwgSmVzcywgV2lsbGlhbSwgWGFuZGVyLCBCZWxsYSkgdG8gbWFuYWdlIGRhaWx5IGhvdXNlaG9sZCB0YXNrcywgY29vcmRpbmF0ZSBzY2hlZHVsZXMsIHBsYW4gbWVhbHMsIGFuZCB0cmFjayBzaG9wcGluZyBuZWVkcy4KCiMjIyBLZXkgRmVhdHVyZXMKLSAqKvCfk4UgQ2FsZW5kYXIgTWFuYWdlbWVudCoqIC0gR29vZ2xlIENhbGVuZGFyIGludGVncmF0aW9uIGZvciBmYW1pbHkgc2NoZWR1bGluZwotICoq8J+nuSBDaG9yZSBUcmFja2luZyoqIC0gSW50ZWxsaWdlbnQgYXNzaWdubWVudCBhbmQgdHJhY2tpbmcgc3lzdGVtCi0gKirwn43977iPIE1lbnUgUGxhbm5pbmcqKiAtIE1lYWxpZSBpbnRlZ3JhdGlvbiBmb3IgbWVhbCBwbGFubmluZwotICoq8J+bkiBTaG9wcGluZyBMaXN0cyoqIC0gQXV0by1nZW5lcmF0ZWQgZnJvbSBtZWFsIHBsYW5zIHdpdGggbWFudWFsIGFkZGl0aW9ucwotICoq8J+PoSBIb21lIEFzc2lzdGFudCBJbnRlZ3JhdGlvbioqIC0gUHVzaCBub3RpZmljYXRpb25zIGFuZCBkYXNoYm9hcmQgY2FyZHMKLSAqKvCfkaUgTXVsdGktVXNlciBTeXN0ZW0qKiAtIEluZGl2aWR1YWwgcHJvZmlsZXMgd2l0aCByb2xlLWJhc2VkIHZpZXdzCgotLS0KCiMjIPCfkajigI3wn5Gp4oCN8J+Rp+KAjfCfkaYgRmFtaWx5IENvbmZpZ3VyYXRpb24KCiMjIyBNZW1iZXJzCi0gKipMb3UqKiAoUGFyZW50KQotICoqSmVzcyoqIChQYXJlbnQpIC0gTWFzdGVyIEJlZHJvb20gd2l0aCBFbnN1aXRlCi0gKipXaWxsaWFtKiogKENoaWxkKSAtIE93biBCZWRyb29tCi0gKipYYW5kZXIqKiAoQ2hpbGQpIC0gT3duIEJlZHJvb20KLSAqKkJlbGxhKiogKENoaWxkKSAtIE93biBCZWRyb29tCgojIyMgUGV0cwotICoqSGFycGVyKiogKERvZykgLSBGZWVkaW5nLCB3YXRlcmluZwotICoqQ2hpcHMqKiAoQ2F0KSAtIEZlZWRpbmcsIHdhdGVyaW5nLCBsaXR0ZXIgbWFpbnRlbmFuY2UKCiMjIyBIb21lIExheW91dAotIDUgQmVkcm9vbXMgKDEgTWFzdGVyIHdpdGggRW5zdWl0ZSkKLSAyIEJhdGhyb29tcwotIDEgVG9pbGV0Ci0gS2l0Y2hlbiAod2l0aCBkaXNod2FzaGVyKQotIERpbmluZyBSb29tCi0gTGF1bmRyeSAod2FzaGluZyBtYWNoaW5lICsgZHJ5ZXIpCgojIyMgV2Vla2x5IFNjaGVkdWxlIE5vdGVzCi0gKipCaW4gRGF5Kio6IFdlZG5lc2RheSBtb3JuaW5nIHBpY2t1cAotICoqUmVjeWNsaW5nL0dyZWVucyoqOiBBbHRlcm5hdGUgZm9ydG5pZ2h0cyB3aXRoIHJlZ3VsYXIgYmlucwoKLS0tCgojIyDwn5ug77iPIFRlY2ggU3RhY2sKCiMjIyBCYWNrZW5kCi0gKipGcmFtZXdvcmsqKjogRmFzdEFQSSAoUHl0aG9uIDMuMTErKQotICoqRGF0YWJhc2UqKjogU1FMaXRlIChwcm9kdWN0aW9uLXJlYWR5LCBjYW4gbWlncmF0ZSB0byBQb3N0Z3JlU1FMKQotICoqQXV0aGVudGljYXRpb24qKjogSldULWJhc2VkIHdpdGggYmNyeXB0IHBhc3N3b3JkIGhhc2hpbmcKLSAqKkFQSSBEb2N1bWVudGF0aW9uKio6IEF1dG9tYXRpYyBPcGVuQVBJL1N3YWdnZXIKCiMjIyBGcm9udGVuZAotICoqRnJhbWV3b3JrKio6IFJlYWN0IDE4IHdpdGggVHlwZVNjcmlwdAotICoqU3R5bGluZyoqOiBUYWlsd2luZCBDU1MKLSAqKlN0YXRlIE1hbmFnZW1lbnQqKjogUmVhY3QgQ29udGV4dCBBUEkgLyBadXN0YW5kCi0gKipCdWlsZCBUb29sKio6IFZpdGUKCiMjIyBJbnRlZ3JhdGlvbnMKLSAqKkdvb2dsZSBDYWxlbmRhciBBUEkqKiAtIE9BdXRoMiBhdXRoZW50aWNhdGlvbgotICoqTWVhbGllIEFQSSoqIC0gU2VsZi1ob3N0ZWQgcmVjaXBlL21lYWwgcGxhbm5pbmcKLSAqKkhvbWUgQXNzaXN0YW50KiogLSBSRVNUIEFQSSArIFdlYmhvb2tzIGZvciBub3RpZmljYXRpb25zCgojIyMgSW5mcmFzdHJ1Y3R1cmUKLSAqKkNvbnRhaW5lcml6YXRpb24qKjogRG9ja2VyICsgRG9ja2VyIENvbXBvc2UKLSAqKlJldmVyc2UgUHJveHkqKjogTmdpbnggKG9wdGlvbmFsKQotICoqRGF0YWJhc2UgTWlncmF0aW9ucyoqOiBBbGVtYmljCgotLS0KCiMjIPCfk4sgRGV2ZWxvcG1lbnQgUHJvZ3Jlc3MKCiMjIyDinIUgUGhhc2UgMTogRm91bmRhdGlvbiAmIENvcmUgU2V0dXAKLSBbeF0gQ3JlYXRlIEdpdCByZXBvc2l0b3J5Ci0gW3hdIFByb2plY3Qgc3RydWN0dXJlIHNjYWZmb2xkaW5nCi0gWyBdIEJhY2tlbmQgQVBJIGZyYW1ld29yayBzZXR1cAotIFsgXSBGcm9udGVuZCBSZWFjdCBhcHBsaWNhdGlvbiBzZXR1cAotIFsgXSBEYXRhYmFzZSBzY2hlbWEgZGVzaWduCi0gWyBdIERvY2tlciBjb250YWluZXJpemF0aW9uCi0gWyBdIFVzZXIgbWFuYWdlbWVudCBzeXN0ZW0KCiMjIyDirJwgUGhhc2UgMjogQ2hvcmVzIFN5c3RlbQotIFsgXSBEYXRhYmFzZSBtb2RlbHMgZm9yIGNob3JlcwotIFsgXSBDaG9yZSB0eXBlczogRGFpbHksIFdlZWtseSwgRm9ydG5pZ2h0bHksIEFkLWhvYwotIFsgXSBMb2NhdGlvbi1iYXNlZCBjYXRlZ29yaXphdGlvbgotIFsgXSBBc3NpZ25tZW50IGVuZ2luZSAoaW5kaXZpZHVhbC9zaGFyZWQvcm90YXRpbmcpCi0gWyBdIFJlY3VycmluZyBzY2hlZHVsZSBidWlsZGVyCi0gWyBdIENvbXBsZXRpb24gdHJhY2tpbmcgJiBoaXN0b3J5Ci0gWyBdIENob3JlIGRhc2hib2FyZCBVSQotIFsgXSBUb2RheSdzIHRhc2tzIHZpZXcKLSBbIF0gV2Vla2x5IG92ZXJ2aWV3IGNhbGVuZGFyCgojIyMg4qycIFBoYXNlIDM6IENhbGVuZGFyIEludGVncmF0aW9uCi0gWyBdIEdvb2dsZSBDYWxlbmRhciBPQXV0aDIgc2V0dXAKLSBbIF0gUmVhZC9kaXNwbGF5IGZhbWlseSBldmVudHMKLSBbIF0gQ3JlYXRlL2VkaXQgZXZlbnRzIGludGVyZmFjZQotIFsgXSBTeW5jIGNob3JlcyB0byBjYWxlbmRhciAob3B0aW9uYWwpCi0gWyBdIENhbGVuZGFyIHdpZGdldCBmb3IgZGFzaGJvYXJkCgojIyMg4qycIFBoYXNlIDQ6IE1lbnUgUGxhbm5pbmcgJiBTaG9wcGluZwotIFsgXSBNZWFsaWUgQVBJIGludGVncmF0aW9uCi0gWyBdIFdlZWtseSBtZWFsIHBsYW5uZXIgaW50ZXJmYWNlCi0gWyBdIFJlY2lwZSBicm93c2VyCi0gWyBdIEF1dG8tZ2VuZXJhdGUgc2hvcHBpbmcgbGlzdHMgZnJvbSBtZWFscwotIFsgXSBNYW51YWwgc2hvcHBpbmcgbGlzdCBtYW5hZ2VtZW50Ci0gWyBdIEl0ZW0gY2F0ZWdvcml6YXRpb24KLSBbIF0gQ2hlY2stb2ZmIGZ1bmN0aW9uYWxpdHkKLSBbIF0gTW9iaWxlLWZyaWVuZGx5IHNob3BwaW5nIHZpZXcKCiMjIyDirJwgUGhhc2UgNTogUG9saXNoICYgSW50ZWdyYXRpb24KLSBbIF0gVW5pZmllZCBkYXNoYm9hcmQgaG9tZSB2aWV3Ci0gWyBdIFdpZGdldC1zdHlsZSBsYXlvdXQgc3lzdGVtCi0gWyBdIFF1aWNrIHN0YXRzICYgaW5kaWNhdG9ycwotIFsgXSBIb21lIEFzc2lzdGFudCBSRVNUIEFQSSBlbmRwb2ludHMKLSBbIF0gUHVzaCBub3RpZmljYXRpb24gc3lzdGVtCiAgLSBbIF0gT3ZlcmR1ZSBjaG9yZXMKICAtIFsgXSBCaW4gZGF5IHJlbWluZGVycyAoVHVlc2RheSBuaWdodCkKICAtIFsgXSBQZXQgY2FyZSByZW1pbmRlcnMKLSBbIF0gSG9tZSBBc3Npc3RhbnQgZGFzaGJvYXJkIGNhcmQKLSBbIF0gUFdBIGNvbmZpZ3VyYXRpb24KLSBbIF0gTW9iaWxlIG9wdGltaXphdGlvbgotIFsgXSBPZmZsaW5lIGNhcGFiaWxpdHkKCi0tLQoKIyMg8J+TgSBQcm9qZWN0IFN0cnVjdHVyZQoKYGBgCmZhbWlseS1odWIvCuKUnOKUgOKUgCBiYWNrZW5kLyAgICAgICAgICAgICAgICAgIyBGYXN0QVBJIGJhY2tlbmQK4pSCICAg4pSc4pSA4pSAIGFwcC8K4pSCICAg4pSCICAg4pSc4pSA4pSAIGFwaS8gICAgICAgICAgICAjIEFQSSByb3V0ZSBoYW5kbGVycwrilIIgICDilIIgICDilIIgICDilJzilIDilIAgYXV0aC5weQrilIIgICDilIIgICDilIIgICDilJzilIDilIAgdXNlcnMucHkK4pSCICAg4pSCICAg4pSCICAg4pSc4pSA4pSAIGNob3Jlcy5weQrilIIgICDilIIgICDilIIgICDilJzilIDilIAgY2FsZW5kYXIucHkK4pSCICAg4pSCICAg4pSCICAg4pSc4pSA4pSAIG1lYWxzLnB5CuKUgiAgIOKUgiAgIOKUgiAgIOKUlOKUgOKUgCBzaG9wcGluZy5weQrilIIgICDilIIgICDilJzilIDilIAgY29yZS8gICAgICAgICAgICMgQ29yZSBjb25maWd1cmF0aW9uCuKUgiAgIOKUgiAgIOKUgiAgIOKUnOKUgOKUgCBjb25maWcucHkK4pSCICAg4pSCICAg4pSCICAg4pSc4pSA4pSAIHNlY3VyaXR5LnB5CuKUgiAgIOKUgiAgIOKUgiAgIOKUlOKUgOKUgCBkYXRhYmFzZS5weQrilIIgICDilIIgICDilJzilIDilIAgbW9kZWxzLyAgICAgICAgICMgRGF0YWJhc2UgbW9kZWxzCuKUgiAgIOKUgiAgIOKUgiAgIOKUnOKUgOKUgCB1c2VyLnB5CuKUgiAgIOKUgiAgIOKUgiAgIOKUnOKUgOKUgCBjaG9yZS5weQrilIIgICDilIIgICDilIIgICDilJzilIDilIAgbWVhbC5weQrilIIgICDilIIgICDilIIgICDilJTilIDilIAgc2hvcHBpbmcucHkK4pSCICAg4pSCICAg4pSc4pSA4pSAIHNjaGVtYXMvICAgICAgICAjIFB5ZGFudGljIHNjaGVtYXMK4pSCICAg4pSCICAg4pSU4pSA4pSAIHNlcnZpY2VzLyAgICAgICAjIEJ1c2luZXNzIGxvZ2ljCuKUgiAgIOKUnOKUgOKUgCB0ZXN0cy8K4pSCICAg4pSc4pSA4pSAIGFsZW1iaWMvICAgICAgICAgICAgIyBEYXRhYmFzZSBtaWdyYXRpb25zCuKUgiAgIOKUnOKUgOKUgCByZXF1aXJlbWVudHMudHh0CuKUgiAgIOKUlOKUgOKUgCBEb2NrZXJmaWxlCuKUggrilJzilIDilIAgZnJvbnRlbmQvICAgICAgICAgICAgICAgIyBSZWFjdCBmcm9udGVuZArilIIgICDilJzilIDilIAgc3JjLwrilIIgICDilIIgICDilJzilIDilIAgY29tcG9uZW50cy8gICAgIyBSZXVzYWJsZSBjb21wb25lbnRzCuKUgiAgIOKUgiAgIOKUnOKUgOKUgCBwYWdlcy8gICAgICAgICAjIFBhZ2UgY29tcG9uZW50cwrilIIgICDilIIgICDilJzilIDilIAgaG9va3MvICAgICAgICAgIyBDdXN0b20gUmVhY3QgaG9va3MK4pSCICAg4pSCICAg4pSc4pSA4pSAIHNlcnZpY2VzLyAgICAgICMgQVBJIHNlcnZpY2UgbGF5ZXIK4pSCICAg4pSCICAg4pSc4pSA4pSAIGNvbnRleHQvICAgICAgICMgUmVhY3QgY29udGV4dCBwcm92aWRlcnMK4pSCICAg4pSCICAg4pSc4pSA4pSAIHV0aWxzLyAgICAgICAgICMgSGVscGVyIGZ1bmN0aW9ucwrilIIgICDilIIgICDilJTilIDilIAgQXBwLnRzeArilIIgICDilJzilIDilIAgcHVibGljLwrilIIgICDilJzilIDilIAgcGFja2FnZS5qc29uCuKUgiAgIOKUnOKUgOKUgCB2aXRlLmNvbmZpZy50cwrilIIgICDilJTilIDilIAgRG9ja2VyZmlsZQrilIIK4pSc4pSA4pSAIGRvY2tlci1jb21wb3NlLnltbCAgICAgICMgQ29udGFpbmVyIG9yY2hlc3RyYXRpb24K4pSc4pSA4pSAIC5lbnYuZXhhbXBsZSAgICAgICAgICAgIyBFbnZpcm9ubWVudCB2YXJpYWJsZXMgdGVtcGxhdGUK4pSc4pSA4pSAIFBST0pFQ1RfUk9BRE1BUC5tZCAgICAgIyBUaGlzIGZpbGUK4pSU4pSA4pSAIFJFQURNRS5tZApgYGAKCi0tLQoKIyMg8J+XhO+4jyBEYXRhYmFzZSBTY2hlbWEKCiMjIyBDb3JlIFRhYmxlcwoKIyMjIyB1c2VycwotIGBpZGAgKFBLKQotIGB1c2VybmFtZWAgKHVuaXF1ZSkKLSBgZW1haWxgICh1bmlxdWUpCi0gYGhhc2hlZF9wYXNzd29yZGAKLSBgZnVsbF9uYW1lYAotIGBhdmF0YXJfY29sb3JgCi0gYGlzX2FkbWluYAotIGBjcmVhdGVkX2F0YAotIGB1cGRhdGVkX2F0YAoKIyMjIyBjaG9yZXMKLSBgaWRgIChQSykKLSBgdGl0bGVgCi0gYGRlc2NyaXB0aW9uYAotIGBsb2NhdGlvbmAgKGJlZHJvb20sIGJhdGhyb29tLCBraXRjaGVuLCBldGMuKQotIGBmcmVxdWVuY3lfdHlwZWAgKGRhaWx5LCB3ZWVrbHksIGZvcnRuaWdodGx5LCBhZGhvYykKLSBgZnJlcXVlbmN5X3ZhbHVlYCAoSlNPTjogZGF5cyBvZiB3ZWVrLCBpbnRlcnZhbCkKLSBgZXN0aW1hdGVkX21pbnV0ZXNgCi0gYGNyZWF0ZWRfYXRgCi0gYHVwZGF0ZWRfYXRgCgojIyMjIGNob3JlX2Fzc2lnbm1lbnRzCi0gYGlkYCAoUEspCi0gYGNob3JlX2lkYCAoRkspCi0gYHVzZXJfaWRgIChGSykKLSBgYXNzaWduZWRfZGF0ZWAKLSBgZHVlX2RhdGVgCi0gYGNvbXBsZXRlZF9hdGAKLSBgc3RhdHVzYCAocGVuZGluZywgY29tcGxldGVkLCBza2lwcGVkKQoKIyMjIyBtZWFsX3BsYW5zCi0gYGlkYCAoUEspCi0gYGRhdGVgCi0gYG1lYWxfdHlwZWAgKGJyZWFrZmFzdCwgbHVuY2gsIGRpbm5lciwgc25hY2spCi0gYHJlY2lwZV9pZGAgKGZyb20gTWVhbGllKQotIGByZWNpcGVfbmFtZWAKLSBgY3JlYXRlZF9ieWAgKEZLKQoKIyMjIyBzaG9wcGluZ19pdGVtcwotIGBpZGAgKFBLKQotIGBuYW1lYAotIGBjYXRlZ29yeWAKLSBgcXVhbnRpdHlgCi0gYHVuaXRgCi0gYGlzX2NoZWNrZWRgCi0gYGZyb21fbWVhbF9wbGFuYCAoYm9vbGVhbikKLSBgbWVhbF9wbGFuX2lkYCAoRkssIG51bGxhYmxlKQotIGBjcmVhdGVkX2F0YAoKIyMjIyBjYWxlbmRhcl9ldmVudHMKLSBgaWRgIChQSykKLSBgZ29vZ2xlX2V2ZW50X2lkYAotIGB0aXRsZWAKLSBgc3RhcnRfdGltZWAKLSBgZW5kX3RpbWVgCi0gYGFsbF9kYXlgCi0gYGRlc2NyaXB0aW9uYAotIGBsb2NhdGlvbmAKLSBgbGFzdF9zeW5jZWRgCgotLS0KCiMjIPCfmoAgR2V0dGluZyBTdGFydGVkCgojIyMgUHJlcmVxdWlzaXRlcwotIERvY2tlciAmIERvY2tlciBDb21wb3NlCi0gTm9kZS5qcyAxOCsgKGZvciBsb2NhbCBkZXZlbG9wbWVudCkKLSBQeXRob24gMy4xMSsgKGZvciBsb2NhbCBkZXZlbG9wbWVudCkKLSBHb29nbGUgQ2xvdWQgUHJvamVjdCAoZm9yIENhbGVuZGFyIEFQSSkKLSBNZWFsaWUgaW5zdGFuY2UgcnVubmluZwoKIyMjIFF1aWNrIFN0YXJ0CgoxLiAqKkNsb25lIHRoZSByZXBvc2l0b3J5KioKYGBgYmFzaApnaXQgY2xvbmUgaHR0cHM6Ly9naXRlYS5oaWRlYXdheWdhbWluZy5jb20uYXUvamVzc2lraXR0eS9mYW1pbHktaHViLmdpdApjZCBmYW1pbHktaHViCmBgYAoKMi4gKipDb25maWd1cmUgZW52aXJvbm1lbnQqKgpgYGBiYXNoCmNwIC5lbnYuZXhhbXBsZSAuZW52CiMgRWRpdCAuZW52IHdpdGggeW91ciBjb25maWd1cmF0aW9uCmBgYAoKMy4gKipTdGFydCB3aXRoIERvY2tlcioqCmBgYGJhc2gKZG9ja2VyLWNvbXBvc2UgdXAgLWQKYGBgCgo0LiAqKkFjY2VzcyB0aGUgYXBwbGljYXRpb24qKgotIEZyb250ZW5kOiBodHRwOi8vbG9jYWxob3N0OjMwMDAKLSBCYWNrZW5kIEFQSTogaHR0cDovL2xvY2FsaG9zdDo4MDAwCi0gQVBJIERvY3M6IGh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9kb2NzCgojIyMgRGV2ZWxvcG1lbnQgU2V0dXAKCioqQmFja2VuZCoqCmBgYGJhc2gKY2QgYmFja2VuZApweXRob24gLW0gdmVudiB2ZW52CnNvdXJjZSB2ZW52L2Jpbi9hY3RpdmF0ZSAgIyBvciBgdmVudlxTY3JpcHRzXGFjdGl2YXRlYCBvbiBXaW5kb3dzCnBpcCBpbnN0YWxsIC1yIHJlcXVpcmVtZW50cy50eHQKdXZpY29ybiBhcHAubWFpbjphcHAgLS1yZWxvYWQKYGBgCgoqKkZyb250ZW5kKioKYGBgYmFzaApjZCBmcm9udGVuZApucG0gaW5zdGFsbApucG0gcnVuIGRldgpgYGAKCi0tLQoKIyMg8J+TnSBBUEkgRW5kcG9pbnRzCgojIyMgQXV0aGVudGljYXRpb24KLSBgUE9TVCAvYXBpL2F1dGgvcmVnaXN0ZXJgIC0gQ3JlYXRlIG5ldyB1c2VyCi0gYFBPU1QgL2FwaS9hdXRoL2xvZ2luYCAtIExvZ2luIGFuZCBnZXQgSldUIHRva2VuCi0gYFBPU1QgL2FwaS9hdXRoL3JlZnJlc2hgIC0gUmVmcmVzaCBhY2Nlc3MgdG9rZW4KCiMjIyBVc2VycwotIGBHRVQgL2FwaS91c2Vyc2AgLSBMaXN0IGFsbCB1c2VycwotIGBHRVQgL2FwaS91c2Vycy97aWR9YCAtIEdldCB1c2VyIGRldGFpbHMKLSBgUFVUIC9hcGkvdXNlcnMve2lkfWAgLSBVcGRhdGUgdXNlcgotIGBERUxFVEUgL2FwaS91c2Vycy97aWR9YCAtIERlbGV0ZSB1c2VyCgojIyMgQ2hvcmVzCi0gYEdFVCAvYXBpL2Nob3Jlc2AgLSBMaXN0IGFsbCBjaG9yZXMKLSBgUE9TVCAvYXBpL2Nob3Jlc2AgLSBDcmVhdGUgY2hvcmUKLSBgR0VUIC9hcGkvY2hvcmVzL3tpZH1gIC0gR2V0IGNob3JlIGRldGFpbHMKLSBgUFVUIC9hcGkvY2hvcmVzL3tpZH1gIC0gVXBkYXRlIGNob3JlCi0gYERFTEVURSAvYXBpL2Nob3Jlcy97aWR9YCAtIERlbGV0ZSBjaG9yZQotIGBHRVQgL2FwaS9jaG9yZXMvYXNzaWdubWVudHMvdG9kYXlgIC0gR2V0IHRvZGF5J3MgYXNzaWdubWVudHMKLSBgUE9TVCAvYXBpL2Nob3Jlcy9hc3NpZ25tZW50cy97aWR9L2NvbXBsZXRlYCAtIE1hcmsgY29tcGxldGUKCiMjIyBDYWxlbmRhcgotIGBHRVQgL2FwaS9jYWxlbmRhci9ldmVudHNgIC0gR2V0IGNhbGVuZGFyIGV2ZW50cwotIGBQT1NUIC9hcGkvY2FsZW5kYXIvZXZlbnRzYCAtIENyZWF0ZSBldmVudAotIGBQVVQgL2FwaS9jYWxlbmRhci9ldmVudHMve2lkfWAgLSBVcGRhdGUgZXZlbnQKLSBgREVMRVRFIC9hcGkvY2FsZW5kYXIvZXZlbnRzL3tpZH1gIC0gRGVsZXRlIGV2ZW50Ci0gYFBPU1QgL2FwaS9jYWxlbmRhci9zeW5jYCAtIFN5bmMgd2l0aCBHb29nbGUgQ2FsZW5kYXIKCiMjIyBNZWFscwotIGBHRVQgL2FwaS9tZWFscy9wbGFuc2AgLSBHZXQgbWVhbCBwbGFucwotIGBQT1NUIC9hcGkvbWVhbHMvcGxhbnNgIC0gQ3JlYXRlIG1lYWwgcGxhbgotIGBHRVQgL2FwaS9tZWFscy9yZWNpcGVzYCAtIEJyb3dzZSBNZWFsaWUgcmVjaXBlcwotIGBQT1NUIC9hcGkvbWVhbHMvZ2VuZXJhdGUtc2hvcHBpbmctbGlzdGAgLSBHZW5lcmF0ZSBsaXN0CgojIyMgU2hvcHBpbmcKLSBgR0VUIC9hcGkvc2hvcHBpbmdgIC0gR2V0IHNob3BwaW5nIGxpc3QKLSBgUE9TVCAvYXBpL3Nob3BwaW5nYCAtIEFkZCBpdGVtCi0gYFBVVCAvYXBpL3Nob3BwaW5nL3tpZH1gIC0gVXBkYXRlIGl0ZW0KLSBgREVMRVRFIC9hcGkvc2hvcHBpbmcve2lkfWAgLSBSZW1vdmUgaXRlbQotIGBQT1NUIC9hcGkvc2hvcHBpbmcve2lkfS9jaGVja2AgLSBUb2dnbGUgY2hlY2tlZAoKLS0tCgojIyDwn5SUIEhvbWUgQXNzaXN0YW50IEludGVncmF0aW9uCgojIyMgQ29uZmlndXJhdGlvbgpBZGQgdG8gSG9tZSBBc3Npc3RhbnQgYGNvbmZpZ3VyYXRpb24ueWFtbGA6CmBgYHlhbWwKcmVzdF9jb21tYW5kOgogIGZhbWlseV9odWJfY29tcGxldGVfY2hvcmU6CiAgICB1cmw6ICJodHRwOi8vZmFtaWx5LWh1Yjo4MDAwL2FwaS9jaG9yZXMvYXNzaWdubWVudHMve3sgY2hvcmVfaWQgfX0vY29tcGxldGUiCiAgICBtZXRob2Q6IFBPU1QKICAgIGhlYWRlcnM6CiAgICAgIEF1dGhvcml6YXRpb246ICJCZWFyZXIge3sgc3RhdGVfYXR0cignc2Vuc29yLmZhbWlseV9odWJfdG9rZW4nLCAndG9rZW4nKSB9fSIKYGBgCgojIyMgTm90aWZpY2F0aW9ucwotIEJpbiByZW1pbmRlcjogVHVlc2RheSA4IFBNCi0gT3ZlcmR1ZSBjaG9yZXM6IERhaWx5IDcgUE0KLSBQZXQgY2FyZTogTW9ybmluZy9FdmVuaW5nCgojIyMgRGFzaGJvYXJkIENhcmQKKEN1c3RvbSBjYXJkIGNvbmZpZ3VyYXRpb24gd2lsbCBiZSBwcm92aWRlZCkKCi0tLQoKIyMg8J+OryBOZXh0IFN0ZXBzCgoqKkN1cnJlbnQgRm9jdXMqKjogUGhhc2UgMSAtIEZvdW5kYXRpb24gJiBDb3JlIFNldHVwCgoqKkltbWVkaWF0ZSBUYXNrcyoqOgoxLiBTZXQgdXAgRmFzdEFQSSBiYWNrZW5kIHN0cnVjdHVyZQoyLiBDcmVhdGUgZGF0YWJhc2UgbW9kZWxzIGFuZCBtaWdyYXRpb25zCjMuIEltcGxlbWVudCB1c2VyIGF1dGhlbnRpY2F0aW9uCjQuIEJ1aWxkIGJhc2ljIFJlYWN0IGZyb250ZW5kCjUuIENyZWF0ZSBEb2NrZXIgY29uZmlndXJhdGlvbgoKKipUbyBEaXNjdXNzKio6Ci0gUHJlZmVycmVkIGNvbG9yIHNjaGVtZSBmb3IgVUkKLSBDaG9yZSByb3RhdGlvbiBwcmVmZXJlbmNlcwotIE5vdGlmaWNhdGlvbiB0aW1pbmcgcHJlZmVyZW5jZXMKLSBNb2JpbGUgYXBwIHZzIFBXQSBkZWNpc2lvbgoKLS0tCgojIyDwn5OaIEFkZGl0aW9uYWwgUmVzb3VyY2VzCgotIFtGYXN0QVBJIERvY3VtZW50YXRpb25dKGh0dHBzOi8vZmFzdGFwaS50aWFuZ29sby5jb20vKQotIFtSZWFjdCBEb2N1bWVudGF0aW9uXShodHRwczovL3JlYWN0LmRldi8pCi0gW0dvb2dsZSBDYWxlbmRhciBBUEldKGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL2NhbGVuZGFyKQotIFtNZWFsaWUgQVBJIERvY3NdKGh0dHBzOi8vZG9jcy5tZWFsaWUuaW8vKQotIFtIb21lIEFzc2lzdGFudCBSRVNUIEFQSV0oaHR0cHM6Ly9kZXZlbG9wZXJzLmhvbWUtYXNzaXN0YW50LmlvL2RvY3MvYXBpL3Jlc3QvKQoKLS0tCgojIyDwn6SdIENvbnRyaWJ1dGluZwoKVGhpcyBpcyBhIGZhbWlseSBwcm9qZWN0LCBidXQgc3VnZ2VzdGlvbnMgYW5kIGltcHJvdmVtZW50cyBhcmUgd2VsY29tZSEKCi0tLQoKIyMg8J+ThCBMaWNlbnNlCgpQcml2YXRlIGZhbWlseSBwcm9qZWN0IC0gQWxsIHJpZ2h0cyByZXNlcnZlZAoKLS0tCgoqKkxhc3QgVXBkYXRlZCoqOiBEZWNlbWJlciAxOCwgMjAyNCAgCioqQ3VycmVudCBQaGFzZSoqOiBQaGFzZSAxIC0gRm91bmRhdGlvbiAmIENvcmUgU2V0dXAgIAoqKlN0YXR1cyoqOiDwn5+hIEluIERldmVsb3BtZW50Cg==