<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>155854</bug_id>
          
          <creation_ts>2016-03-24 14:45:31 -0700</creation_ts>
          <short_desc>ES6: Implement IsRegExp function and use where needed in String.prototype.* methods</short_desc>
          <delta_ts>2016-03-25 11:35:53 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Saam Barati">saam</reporter>
          <assigned_to name="Saam Barati">saam</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1177769</commentid>
    <comment_count>0</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-03-24 14:45:31 -0700</bug_when>
    <thetext>https://tc39.github.io/ecma262/#sec-isregexp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1177779</commentid>
    <comment_count>1</comment_count>
      <attachid>274858</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-03-24 15:19:02 -0700</bug_when>
    <thetext>Created attachment 274858
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1177781</commentid>
    <comment_count>2</comment_count>
      <attachid>274859</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-03-24 15:20:39 -0700</bug_when>
    <thetext>Created attachment 274859
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1177784</commentid>
    <comment_count>3</comment_count>
      <attachid>274859</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-03-24 15:23:23 -0700</bug_when>
    <thetext>Comment on attachment 274859
patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1177785</commentid>
    <comment_count>4</comment_count>
      <attachid>274860</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-03-24 15:24:04 -0700</bug_when>
    <thetext>Created attachment 274860
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1177788</commentid>
    <comment_count>5</comment_count>
      <attachid>274861</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-03-24 15:29:25 -0700</bug_when>
    <thetext>Created attachment 274861
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1177806</commentid>
    <comment_count>6</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-03-24 16:19:07 -0700</bug_when>
    <thetext>landed in:
http://trac.webkit.org/changeset/198652</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1178000</commentid>
    <comment_count>7</comment_count>
      <attachid>274861</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-03-25 10:22:41 -0700</bug_when>
    <thetext>Comment on attachment 274861
patch for landing

View in context: https://bugs.webkit.org/attachment.cgi?id=274861&amp;action=review

&gt; Source/JavaScriptCore/runtime/StringPrototype.cpp:1848


1) &quot;cannot&quot; is a single word, &quot;can not&quot; is incorrect. English is stranger than C++™.
2) We should figure out a consistent style for these error strings. A cleanup for the future.
3) Should this have a period or not?

&gt; Source/JavaScriptCore/runtime/StringPrototype.cpp:1884
&gt; +        return throwVMTypeError(exec, &quot;Argument to String.prototype.endsWith can not be a RegExp.&quot;);

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1178021</commentid>
    <comment_count>8</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-03-25 11:01:53 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Comment on attachment 274861 [details]
&gt; patch for landing
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=274861&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/StringPrototype.cpp:1848
&gt; 
&gt; 
&gt; 1) &quot;cannot&quot; is a single word, &quot;can not&quot; is incorrect. English is stranger
&gt; than C++™.
&gt; 2) We should figure out a consistent style for these error strings. A
&gt; cleanup for the future.
&gt; 3) Should this have a period or not?
&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/StringPrototype.cpp:1884
&gt; &gt; +        return throwVMTypeError(exec, &quot;Argument to String.prototype.endsWith can not be a RegExp.&quot;);
&gt; 
&gt; Ditto.

Thanks. I will update these.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1178036</commentid>
    <comment_count>9</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-03-25 11:35:53 -0700</bug_when>
    <thetext>Big to fix grammar

https://bugs.webkit.org/show_bug.cgi?id=155895</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>274858</attachid>
            <date>2016-03-24 15:19:02 -0700</date>
            <delta_ts>2016-03-24 15:20:39 -0700</delta_ts>
            <desc>patch</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>12363</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTk4NjQzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM2IEBA
CisyMDE2LTAzLTI0ICBTYWFtIGJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IEVTNjogSW1wbGVtZW50IElzUmVnRXhwIGZ1bmN0aW9uIGFuZCB1c2Ugd2hlcmUgbmVlZGVkIGlu
IFN0cmluZy5wcm90b3R5cGUuKiBtZXRob2RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNTU4NTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGlzIGEgc3RyYWlnaHQgZm9yd2FyZCBpbXBs
ZW1lbnRhdGlvbiBvZiBJc1JlZ0V4cAorICAgICAgICBpbiB0aGUgRVM2IHNwZWM6CisgICAgICAg
IGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWlzcmVnZXhwCisgICAgICAgIFdl
IG5vdyB1c2UgdGhpcyBJc1JlZ0V4cCBmdW5jdGlvbiBpbnNpZGUgU3RyaW5nLnByb3RvdHlwZS4o
c3RhcnRzV2l0aCB8IGVuZHNXaXRoIHwgaW5jbHVkZXMpCisgICAgICAgIGFzIGlzIGRpY3RhdGVk
IGJ5IHRoZSBzcGVjLgorCisgICAgICAgICogcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5oOgor
ICAgICAgICAoSlNDOjpSZWdFeHBDb25zdHJ1Y3Rvcjo6cmVjb3JkTWF0Y2gpOgorICAgICAgICAo
SlNDOjppc1JlZ0V4cCk6CisgICAgICAgICogcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwOgor
ICAgICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNTdGFydHNXaXRoKToKKyAgICAgICAgKEpTQzo6
c3RyaW5nUHJvdG9GdW5jRW5kc1dpdGgpOgorICAgICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNJ
bmNsdWRlcyk6CisgICAgICAgICogdGVzdHMvZXM2LnlhbWw6CisgICAgICAgICogdGVzdHMvZXM2
L3dlbGwta25vd25fc3ltYm9sc19TeW1ib2wubWF0Y2hfU3RyaW5nLnByb3RvdHlwZS5lbmRzV2l0
aC5qczogQWRkZWQuCisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKiB0ZXN0cy9lczYvd2VsbC1r
bm93bl9zeW1ib2xzX1N5bWJvbC5tYXRjaF9TdHJpbmcucHJvdG90eXBlLmluY2x1ZGVzLmpzOiBB
ZGRlZC4KKyAgICAgICAgKHRlc3QpOgorICAgICAgICAqIHRlc3RzL2VzNi93ZWxsLWtub3duX3N5
bWJvbHNfU3ltYm9sLm1hdGNoX1N0cmluZy5wcm90b3R5cGUuc3RhcnRzV2l0aC5qczogQWRkZWQu
CisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3Mvc3RyaW5nLXByb3RvdHlw
ZS1tZXRob2RzLWVuZHNXaXRoLXN0YXJ0c1dpdGgtaW5jbHVkZXMtY29ycmVjdG5lc3MuanM6IEFk
ZGVkLgorICAgICAgICAoYXNzZXJ0KToKKyAgICAgICAgKHRlc3QpOgorICAgICAgICAodGVzdC5n
ZXQgbGV0KToKKyAgICAgICAgKGdldCBsZXQpOgorCiAyMDE2LTAzLTI0ICBNaWNoYWVsIFNhYm9m
ZiAgPG1zYWJvZmZAYXBwbGUuY29tPgogCiAgICAgICAgIFtFUzZdIEFkZCBQcm94eSBiYXNlZCB0
ZXN0cyBmb3IgUmVnRXhwLnByb3RvdHlwZVtAQG1hdGNoXQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5oCShyZXZpc2lvbiAxOTg2
NDIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xMzEsNiArMTMxLDIyIEBAIEFMV0FZU19JTkxJTkUgdm9pZCBS
ZWdFeHBDb25zdHJ1Y3Rvcjo6cmUKICAgICBtX2NhY2hlZFJlc3VsdC5yZWNvcmQodm0sIHRoaXMs
IHJlZ0V4cCwgc3RyaW5nLCByZXN1bHQpOwogfQogCitBTFdBWVNfSU5MSU5FIGJvb2wgaXNSZWdF
eHAoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQoreworICAgIGlmICghdmFsdWUuaXNP
YmplY3QoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKKyAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QodmFsdWUpOworICAgIEpTVmFsdWUg
bWF0Y2hWYWx1ZSA9IG9iamVjdC0+Z2V0KGV4ZWMsIHZtLnByb3BlcnR5TmFtZXMtPm1hdGNoU3lt
Ym9sKTsKKyAgICBpZiAodm0uZXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICBpZiAoIW1hdGNoVmFsdWUuaXNVbmRlZmluZWQoKSkKKyAgICAgICAgcmV0dXJuIG1hdGNoVmFs
dWUudG9Cb29sZWFuKGV4ZWMpOworCisgICAgcmV0dXJuIG9iamVjdC0+aW5oZXJpdHMoUmVnRXhw
T2JqZWN0OjppbmZvKCkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIFJl
Z0V4cENvbnN0cnVjdG9yX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cmluZ1Byb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcAkocmV2aXNpb24gMTk4NjQyKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTg0MCw4ICsxODQwLDEyIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5n
UHJvdG8KICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIAog
ICAgIEpTVmFsdWUgYTAgPSBleGVjLT5hcmd1bWVudCgwKTsKLSAgICBpZiAoanNEeW5hbWljQ2Fz
dDxSZWdFeHBPYmplY3QqPihhMCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4
ZWMpOworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYm9vbCBpc1JlZ3VsYXJFeHByZXNz
aW9uID0gaXNSZWdFeHAoZXhlYywgYTApOworICAgIGlmICh2bS5leGNlcHRpb24oKSkKKyAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKCkpOworICAgIGlmIChpc1JlZ3VsYXJF
eHByZXNzaW9uKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCAiQXJndW1l
bnQgdG8gU3RyaW5nLnByb3RvdHlwZS5zdGFydHNXaXRoIGNhbiBub3QgYmUgYSBSZWdFeHAuIik7
CiAKICAgICBTdHJpbmcgc2VhcmNoU3RyaW5nID0gYTAudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4
ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKQEAgLTE4NzIsOCArMTg3NiwxMiBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvCiAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAKICAgICBKU1ZhbHVlIGEwID0gZXhl
Yy0+YXJndW1lbnQoMCk7Ci0gICAgaWYgKGpzRHluYW1pY0Nhc3Q8UmVnRXhwT2JqZWN0Kj4oYTAp
KQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOworICAgIGJvb2wgaXNSZWd1bGFyRXhwcmVzc2lvbiA9IGlzUmVnRXhwKGV4ZWMs
IGEwKTsKKyAgICBpZiAodm0uZXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoSlNWYWx1ZSgpKTsKKyAgICBpZiAoaXNSZWd1bGFyRXhwcmVzc2lvbikKKyAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgIkFyZ3VtZW50IHRvIFN0cmluZy5wcm90b3R5
cGUuZW5kc1dpdGggY2FuIG5vdCBiZSBhIFJlZ0V4cC4iKTsKIAogICAgIFN0cmluZyBzZWFyY2hT
dHJpbmcgPSBhMC50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhh
ZEV4Y2VwdGlvbigpKQpAQCAtMTkwNSw4ICsxOTEzLDEyIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgc3RyaW5nUHJvdG8KICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKIAogICAgIEpTVmFsdWUgYTAgPSBleGVjLT5hcmd1bWVudCgwKTsKLSAgICBp
ZiAoanNEeW5hbWljQ2FzdDxSZWdFeHBPYmplY3QqPihhMCkpCi0gICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMpOworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYm9vbCBp
c1JlZ3VsYXJFeHByZXNzaW9uID0gaXNSZWdFeHAoZXhlYywgYTApOworICAgIGlmICh2bS5leGNl
cHRpb24oKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKCkpOworICAg
IGlmIChpc1JlZ3VsYXJFeHByZXNzaW9uKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihleGVjLCAiQXJndW1lbnQgdG8gU3RyaW5nLnByb3RvdHlwZS5pbmNsdWRlcyBjYW4gbm90IGJl
IGEgUmVnRXhwLiIpOwogCiAgICAgU3RyaW5nIHNlYXJjaFN0cmluZyA9IGEwLnRvU3RyaW5nKGV4
ZWMpLT52YWx1ZShleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2LnlhbWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi55YW1sCShyZXZpc2lvbiAxOTg2NDIpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2LnlhbWwJKHdvcmtpbmcgY29weSkKQEAgLTEyMjAs
NiArMTIyMCwxMiBAQAogICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi93ZWxsLWtu
b3duX3N5bWJvbHNfU3ltYm9sLnRvU3RyaW5nVGFnX21pc2MuX2J1aWx0LWlucy5qcwogICBjbWQ6
IHJ1bkVTNiA6bm9ybWFsCistIHBhdGg6IGVzNi93ZWxsLWtub3duX3N5bWJvbHNfU3ltYm9sLm1h
dGNoX1N0cmluZy5wcm90b3R5cGUuc3RhcnRzV2l0aC5qcworICBjbWQ6IHJ1bkVTNiA6bm9ybWFs
CistIHBhdGg6IGVzNi93ZWxsLWtub3duX3N5bWJvbHNfU3ltYm9sLm1hdGNoX1N0cmluZy5wcm90
b3R5cGUuZW5kc1dpdGguanMKKyAgY21kOiBydW5FUzYgOm5vcm1hbAorLSBwYXRoOiBlczYvd2Vs
bC1rbm93bl9zeW1ib2xzX1N5bWJvbC5tYXRjaF9TdHJpbmcucHJvdG90eXBlLmluY2x1ZGVzLmpz
CisgIGNtZDogcnVuRVM2IDpub3JtYWwKICMgTGF0ZS1zdGFnZSBwcm9wb3NhbHMgZm9yIGEgZnV0
dXJlIEVDTUFTY3JpcHQgc3RhbmRhcmQKICMgRklYTUU6IG1vdmUgdGhlc2UgdG8gYSBuZXcgZGly
ZWN0b3J5PwogLSBwYXRoOiBlczYvT2JqZWN0X3N0YXRpY19tZXRob2RzX09iamVjdC5nZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3JzLmpzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
ZXM2L3dlbGwta25vd25fc3ltYm9sc19TeW1ib2wubWF0Y2hfU3RyaW5nLnByb3RvdHlwZS5lbmRz
V2l0aC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2L3dl
bGwta25vd25fc3ltYm9sc19TeW1ib2wubWF0Y2hfU3RyaW5nLnByb3RvdHlwZS5lbmRzV2l0aC5q
cwkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYvd2VsbC1r
bm93bl9zeW1ib2xzX1N5bWJvbC5tYXRjaF9TdHJpbmcucHJvdG90eXBlLmVuZHNXaXRoLmpzCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTIgQEAKK2Z1bmN0aW9uIHRlc3QoKSB7CisgICAgdmFy
IHJlID0gLy4vOworICAgIHRyeSB7CisgICAgICAgICcvLi8nLmVuZHNXaXRoKHJlKTsKKyAgICB9
IGNhdGNoKGUpeworICAgICAgICByZVtTeW1ib2wubWF0Y2hdID0gZmFsc2U7CisgICAgICAgIHJl
dHVybiAnLy4vJy5lbmRzV2l0aChyZSk7CisgICAgfQorfQorCitpZiAoIXRlc3QoKSkKKyAgICB0
aHJvdyBuZXcgRXJyb3IoIlRlc3QgZmFpbGVkIik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvZXM2L3dlbGwta25vd25fc3ltYm9sc19TeW1ib2wubWF0Y2hfU3RyaW5nLnByb3Rv
dHlwZS5pbmNsdWRlcy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvZXM2L3dlbGwta25vd25fc3ltYm9sc19TeW1ib2wubWF0Y2hfU3RyaW5nLnByb3RvdHlwZS5p
bmNsdWRlcy5qcwkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9l
czYvd2VsbC1rbm93bl9zeW1ib2xzX1N5bWJvbC5tYXRjaF9TdHJpbmcucHJvdG90eXBlLmluY2x1
ZGVzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTIgQEAKK2Z1bmN0aW9uIHRlc3QoKSB7
CisgICAgdmFyIHJlID0gLy4vOworICAgIHRyeSB7CisgICAgICAgICcvLi8nLmluY2x1ZGVzKHJl
KTsKKyAgICB9IGNhdGNoKGUpeworICAgICAgICByZVtTeW1ib2wubWF0Y2hdID0gZmFsc2U7Cisg
ICAgICAgIHJldHVybiAnLy4vJy5pbmNsdWRlcyhyZSk7CisgICAgfQorfQorCitpZiAoIXRlc3Qo
KSkKKyAgICB0aHJvdyBuZXcgRXJyb3IoIlRlc3QgZmFpbGVkIik7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvdGVzdHMvZXM2L3dlbGwta25vd25fc3ltYm9sc19TeW1ib2wubWF0Y2hfU3Ry
aW5nLnByb3RvdHlwZS5zdGFydHNXaXRoLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90ZXN0cy9lczYvd2VsbC1rbm93bl9zeW1ib2xzX1N5bWJvbC5tYXRjaF9TdHJpbmcu
cHJvdG90eXBlLnN0YXJ0c1dpdGguanMJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvZXM2L3dlbGwta25vd25fc3ltYm9sc19TeW1ib2wubWF0Y2hfU3RyaW5nLnBy
b3RvdHlwZS5zdGFydHNXaXRoLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTIgQEAKK2Z1
bmN0aW9uIHRlc3QoKSB7CisgICAgdmFyIHJlID0gLy4vOworICAgIHRyeSB7CisgICAgICAgICcv
Li8nLnN0YXJ0c1dpdGgocmUpOworICAgIH0gY2F0Y2goZSl7CisgICAgICAgIHJlW1N5bWJvbC5t
YXRjaF0gPSBmYWxzZTsKKyAgICAgICAgcmV0dXJuICcvLi8nLnN0YXJ0c1dpdGgocmUpOworICAg
IH0KK30KKworaWYgKCF0ZXN0KCkpCisgICAgdGhyb3cgbmV3IEVycm9yKCJUZXN0IGZhaWxlZCIp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9zdHJpbmctcHJvdG90
eXBlLW1ldGhvZHMtZW5kc1dpdGgtc3RhcnRzV2l0aC1pbmNsdWRlcy1jb3JyZWN0bmVzcy5qcwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3N0cmluZy1w
cm90b3R5cGUtbWV0aG9kcy1lbmRzV2l0aC1zdGFydHNXaXRoLWluY2x1ZGVzLWNvcnJlY3RuZXNz
LmpzCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9z
dHJpbmctcHJvdG90eXBlLW1ldGhvZHMtZW5kc1dpdGgtc3RhcnRzV2l0aC1pbmNsdWRlcy1jb3Jy
ZWN0bmVzcy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE4MCBAQAorZnVuY3Rpb24gYXNz
ZXJ0KGIpIHsKKyAgICBpZiAoIWIpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiQmFkIGFzc2Vy
dGlvbiEiKTsKK30KKworZnVuY3Rpb24gdGVzdChmKSB7CisgICAgZm9yIChsZXQgaSA9IDA7IGkg
PCA1MDA7IGkrKykKKyAgICAgICAgZigpOworfQorCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIGxl
dCBmb28gPSAiaGVsbG8iOworICAgIGxldCB0aHJldyA9IGZhbHNlOworICAgIHRyeSB7CisgICAg
ICAgIGZvby5lbmRzV2l0aCgvZm9vLyk7CisgICAgfSBjYXRjaChlKSB7CisgICAgICAgIGFzc2Vy
dChlLnRvU3RyaW5nKCkgPT09ICJUeXBlRXJyb3I6IEFyZ3VtZW50IHRvIFN0cmluZy5wcm90b3R5
cGUuZW5kc1dpdGggY2FuIG5vdCBiZSBhIFJlZ0V4cC4iKTsKKyAgICAgICAgdGhyZXcgPSB0cnVl
OworICAgIH0KKyAgICBhc3NlcnQodGhyZXcpOworfSk7CisKK3Rlc3QoZnVuY3Rpb24oKSB7Cisg
ICAgbGV0IGZvbyA9ICJoZWxsbyI7CisgICAgbGV0IHRocmV3ID0gZmFsc2U7CisgICAgdHJ5IHsK
KyAgICAgICAgZm9vLnN0YXJ0c1dpdGgoL2Zvby8pOworICAgIH0gY2F0Y2goZSkgeworICAgICAg
ICBhc3NlcnQoZS50b1N0cmluZygpID09PSAiVHlwZUVycm9yOiBBcmd1bWVudCB0byBTdHJpbmcu
cHJvdG90eXBlLnN0YXJ0c1dpdGggY2FuIG5vdCBiZSBhIFJlZ0V4cC4iKTsKKyAgICAgICAgdGhy
ZXcgPSB0cnVlOworICAgIH0KKyAgICBhc3NlcnQodGhyZXcpOworfSk7CisKK3Rlc3QoZnVuY3Rp
b24oKSB7CisgICAgbGV0IGZvbyA9ICJoZWxsbyI7CisgICAgbGV0IHRocmV3ID0gZmFsc2U7Cisg
ICAgdHJ5IHsKKyAgICAgICAgZm9vLmluY2x1ZGVzKC9mb28vKTsKKyAgICB9IGNhdGNoKGUpIHsK
KyAgICAgICAgYXNzZXJ0KGUudG9TdHJpbmcoKSA9PT0gIlR5cGVFcnJvcjogQXJndW1lbnQgdG8g
U3RyaW5nLnByb3RvdHlwZS5pbmNsdWRlcyBjYW4gbm90IGJlIGEgUmVnRXhwLiIpOworICAgICAg
ICB0aHJldyA9IHRydWU7CisgICAgfQorICAgIGFzc2VydCh0aHJldyk7Cit9KTsKKwordGVzdChm
dW5jdGlvbigpIHsKKyAgICBsZXQgcHJvcHMgPSBbXTsKKyAgICBsZXQgcHJveHkgPSBuZXcgUHJv
eHkoL2Zvby8sIHsKKyAgICAgICAgZ2V0KHRoZVRhcmdldCwgcHJvcCkgeworICAgICAgICAgICAg
cHJvcHMucHVzaChwcm9wKTsKKyAgICAgICAgICAgIHJldHVybiB0aGVUYXJnZXRbcHJvcF07Cisg
ICAgICAgIH0KKyAgICB9KTsKKworICAgIGxldCBmb28gPSAiaGVsbG8iOworICAgIGxldCB0aHJl
dyA9IGZhbHNlOworICAgIHRyeSB7CisgICAgICAgIGZvby5lbmRzV2l0aChwcm94eSk7CisgICAg
fSBjYXRjaChlKSB7CisgICAgICAgIGFzc2VydChlLnRvU3RyaW5nKCkgPT09ICJUeXBlRXJyb3I6
IEFyZ3VtZW50IHRvIFN0cmluZy5wcm90b3R5cGUuZW5kc1dpdGggY2FuIG5vdCBiZSBhIFJlZ0V4
cC4iKTsKKyAgICAgICAgdGhyZXcgPSB0cnVlOworICAgIH0KKyAgICBhc3NlcnQodGhyZXcpOwor
ICAgIGFzc2VydChwcm9wcy5sZW5ndGggPT09IDEpOworICAgIGFzc2VydChwcm9wc1swXSA9PT0g
U3ltYm9sLm1hdGNoKTsKK30pOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIGxldCBwcm9wcyA9
IFtdOworICAgIGxldCBwcm94eSA9IG5ldyBQcm94eSgvZm9vLywgeworICAgICAgICBnZXQodGhl
VGFyZ2V0LCBwcm9wKSB7CisgICAgICAgICAgICBwcm9wcy5wdXNoKHByb3ApOworICAgICAgICAg
ICAgcmV0dXJuIHRoZVRhcmdldFtwcm9wXTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgbGV0
IGZvbyA9ICJoZWxsbyI7CisgICAgbGV0IHRocmV3ID0gZmFsc2U7CisgICAgdHJ5IHsKKyAgICAg
ICAgZm9vLnN0YXJ0c1dpdGgocHJveHkpOworICAgIH0gY2F0Y2goZSkgeworICAgICAgICBhc3Nl
cnQoZS50b1N0cmluZygpID09PSAiVHlwZUVycm9yOiBBcmd1bWVudCB0byBTdHJpbmcucHJvdG90
eXBlLnN0YXJ0c1dpdGggY2FuIG5vdCBiZSBhIFJlZ0V4cC4iKTsKKyAgICAgICAgdGhyZXcgPSB0
cnVlOworICAgIH0KKyAgICBhc3NlcnQodGhyZXcpOworICAgIGFzc2VydChwcm9wcy5sZW5ndGgg
PT09IDEpOworICAgIGFzc2VydChwcm9wc1swXSA9PT0gU3ltYm9sLm1hdGNoKTsKK30pOworCit0
ZXN0KGZ1bmN0aW9uKCkgeworICAgIGxldCBwcm9wcyA9IFtdOworICAgIGxldCBwcm94eSA9IG5l
dyBQcm94eSgvZm9vLywgeworICAgICAgICBnZXQodGhlVGFyZ2V0LCBwcm9wKSB7CisgICAgICAg
ICAgICBwcm9wcy5wdXNoKHByb3ApOworICAgICAgICAgICAgcmV0dXJuIHRoZVRhcmdldFtwcm9w
XTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgbGV0IGZvbyA9ICJoZWxsbyI7CisgICAgbGV0
IHRocmV3ID0gZmFsc2U7CisgICAgdHJ5IHsKKyAgICAgICAgZm9vLmluY2x1ZGVzKHByb3h5KTsK
KyAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgYXNzZXJ0KGUudG9TdHJpbmcoKSA9PT0gIlR5cGVF
cnJvcjogQXJndW1lbnQgdG8gU3RyaW5nLnByb3RvdHlwZS5pbmNsdWRlcyBjYW4gbm90IGJlIGEg
UmVnRXhwLiIpOworICAgICAgICB0aHJldyA9IHRydWU7CisgICAgfQorICAgIGFzc2VydCh0aHJl
dyk7CisgICAgYXNzZXJ0KHByb3BzLmxlbmd0aCA9PT0gMSk7CisgICAgYXNzZXJ0KHByb3BzWzBd
ID09PSBTeW1ib2wubWF0Y2gpOworfSk7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgbGV0IHBy
b3BzID0gW107CisgICAgbGV0IHByb3h5ID0gbmV3IFByb3h5KC9mb28vLCB7CisgICAgICAgIGdl
dCh0aGVUYXJnZXQsIHByb3ApIHsKKyAgICAgICAgICAgIHByb3BzLnB1c2gocHJvcCk7CisgICAg
ICAgICAgICBpZiAocHJvcCA9PT0gU3ltYm9sLm1hdGNoKQorICAgICAgICAgICAgICAgIHJldHVy
biB1bmRlZmluZWQ7CisgICAgICAgICAgICByZXR1cm4gdGhlVGFyZ2V0W3Byb3BdOworICAgICAg
ICB9CisgICAgfSk7CisKKyAgICBsZXQgZm9vID0gIi9mb28vIjsKKyAgICBsZXQgdGhyZXcgPSBm
YWxzZTsKKyAgICBsZXQgcmVzdWx0ID0gZm9vLmluY2x1ZGVzKHByb3h5KTsKKyAgICBhc3NlcnQo
cmVzdWx0KTsKKyAgICBhc3NlcnQocHJvcHMubGVuZ3RoID09PSA1KTsKKyAgICBhc3NlcnQocHJv
cHNbMF0gPT09IFN5bWJvbC5tYXRjaCk7CisgICAgYXNzZXJ0KHByb3BzWzFdID09PSBTeW1ib2wu
dG9QcmltaXRpdmUpOworICAgIGFzc2VydChwcm9wc1syXSA9PT0gInRvU3RyaW5nIik7CisgICAg
YXNzZXJ0KHByb3BzWzNdID09PSAic291cmNlIik7CisgICAgYXNzZXJ0KHByb3BzWzRdID09PSAi
ZmxhZ3MiKTsKK30pOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIGxldCBwcm9wcyA9IFtdOwor
ICAgIGxldCBwcm94eSA9IG5ldyBQcm94eSgvZm9vLywgeworICAgICAgICBnZXQodGhlVGFyZ2V0
LCBwcm9wKSB7CisgICAgICAgICAgICBwcm9wcy5wdXNoKHByb3ApOworICAgICAgICAgICAgaWYg
KHByb3AgPT09IFN5bWJvbC5tYXRjaCkKKyAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVk
OworICAgICAgICAgICAgcmV0dXJuIHRoZVRhcmdldFtwcm9wXTsKKyAgICAgICAgfQorICAgIH0p
OworCisgICAgbGV0IGZvbyA9ICIvZm9vLyI7CisgICAgbGV0IHRocmV3ID0gZmFsc2U7CisgICAg
bGV0IHJlc3VsdCA9IGZvby5zdGFydHNXaXRoKHByb3h5KTsKKyAgICBhc3NlcnQocmVzdWx0KTsK
KyAgICBhc3NlcnQocHJvcHMubGVuZ3RoID09PSA1KTsKKyAgICBhc3NlcnQocHJvcHNbMF0gPT09
IFN5bWJvbC5tYXRjaCk7CisgICAgYXNzZXJ0KHByb3BzWzFdID09PSBTeW1ib2wudG9QcmltaXRp
dmUpOworICAgIGFzc2VydChwcm9wc1syXSA9PT0gInRvU3RyaW5nIik7CisgICAgYXNzZXJ0KHBy
b3BzWzNdID09PSAic291cmNlIik7CisgICAgYXNzZXJ0KHByb3BzWzRdID09PSAiZmxhZ3MiKTsK
K30pOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIGxldCBwcm9wcyA9IFtdOworICAgIGxldCBw
cm94eSA9IG5ldyBQcm94eSgvZm9vLywgeworICAgICAgICBnZXQodGhlVGFyZ2V0LCBwcm9wKSB7
CisgICAgICAgICAgICBwcm9wcy5wdXNoKHByb3ApOworICAgICAgICAgICAgaWYgKHByb3AgPT09
IFN5bWJvbC5tYXRjaCkKKyAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkOworICAgICAg
ICAgICAgcmV0dXJuIHRoZVRhcmdldFtwcm9wXTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAg
bGV0IGZvbyA9ICIvZm9vLyI7CisgICAgbGV0IHRocmV3ID0gZmFsc2U7CisgICAgbGV0IHJlc3Vs
dCA9IGZvby5lbmRzV2l0aChwcm94eSk7CisgICAgYXNzZXJ0KHJlc3VsdCk7CisgICAgYXNzZXJ0
KHByb3BzLmxlbmd0aCA9PT0gNSk7CisgICAgYXNzZXJ0KHByb3BzWzBdID09PSBTeW1ib2wubWF0
Y2gpOworICAgIGFzc2VydChwcm9wc1sxXSA9PT0gU3ltYm9sLnRvUHJpbWl0aXZlKTsKKyAgICBh
c3NlcnQocHJvcHNbMl0gPT09ICJ0b1N0cmluZyIpOworICAgIGFzc2VydChwcm9wc1szXSA9PT0g
InNvdXJjZSIpOworICAgIGFzc2VydChwcm9wc1s0XSA9PT0gImZsYWdzIik7Cit9KTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>274859</attachid>
            <date>2016-03-24 15:20:39 -0700</date>
            <delta_ts>2016-03-24 15:24:04 -0700</delta_ts>
            <desc>patch</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>12357</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTk4NjQzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM2IEBA
CisyMDE2LTAzLTI0ICBTYWFtIGJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IEVTNjogSW1wbGVtZW50IElzUmVnRXhwIGZ1bmN0aW9uIGFuZCB1c2Ugd2hlcmUgbmVlZGVkIGlu
IFN0cmluZy5wcm90b3R5cGUuKiBtZXRob2RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNTU4NTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGlzIGEgc3RyYWlnaHQgZm9yd2FyZCBpbXBs
ZW1lbnRhdGlvbiBvZiBJc1JlZ0V4cAorICAgICAgICBpbiB0aGUgRVM2IHNwZWM6CisgICAgICAg
IGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWlzcmVnZXhwCisgICAgICAgIFdl
IG5vdyB1c2UgdGhpcyBJc1JlZ0V4cCBmdW5jdGlvbiBpbnNpZGUgU3RyaW5nLnByb3RvdHlwZS4o
c3RhcnRzV2l0aCB8IGVuZHNXaXRoIHwgaW5jbHVkZXMpCisgICAgICAgIGFzIGlzIGRpY3RhdGVk
IGJ5IHRoZSBzcGVjLgorCisgICAgICAgICogcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5oOgor
ICAgICAgICAoSlNDOjpSZWdFeHBDb25zdHJ1Y3Rvcjo6cmVjb3JkTWF0Y2gpOgorICAgICAgICAo
SlNDOjppc1JlZ0V4cCk6CisgICAgICAgICogcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwOgor
ICAgICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNTdGFydHNXaXRoKToKKyAgICAgICAgKEpTQzo6
c3RyaW5nUHJvdG9GdW5jRW5kc1dpdGgpOgorICAgICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNJ
bmNsdWRlcyk6CisgICAgICAgICogdGVzdHMvZXM2LnlhbWw6CisgICAgICAgICogdGVzdHMvZXM2
L3dlbGwta25vd25fc3ltYm9sc19TeW1ib2wubWF0Y2hfU3RyaW5nLnByb3RvdHlwZS5lbmRzV2l0
aC5qczogQWRkZWQuCisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKiB0ZXN0cy9lczYvd2VsbC1r
bm93bl9zeW1ib2xzX1N5bWJvbC5tYXRjaF9TdHJpbmcucHJvdG90eXBlLmluY2x1ZGVzLmpzOiBB
ZGRlZC4KKyAgICAgICAgKHRlc3QpOgorICAgICAgICAqIHRlc3RzL2VzNi93ZWxsLWtub3duX3N5
bWJvbHNfU3ltYm9sLm1hdGNoX1N0cmluZy5wcm90b3R5cGUuc3RhcnRzV2l0aC5qczogQWRkZWQu
CisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3Mvc3RyaW5nLXByb3RvdHlw
ZS1tZXRob2RzLWVuZHNXaXRoLXN0YXJ0c1dpdGgtaW5jbHVkZXMtY29ycmVjdG5lc3MuanM6IEFk
ZGVkLgorICAgICAgICAoYXNzZXJ0KToKKyAgICAgICAgKHRlc3QpOgorICAgICAgICAodGVzdC5n
ZXQgbGV0KToKKyAgICAgICAgKGdldCBsZXQpOgorCiAyMDE2LTAzLTI0ICBNaWNoYWVsIFNhYm9m
ZiAgPG1zYWJvZmZAYXBwbGUuY29tPgogCiAgICAgICAgIFtFUzZdIEFkZCBQcm94eSBiYXNlZCB0
ZXN0cyBmb3IgUmVnRXhwLnByb3RvdHlwZVtAQG1hdGNoXQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5oCShyZXZpc2lvbiAxOTg2
NDIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xMzEsNiArMTMxLDIxIEBAIEFMV0FZU19JTkxJTkUgdm9pZCBS
ZWdFeHBDb25zdHJ1Y3Rvcjo6cmUKICAgICBtX2NhY2hlZFJlc3VsdC5yZWNvcmQodm0sIHRoaXMs
IHJlZ0V4cCwgc3RyaW5nLCByZXN1bHQpOwogfQogCitBTFdBWVNfSU5MSU5FIGJvb2wgaXNSZWdF
eHAoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCit7CisgICAgaWYgKCF2
YWx1ZS5pc09iamVjdCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBKU09iamVjdCog
b2JqZWN0ID0gYXNPYmplY3QodmFsdWUpOworICAgIEpTVmFsdWUgbWF0Y2hWYWx1ZSA9IG9iamVj
dC0+Z2V0KGV4ZWMsIHZtLnByb3BlcnR5TmFtZXMtPm1hdGNoU3ltYm9sKTsKKyAgICBpZiAodm0u
ZXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIW1hdGNoVmFsdWUu
aXNVbmRlZmluZWQoKSkKKyAgICAgICAgcmV0dXJuIG1hdGNoVmFsdWUudG9Cb29sZWFuKGV4ZWMp
OworCisgICAgcmV0dXJuIG9iamVjdC0+aW5oZXJpdHMoUmVnRXhwT2JqZWN0OjppbmZvKCkpOwor
fQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIFJlZ0V4cENvbnN0cnVjdG9yX2gK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90
eXBlLmNwcAkocmV2aXNpb24gMTk4NjQyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RyaW5nUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg0MCw4ICsxODQwLDEy
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG8KICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIAogICAgIEpTVmFsdWUgYTAgPSBl
eGVjLT5hcmd1bWVudCgwKTsKLSAgICBpZiAoanNEeW5hbWljQ2FzdDxSZWdFeHBPYmplY3QqPihh
MCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CisgICAgYm9vbCBpc1JlZ3VsYXJFeHByZXNzaW9uID0gaXNSZWdFeHAodm0s
IGV4ZWMsIGEwKTsKKyAgICBpZiAodm0uZXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsKKyAgICBpZiAoaXNSZWd1bGFyRXhwcmVzc2lvbikKKyAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgIkFyZ3VtZW50IHRvIFN0cmluZy5w
cm90b3R5cGUuc3RhcnRzV2l0aCBjYW4gbm90IGJlIGEgUmVnRXhwLiIpOwogCiAgICAgU3RyaW5n
IHNlYXJjaFN0cmluZyA9IGEwLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICBpZiAo
ZXhlYy0+aGFkRXhjZXB0aW9uKCkpCkBAIC0xODcyLDggKzE4NzYsMTIgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90bwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwogCiAgICAgSlNWYWx1ZSBhMCA9IGV4ZWMtPmFyZ3VtZW50KDAp
OwotICAgIGlmIChqc0R5bmFtaWNDYXN0PFJlZ0V4cE9iamVjdCo+KGEwKSkKLSAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAg
ICBib29sIGlzUmVndWxhckV4cHJlc3Npb24gPSBpc1JlZ0V4cCh2bSwgZXhlYywgYTApOworICAg
IGlmICh2bS5leGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Zh
bHVlKCkpOworICAgIGlmIChpc1JlZ3VsYXJFeHByZXNzaW9uKQorICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihleGVjLCAiQXJndW1lbnQgdG8gU3RyaW5nLnByb3RvdHlwZS5lbmRzV2l0
aCBjYW4gbm90IGJlIGEgUmVnRXhwLiIpOwogCiAgICAgU3RyaW5nIHNlYXJjaFN0cmluZyA9IGEw
LnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9u
KCkpCkBAIC0xOTA1LDggKzE5MTMsMTIgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBz
dHJpbmdQcm90bwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwogCiAgICAgSlNWYWx1ZSBhMCA9IGV4ZWMtPmFyZ3VtZW50KDApOwotICAgIGlmIChqc0R5bmFt
aWNDYXN0PFJlZ0V4cE9iamVjdCo+KGEwKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYyk7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBib29sIGlzUmVndWxhckV4
cHJlc3Npb24gPSBpc1JlZ0V4cCh2bSwgZXhlYywgYTApOworICAgIGlmICh2bS5leGNlcHRpb24o
KSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKCkpOworICAgIGlmIChp
c1JlZ3VsYXJFeHByZXNzaW9uKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
LCAiQXJndW1lbnQgdG8gU3RyaW5nLnByb3RvdHlwZS5pbmNsdWRlcyBjYW4gbm90IGJlIGEgUmVn
RXhwLiIpOwogCiAgICAgU3RyaW5nIHNlYXJjaFN0cmluZyA9IGEwLnRvU3RyaW5nKGV4ZWMpLT52
YWx1ZShleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2LnlhbWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rlc3RzL2VzNi55YW1sCShyZXZpc2lvbiAxOTg2NDIpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvdGVzdHMvZXM2LnlhbWwJKHdvcmtpbmcgY29weSkKQEAgLTEyMjAsNiArMTIy
MCwxMiBAQAogICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi93ZWxsLWtub3duX3N5
bWJvbHNfU3ltYm9sLnRvU3RyaW5nVGFnX21pc2MuX2J1aWx0LWlucy5qcwogICBjbWQ6IHJ1bkVT
NiA6bm9ybWFsCistIHBhdGg6IGVzNi93ZWxsLWtub3duX3N5bWJvbHNfU3ltYm9sLm1hdGNoX1N0
cmluZy5wcm90b3R5cGUuc3RhcnRzV2l0aC5qcworICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCistIHBh
dGg6IGVzNi93ZWxsLWtub3duX3N5bWJvbHNfU3ltYm9sLm1hdGNoX1N0cmluZy5wcm90b3R5cGUu
ZW5kc1dpdGguanMKKyAgY21kOiBydW5FUzYgOm5vcm1hbAorLSBwYXRoOiBlczYvd2VsbC1rbm93
bl9zeW1ib2xzX1N5bWJvbC5tYXRjaF9TdHJpbmcucHJvdG90eXBlLmluY2x1ZGVzLmpzCisgIGNt
ZDogcnVuRVM2IDpub3JtYWwKICMgTGF0ZS1zdGFnZSBwcm9wb3NhbHMgZm9yIGEgZnV0dXJlIEVD
TUFTY3JpcHQgc3RhbmRhcmQKICMgRklYTUU6IG1vdmUgdGhlc2UgdG8gYSBuZXcgZGlyZWN0b3J5
PwogLSBwYXRoOiBlczYvT2JqZWN0X3N0YXRpY19tZXRob2RzX09iamVjdC5nZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3JzLmpzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2L3dl
bGwta25vd25fc3ltYm9sc19TeW1ib2wubWF0Y2hfU3RyaW5nLnByb3RvdHlwZS5lbmRzV2l0aC5q
cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2L3dlbGwta25v
d25fc3ltYm9sc19TeW1ib2wubWF0Y2hfU3RyaW5nLnByb3RvdHlwZS5lbmRzV2l0aC5qcwkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYvd2VsbC1rbm93bl9z
eW1ib2xzX1N5bWJvbC5tYXRjaF9TdHJpbmcucHJvdG90eXBlLmVuZHNXaXRoLmpzCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMTIgQEAKK2Z1bmN0aW9uIHRlc3QoKSB7CisgICAgdmFyIHJlID0g
Ly4vOworICAgIHRyeSB7CisgICAgICAgICcvLi8nLmVuZHNXaXRoKHJlKTsKKyAgICB9IGNhdGNo
KGUpeworICAgICAgICByZVtTeW1ib2wubWF0Y2hdID0gZmFsc2U7CisgICAgICAgIHJldHVybiAn
Ly4vJy5lbmRzV2l0aChyZSk7CisgICAgfQorfQorCitpZiAoIXRlc3QoKSkKKyAgICB0aHJvdyBu
ZXcgRXJyb3IoIlRlc3QgZmFpbGVkIik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvZXM2L3dlbGwta25vd25fc3ltYm9sc19TeW1ib2wubWF0Y2hfU3RyaW5nLnByb3RvdHlwZS5p
bmNsdWRlcy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2
L3dlbGwta25vd25fc3ltYm9sc19TeW1ib2wubWF0Y2hfU3RyaW5nLnByb3RvdHlwZS5pbmNsdWRl
cy5qcwkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYvd2Vs
bC1rbm93bl9zeW1ib2xzX1N5bWJvbC5tYXRjaF9TdHJpbmcucHJvdG90eXBlLmluY2x1ZGVzLmpz
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTIgQEAKK2Z1bmN0aW9uIHRlc3QoKSB7CisgICAg
dmFyIHJlID0gLy4vOworICAgIHRyeSB7CisgICAgICAgICcvLi8nLmluY2x1ZGVzKHJlKTsKKyAg
ICB9IGNhdGNoKGUpeworICAgICAgICByZVtTeW1ib2wubWF0Y2hdID0gZmFsc2U7CisgICAgICAg
IHJldHVybiAnLy4vJy5pbmNsdWRlcyhyZSk7CisgICAgfQorfQorCitpZiAoIXRlc3QoKSkKKyAg
ICB0aHJvdyBuZXcgRXJyb3IoIlRlc3QgZmFpbGVkIik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvZXM2L3dlbGwta25vd25fc3ltYm9sc19TeW1ib2wubWF0Y2hfU3RyaW5nLnBy
b3RvdHlwZS5zdGFydHNXaXRoLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9lczYvd2VsbC1rbm93bl9zeW1ib2xzX1N5bWJvbC5tYXRjaF9TdHJpbmcucHJvdG90
eXBlLnN0YXJ0c1dpdGguanMJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
dGVzdHMvZXM2L3dlbGwta25vd25fc3ltYm9sc19TeW1ib2wubWF0Y2hfU3RyaW5nLnByb3RvdHlw
ZS5zdGFydHNXaXRoLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTIgQEAKK2Z1bmN0aW9u
IHRlc3QoKSB7CisgICAgdmFyIHJlID0gLy4vOworICAgIHRyeSB7CisgICAgICAgICcvLi8nLnN0
YXJ0c1dpdGgocmUpOworICAgIH0gY2F0Y2goZSl7CisgICAgICAgIHJlW1N5bWJvbC5tYXRjaF0g
PSBmYWxzZTsKKyAgICAgICAgcmV0dXJuICcvLi8nLnN0YXJ0c1dpdGgocmUpOworICAgIH0KK30K
KworaWYgKCF0ZXN0KCkpCisgICAgdGhyb3cgbmV3IEVycm9yKCJUZXN0IGZhaWxlZCIpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9zdHJpbmctcHJvdG90eXBlLW1l
dGhvZHMtZW5kc1dpdGgtc3RhcnRzV2l0aC1pbmNsdWRlcy1jb3JyZWN0bmVzcy5qcwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3N0cmluZy1wcm90b3R5
cGUtbWV0aG9kcy1lbmRzV2l0aC1zdGFydHNXaXRoLWluY2x1ZGVzLWNvcnJlY3RuZXNzLmpzCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9zdHJpbmct
cHJvdG90eXBlLW1ldGhvZHMtZW5kc1dpdGgtc3RhcnRzV2l0aC1pbmNsdWRlcy1jb3JyZWN0bmVz
cy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE4MCBAQAorZnVuY3Rpb24gYXNzZXJ0KGIp
IHsKKyAgICBpZiAoIWIpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiQmFkIGFzc2VydGlvbiEi
KTsKK30KKworZnVuY3Rpb24gdGVzdChmKSB7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCA1MDA7
IGkrKykKKyAgICAgICAgZigpOworfQorCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIGxldCBmb28g
PSAiaGVsbG8iOworICAgIGxldCB0aHJldyA9IGZhbHNlOworICAgIHRyeSB7CisgICAgICAgIGZv
by5lbmRzV2l0aCgvZm9vLyk7CisgICAgfSBjYXRjaChlKSB7CisgICAgICAgIGFzc2VydChlLnRv
U3RyaW5nKCkgPT09ICJUeXBlRXJyb3I6IEFyZ3VtZW50IHRvIFN0cmluZy5wcm90b3R5cGUuZW5k
c1dpdGggY2FuIG5vdCBiZSBhIFJlZ0V4cC4iKTsKKyAgICAgICAgdGhyZXcgPSB0cnVlOworICAg
IH0KKyAgICBhc3NlcnQodGhyZXcpOworfSk7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgbGV0
IGZvbyA9ICJoZWxsbyI7CisgICAgbGV0IHRocmV3ID0gZmFsc2U7CisgICAgdHJ5IHsKKyAgICAg
ICAgZm9vLnN0YXJ0c1dpdGgoL2Zvby8pOworICAgIH0gY2F0Y2goZSkgeworICAgICAgICBhc3Nl
cnQoZS50b1N0cmluZygpID09PSAiVHlwZUVycm9yOiBBcmd1bWVudCB0byBTdHJpbmcucHJvdG90
eXBlLnN0YXJ0c1dpdGggY2FuIG5vdCBiZSBhIFJlZ0V4cC4iKTsKKyAgICAgICAgdGhyZXcgPSB0
cnVlOworICAgIH0KKyAgICBhc3NlcnQodGhyZXcpOworfSk7CisKK3Rlc3QoZnVuY3Rpb24oKSB7
CisgICAgbGV0IGZvbyA9ICJoZWxsbyI7CisgICAgbGV0IHRocmV3ID0gZmFsc2U7CisgICAgdHJ5
IHsKKyAgICAgICAgZm9vLmluY2x1ZGVzKC9mb28vKTsKKyAgICB9IGNhdGNoKGUpIHsKKyAgICAg
ICAgYXNzZXJ0KGUudG9TdHJpbmcoKSA9PT0gIlR5cGVFcnJvcjogQXJndW1lbnQgdG8gU3RyaW5n
LnByb3RvdHlwZS5pbmNsdWRlcyBjYW4gbm90IGJlIGEgUmVnRXhwLiIpOworICAgICAgICB0aHJl
dyA9IHRydWU7CisgICAgfQorICAgIGFzc2VydCh0aHJldyk7Cit9KTsKKwordGVzdChmdW5jdGlv
bigpIHsKKyAgICBsZXQgcHJvcHMgPSBbXTsKKyAgICBsZXQgcHJveHkgPSBuZXcgUHJveHkoL2Zv
by8sIHsKKyAgICAgICAgZ2V0KHRoZVRhcmdldCwgcHJvcCkgeworICAgICAgICAgICAgcHJvcHMu
cHVzaChwcm9wKTsKKyAgICAgICAgICAgIHJldHVybiB0aGVUYXJnZXRbcHJvcF07CisgICAgICAg
IH0KKyAgICB9KTsKKworICAgIGxldCBmb28gPSAiaGVsbG8iOworICAgIGxldCB0aHJldyA9IGZh
bHNlOworICAgIHRyeSB7CisgICAgICAgIGZvby5lbmRzV2l0aChwcm94eSk7CisgICAgfSBjYXRj
aChlKSB7CisgICAgICAgIGFzc2VydChlLnRvU3RyaW5nKCkgPT09ICJUeXBlRXJyb3I6IEFyZ3Vt
ZW50IHRvIFN0cmluZy5wcm90b3R5cGUuZW5kc1dpdGggY2FuIG5vdCBiZSBhIFJlZ0V4cC4iKTsK
KyAgICAgICAgdGhyZXcgPSB0cnVlOworICAgIH0KKyAgICBhc3NlcnQodGhyZXcpOworICAgIGFz
c2VydChwcm9wcy5sZW5ndGggPT09IDEpOworICAgIGFzc2VydChwcm9wc1swXSA9PT0gU3ltYm9s
Lm1hdGNoKTsKK30pOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIGxldCBwcm9wcyA9IFtdOwor
ICAgIGxldCBwcm94eSA9IG5ldyBQcm94eSgvZm9vLywgeworICAgICAgICBnZXQodGhlVGFyZ2V0
LCBwcm9wKSB7CisgICAgICAgICAgICBwcm9wcy5wdXNoKHByb3ApOworICAgICAgICAgICAgcmV0
dXJuIHRoZVRhcmdldFtwcm9wXTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgbGV0IGZvbyA9
ICJoZWxsbyI7CisgICAgbGV0IHRocmV3ID0gZmFsc2U7CisgICAgdHJ5IHsKKyAgICAgICAgZm9v
LnN0YXJ0c1dpdGgocHJveHkpOworICAgIH0gY2F0Y2goZSkgeworICAgICAgICBhc3NlcnQoZS50
b1N0cmluZygpID09PSAiVHlwZUVycm9yOiBBcmd1bWVudCB0byBTdHJpbmcucHJvdG90eXBlLnN0
YXJ0c1dpdGggY2FuIG5vdCBiZSBhIFJlZ0V4cC4iKTsKKyAgICAgICAgdGhyZXcgPSB0cnVlOwor
ICAgIH0KKyAgICBhc3NlcnQodGhyZXcpOworICAgIGFzc2VydChwcm9wcy5sZW5ndGggPT09IDEp
OworICAgIGFzc2VydChwcm9wc1swXSA9PT0gU3ltYm9sLm1hdGNoKTsKK30pOworCit0ZXN0KGZ1
bmN0aW9uKCkgeworICAgIGxldCBwcm9wcyA9IFtdOworICAgIGxldCBwcm94eSA9IG5ldyBQcm94
eSgvZm9vLywgeworICAgICAgICBnZXQodGhlVGFyZ2V0LCBwcm9wKSB7CisgICAgICAgICAgICBw
cm9wcy5wdXNoKHByb3ApOworICAgICAgICAgICAgcmV0dXJuIHRoZVRhcmdldFtwcm9wXTsKKyAg
ICAgICAgfQorICAgIH0pOworCisgICAgbGV0IGZvbyA9ICJoZWxsbyI7CisgICAgbGV0IHRocmV3
ID0gZmFsc2U7CisgICAgdHJ5IHsKKyAgICAgICAgZm9vLmluY2x1ZGVzKHByb3h5KTsKKyAgICB9
IGNhdGNoKGUpIHsKKyAgICAgICAgYXNzZXJ0KGUudG9TdHJpbmcoKSA9PT0gIlR5cGVFcnJvcjog
QXJndW1lbnQgdG8gU3RyaW5nLnByb3RvdHlwZS5pbmNsdWRlcyBjYW4gbm90IGJlIGEgUmVnRXhw
LiIpOworICAgICAgICB0aHJldyA9IHRydWU7CisgICAgfQorICAgIGFzc2VydCh0aHJldyk7Cisg
ICAgYXNzZXJ0KHByb3BzLmxlbmd0aCA9PT0gMSk7CisgICAgYXNzZXJ0KHByb3BzWzBdID09PSBT
eW1ib2wubWF0Y2gpOworfSk7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgbGV0IHByb3BzID0g
W107CisgICAgbGV0IHByb3h5ID0gbmV3IFByb3h5KC9mb28vLCB7CisgICAgICAgIGdldCh0aGVU
YXJnZXQsIHByb3ApIHsKKyAgICAgICAgICAgIHByb3BzLnB1c2gocHJvcCk7CisgICAgICAgICAg
ICBpZiAocHJvcCA9PT0gU3ltYm9sLm1hdGNoKQorICAgICAgICAgICAgICAgIHJldHVybiB1bmRl
ZmluZWQ7CisgICAgICAgICAgICByZXR1cm4gdGhlVGFyZ2V0W3Byb3BdOworICAgICAgICB9Cisg
ICAgfSk7CisKKyAgICBsZXQgZm9vID0gIi9mb28vIjsKKyAgICBsZXQgdGhyZXcgPSBmYWxzZTsK
KyAgICBsZXQgcmVzdWx0ID0gZm9vLmluY2x1ZGVzKHByb3h5KTsKKyAgICBhc3NlcnQocmVzdWx0
KTsKKyAgICBhc3NlcnQocHJvcHMubGVuZ3RoID09PSA1KTsKKyAgICBhc3NlcnQocHJvcHNbMF0g
PT09IFN5bWJvbC5tYXRjaCk7CisgICAgYXNzZXJ0KHByb3BzWzFdID09PSBTeW1ib2wudG9Qcmlt
aXRpdmUpOworICAgIGFzc2VydChwcm9wc1syXSA9PT0gInRvU3RyaW5nIik7CisgICAgYXNzZXJ0
KHByb3BzWzNdID09PSAic291cmNlIik7CisgICAgYXNzZXJ0KHByb3BzWzRdID09PSAiZmxhZ3Mi
KTsKK30pOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIGxldCBwcm9wcyA9IFtdOworICAgIGxl
dCBwcm94eSA9IG5ldyBQcm94eSgvZm9vLywgeworICAgICAgICBnZXQodGhlVGFyZ2V0LCBwcm9w
KSB7CisgICAgICAgICAgICBwcm9wcy5wdXNoKHByb3ApOworICAgICAgICAgICAgaWYgKHByb3Ag
PT09IFN5bWJvbC5tYXRjaCkKKyAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkOworICAg
ICAgICAgICAgcmV0dXJuIHRoZVRhcmdldFtwcm9wXTsKKyAgICAgICAgfQorICAgIH0pOworCisg
ICAgbGV0IGZvbyA9ICIvZm9vLyI7CisgICAgbGV0IHRocmV3ID0gZmFsc2U7CisgICAgbGV0IHJl
c3VsdCA9IGZvby5zdGFydHNXaXRoKHByb3h5KTsKKyAgICBhc3NlcnQocmVzdWx0KTsKKyAgICBh
c3NlcnQocHJvcHMubGVuZ3RoID09PSA1KTsKKyAgICBhc3NlcnQocHJvcHNbMF0gPT09IFN5bWJv
bC5tYXRjaCk7CisgICAgYXNzZXJ0KHByb3BzWzFdID09PSBTeW1ib2wudG9QcmltaXRpdmUpOwor
ICAgIGFzc2VydChwcm9wc1syXSA9PT0gInRvU3RyaW5nIik7CisgICAgYXNzZXJ0KHByb3BzWzNd
ID09PSAic291cmNlIik7CisgICAgYXNzZXJ0KHByb3BzWzRdID09PSAiZmxhZ3MiKTsKK30pOwor
Cit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIGxldCBwcm9wcyA9IFtdOworICAgIGxldCBwcm94eSA9
IG5ldyBQcm94eSgvZm9vLywgeworICAgICAgICBnZXQodGhlVGFyZ2V0LCBwcm9wKSB7CisgICAg
ICAgICAgICBwcm9wcy5wdXNoKHByb3ApOworICAgICAgICAgICAgaWYgKHByb3AgPT09IFN5bWJv
bC5tYXRjaCkKKyAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkOworICAgICAgICAgICAg
cmV0dXJuIHRoZVRhcmdldFtwcm9wXTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgbGV0IGZv
byA9ICIvZm9vLyI7CisgICAgbGV0IHRocmV3ID0gZmFsc2U7CisgICAgbGV0IHJlc3VsdCA9IGZv
by5lbmRzV2l0aChwcm94eSk7CisgICAgYXNzZXJ0KHJlc3VsdCk7CisgICAgYXNzZXJ0KHByb3Bz
Lmxlbmd0aCA9PT0gNSk7CisgICAgYXNzZXJ0KHByb3BzWzBdID09PSBTeW1ib2wubWF0Y2gpOwor
ICAgIGFzc2VydChwcm9wc1sxXSA9PT0gU3ltYm9sLnRvUHJpbWl0aXZlKTsKKyAgICBhc3NlcnQo
cHJvcHNbMl0gPT09ICJ0b1N0cmluZyIpOworICAgIGFzc2VydChwcm9wc1szXSA9PT0gInNvdXJj
ZSIpOworICAgIGFzc2VydChwcm9wc1s0XSA9PT0gImZsYWdzIik7Cit9KTsK
</data>
<flag name="review"
          id="299267"
          type_id="1"
          status="+"
          setter="mark.lam"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>274860</attachid>
            <date>2016-03-24 15:24:04 -0700</date>
            <delta_ts>2016-03-24 15:29:25 -0700</delta_ts>
            <desc>patch</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>13802</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTk4NjQzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM2IEBA
CisyMDE2LTAzLTI0ICBTYWFtIGJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IEVTNjogSW1wbGVtZW50IElzUmVnRXhwIGZ1bmN0aW9uIGFuZCB1c2Ugd2hlcmUgbmVlZGVkIGlu
IFN0cmluZy5wcm90b3R5cGUuKiBtZXRob2RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNTU4NTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGlzIGEgc3RyYWlnaHQgZm9yd2FyZCBpbXBs
ZW1lbnRhdGlvbiBvZiBJc1JlZ0V4cAorICAgICAgICBpbiB0aGUgRVM2IHNwZWM6CisgICAgICAg
IGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWlzcmVnZXhwCisgICAgICAgIFdl
IG5vdyB1c2UgdGhpcyBJc1JlZ0V4cCBmdW5jdGlvbiBpbnNpZGUgU3RyaW5nLnByb3RvdHlwZS4o
c3RhcnRzV2l0aCB8IGVuZHNXaXRoIHwgaW5jbHVkZXMpCisgICAgICAgIGFzIGlzIGRpY3RhdGVk
IGJ5IHRoZSBzcGVjLgorCisgICAgICAgICogcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5oOgor
ICAgICAgICAoSlNDOjpSZWdFeHBDb25zdHJ1Y3Rvcjo6cmVjb3JkTWF0Y2gpOgorICAgICAgICAo
SlNDOjppc1JlZ0V4cCk6CisgICAgICAgICogcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwOgor
ICAgICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNTdGFydHNXaXRoKToKKyAgICAgICAgKEpTQzo6
c3RyaW5nUHJvdG9GdW5jRW5kc1dpdGgpOgorICAgICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNJ
bmNsdWRlcyk6CisgICAgICAgICogdGVzdHMvZXM2LnlhbWw6CisgICAgICAgICogdGVzdHMvZXM2
L3dlbGwta25vd25fc3ltYm9sc19TeW1ib2wubWF0Y2hfU3RyaW5nLnByb3RvdHlwZS5lbmRzV2l0
aC5qczogQWRkZWQuCisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKiB0ZXN0cy9lczYvd2VsbC1r
bm93bl9zeW1ib2xzX1N5bWJvbC5tYXRjaF9TdHJpbmcucHJvdG90eXBlLmluY2x1ZGVzLmpzOiBB
ZGRlZC4KKyAgICAgICAgKHRlc3QpOgorICAgICAgICAqIHRlc3RzL2VzNi93ZWxsLWtub3duX3N5
bWJvbHNfU3ltYm9sLm1hdGNoX1N0cmluZy5wcm90b3R5cGUuc3RhcnRzV2l0aC5qczogQWRkZWQu
CisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3Mvc3RyaW5nLXByb3RvdHlw
ZS1tZXRob2RzLWVuZHNXaXRoLXN0YXJ0c1dpdGgtaW5jbHVkZXMtY29ycmVjdG5lc3MuanM6IEFk
ZGVkLgorICAgICAgICAoYXNzZXJ0KToKKyAgICAgICAgKHRlc3QpOgorICAgICAgICAodGVzdC5n
ZXQgbGV0KToKKyAgICAgICAgKGdldCBsZXQpOgorCiAyMDE2LTAzLTI0ICBNaWNoYWVsIFNhYm9m
ZiAgPG1zYWJvZmZAYXBwbGUuY29tPgogCiAgICAgICAgIFtFUzZdIEFkZCBQcm94eSBiYXNlZCB0
ZXN0cyBmb3IgUmVnRXhwLnByb3RvdHlwZVtAQG1hdGNoXQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5oCShyZXZpc2lvbiAxOTg2
NDIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xMzEsNiArMTMxLDIxIEBAIEFMV0FZU19JTkxJTkUgdm9pZCBS
ZWdFeHBDb25zdHJ1Y3Rvcjo6cmUKICAgICBtX2NhY2hlZFJlc3VsdC5yZWNvcmQodm0sIHRoaXMs
IHJlZ0V4cCwgc3RyaW5nLCByZXN1bHQpOwogfQogCitBTFdBWVNfSU5MSU5FIGJvb2wgaXNSZWdF
eHAoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCit7CisgICAgaWYgKCF2
YWx1ZS5pc09iamVjdCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBKU09iamVjdCog
b2JqZWN0ID0gYXNPYmplY3QodmFsdWUpOworICAgIEpTVmFsdWUgbWF0Y2hWYWx1ZSA9IG9iamVj
dC0+Z2V0KGV4ZWMsIHZtLnByb3BlcnR5TmFtZXMtPm1hdGNoU3ltYm9sKTsKKyAgICBpZiAodm0u
ZXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIW1hdGNoVmFsdWUu
aXNVbmRlZmluZWQoKSkKKyAgICAgICAgcmV0dXJuIG1hdGNoVmFsdWUudG9Cb29sZWFuKGV4ZWMp
OworCisgICAgcmV0dXJuIG9iamVjdC0+aW5oZXJpdHMoUmVnRXhwT2JqZWN0OjppbmZvKCkpOwor
fQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIFJlZ0V4cENvbnN0cnVjdG9yX2gK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90
eXBlLmNwcAkocmV2aXNpb24gMTk4NjQyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RyaW5nUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg0MCw4ICsxODQwLDEy
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG8KICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIAogICAgIEpTVmFsdWUgYTAgPSBl
eGVjLT5hcmd1bWVudCgwKTsKLSAgICBpZiAoanNEeW5hbWljQ2FzdDxSZWdFeHBPYmplY3QqPihh
MCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CisgICAgYm9vbCBpc1JlZ3VsYXJFeHByZXNzaW9uID0gaXNSZWdFeHAodm0s
IGV4ZWMsIGEwKTsKKyAgICBpZiAodm0uZXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsKKyAgICBpZiAoaXNSZWd1bGFyRXhwcmVzc2lvbikKKyAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgIkFyZ3VtZW50IHRvIFN0cmluZy5w
cm90b3R5cGUuc3RhcnRzV2l0aCBjYW4gbm90IGJlIGEgUmVnRXhwLiIpOwogCiAgICAgU3RyaW5n
IHNlYXJjaFN0cmluZyA9IGEwLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICBpZiAo
ZXhlYy0+aGFkRXhjZXB0aW9uKCkpCkBAIC0xODcyLDggKzE4NzYsMTIgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90bwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwogCiAgICAgSlNWYWx1ZSBhMCA9IGV4ZWMtPmFyZ3VtZW50KDAp
OwotICAgIGlmIChqc0R5bmFtaWNDYXN0PFJlZ0V4cE9iamVjdCo+KGEwKSkKLSAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAg
ICBib29sIGlzUmVndWxhckV4cHJlc3Npb24gPSBpc1JlZ0V4cCh2bSwgZXhlYywgYTApOworICAg
IGlmICh2bS5leGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Zh
bHVlKCkpOworICAgIGlmIChpc1JlZ3VsYXJFeHByZXNzaW9uKQorICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihleGVjLCAiQXJndW1lbnQgdG8gU3RyaW5nLnByb3RvdHlwZS5lbmRzV2l0
aCBjYW4gbm90IGJlIGEgUmVnRXhwLiIpOwogCiAgICAgU3RyaW5nIHNlYXJjaFN0cmluZyA9IGEw
LnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9u
KCkpCkBAIC0xOTA1LDggKzE5MTMsMTIgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBz
dHJpbmdQcm90bwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwogCiAgICAgSlNWYWx1ZSBhMCA9IGV4ZWMtPmFyZ3VtZW50KDApOwotICAgIGlmIChqc0R5bmFt
aWNDYXN0PFJlZ0V4cE9iamVjdCo+KGEwKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYyk7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBib29sIGlzUmVndWxhckV4
cHJlc3Npb24gPSBpc1JlZ0V4cCh2bSwgZXhlYywgYTApOworICAgIGlmICh2bS5leGNlcHRpb24o
KSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKCkpOworICAgIGlmIChp
c1JlZ3VsYXJFeHByZXNzaW9uKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
LCAiQXJndW1lbnQgdG8gU3RyaW5nLnByb3RvdHlwZS5pbmNsdWRlcyBjYW4gbm90IGJlIGEgUmVn
RXhwLiIpOwogCiAgICAgU3RyaW5nIHNlYXJjaFN0cmluZyA9IGEwLnRvU3RyaW5nKGV4ZWMpLT52
YWx1ZShleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2LnlhbWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rlc3RzL2VzNi55YW1sCShyZXZpc2lvbiAxOTg2NDIpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvdGVzdHMvZXM2LnlhbWwJKHdvcmtpbmcgY29weSkKQEAgLTEyMjAsNiArMTIy
MCwxMiBAQAogICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi93ZWxsLWtub3duX3N5
bWJvbHNfU3ltYm9sLnRvU3RyaW5nVGFnX21pc2MuX2J1aWx0LWlucy5qcwogICBjbWQ6IHJ1bkVT
NiA6bm9ybWFsCistIHBhdGg6IGVzNi93ZWxsLWtub3duX3N5bWJvbHNfU3ltYm9sLm1hdGNoX1N0
cmluZy5wcm90b3R5cGUuc3RhcnRzV2l0aC5qcworICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCistIHBh
dGg6IGVzNi93ZWxsLWtub3duX3N5bWJvbHNfU3ltYm9sLm1hdGNoX1N0cmluZy5wcm90b3R5cGUu
ZW5kc1dpdGguanMKKyAgY21kOiBydW5FUzYgOm5vcm1hbAorLSBwYXRoOiBlczYvd2VsbC1rbm93
bl9zeW1ib2xzX1N5bWJvbC5tYXRjaF9TdHJpbmcucHJvdG90eXBlLmluY2x1ZGVzLmpzCisgIGNt
ZDogcnVuRVM2IDpub3JtYWwKICMgTGF0ZS1zdGFnZSBwcm9wb3NhbHMgZm9yIGEgZnV0dXJlIEVD
TUFTY3JpcHQgc3RhbmRhcmQKICMgRklYTUU6IG1vdmUgdGhlc2UgdG8gYSBuZXcgZGlyZWN0b3J5
PwogLSBwYXRoOiBlczYvT2JqZWN0X3N0YXRpY19tZXRob2RzX09iamVjdC5nZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3JzLmpzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2L3dl
bGwta25vd25fc3ltYm9sc19TeW1ib2wubWF0Y2hfU3RyaW5nLnByb3RvdHlwZS5lbmRzV2l0aC5q
cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2L3dlbGwta25v
d25fc3ltYm9sc19TeW1ib2wubWF0Y2hfU3RyaW5nLnByb3RvdHlwZS5lbmRzV2l0aC5qcwkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYvd2VsbC1rbm93bl9z
eW1ib2xzX1N5bWJvbC5tYXRjaF9TdHJpbmcucHJvdG90eXBlLmVuZHNXaXRoLmpzCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMTIgQEAKK2Z1bmN0aW9uIHRlc3QoKSB7CisgICAgdmFyIHJlID0g
Ly4vOworICAgIHRyeSB7CisgICAgICAgICcvLi8nLmVuZHNXaXRoKHJlKTsKKyAgICB9IGNhdGNo
KGUpeworICAgICAgICByZVtTeW1ib2wubWF0Y2hdID0gZmFsc2U7CisgICAgICAgIHJldHVybiAn
Ly4vJy5lbmRzV2l0aChyZSk7CisgICAgfQorfQorCitpZiAoIXRlc3QoKSkKKyAgICB0aHJvdyBu
ZXcgRXJyb3IoIlRlc3QgZmFpbGVkIik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvZXM2L3dlbGwta25vd25fc3ltYm9sc19TeW1ib2wubWF0Y2hfU3RyaW5nLnByb3RvdHlwZS5p
bmNsdWRlcy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2
L3dlbGwta25vd25fc3ltYm9sc19TeW1ib2wubWF0Y2hfU3RyaW5nLnByb3RvdHlwZS5pbmNsdWRl
cy5qcwkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYvd2Vs
bC1rbm93bl9zeW1ib2xzX1N5bWJvbC5tYXRjaF9TdHJpbmcucHJvdG90eXBlLmluY2x1ZGVzLmpz
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTIgQEAKK2Z1bmN0aW9uIHRlc3QoKSB7CisgICAg
dmFyIHJlID0gLy4vOworICAgIHRyeSB7CisgICAgICAgICcvLi8nLmluY2x1ZGVzKHJlKTsKKyAg
ICB9IGNhdGNoKGUpeworICAgICAgICByZVtTeW1ib2wubWF0Y2hdID0gZmFsc2U7CisgICAgICAg
IHJldHVybiAnLy4vJy5pbmNsdWRlcyhyZSk7CisgICAgfQorfQorCitpZiAoIXRlc3QoKSkKKyAg
ICB0aHJvdyBuZXcgRXJyb3IoIlRlc3QgZmFpbGVkIik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvZXM2L3dlbGwta25vd25fc3ltYm9sc19TeW1ib2wubWF0Y2hfU3RyaW5nLnBy
b3RvdHlwZS5zdGFydHNXaXRoLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9lczYvd2VsbC1rbm93bl9zeW1ib2xzX1N5bWJvbC5tYXRjaF9TdHJpbmcucHJvdG90
eXBlLnN0YXJ0c1dpdGguanMJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
dGVzdHMvZXM2L3dlbGwta25vd25fc3ltYm9sc19TeW1ib2wubWF0Y2hfU3RyaW5nLnByb3RvdHlw
ZS5zdGFydHNXaXRoLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTIgQEAKK2Z1bmN0aW9u
IHRlc3QoKSB7CisgICAgdmFyIHJlID0gLy4vOworICAgIHRyeSB7CisgICAgICAgICcvLi8nLnN0
YXJ0c1dpdGgocmUpOworICAgIH0gY2F0Y2goZSl7CisgICAgICAgIHJlW1N5bWJvbC5tYXRjaF0g
PSBmYWxzZTsKKyAgICAgICAgcmV0dXJuICcvLi8nLnN0YXJ0c1dpdGgocmUpOworICAgIH0KK30K
KworaWYgKCF0ZXN0KCkpCisgICAgdGhyb3cgbmV3IEVycm9yKCJUZXN0IGZhaWxlZCIpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9zdHJpbmctcHJvdG90eXBlLW1l
dGhvZHMtZW5kc1dpdGgtc3RhcnRzV2l0aC1pbmNsdWRlcy1jb3JyZWN0bmVzcy5qcwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3N0cmluZy1wcm90b3R5
cGUtbWV0aG9kcy1lbmRzV2l0aC1zdGFydHNXaXRoLWluY2x1ZGVzLWNvcnJlY3RuZXNzLmpzCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9zdHJpbmct
cHJvdG90eXBlLW1ldGhvZHMtZW5kc1dpdGgtc3RhcnRzV2l0aC1pbmNsdWRlcy1jb3JyZWN0bmVz
cy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE4MCBAQAorZnVuY3Rpb24gYXNzZXJ0KGIp
IHsKKyAgICBpZiAoIWIpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiQmFkIGFzc2VydGlvbiEi
KTsKK30KKworZnVuY3Rpb24gdGVzdChmKSB7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCA1MDA7
IGkrKykKKyAgICAgICAgZigpOworfQorCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIGxldCBmb28g
PSAiaGVsbG8iOworICAgIGxldCB0aHJldyA9IGZhbHNlOworICAgIHRyeSB7CisgICAgICAgIGZv
by5lbmRzV2l0aCgvZm9vLyk7CisgICAgfSBjYXRjaChlKSB7CisgICAgICAgIGFzc2VydChlLnRv
U3RyaW5nKCkgPT09ICJUeXBlRXJyb3I6IEFyZ3VtZW50IHRvIFN0cmluZy5wcm90b3R5cGUuZW5k
c1dpdGggY2FuIG5vdCBiZSBhIFJlZ0V4cC4iKTsKKyAgICAgICAgdGhyZXcgPSB0cnVlOworICAg
IH0KKyAgICBhc3NlcnQodGhyZXcpOworfSk7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgbGV0
IGZvbyA9ICJoZWxsbyI7CisgICAgbGV0IHRocmV3ID0gZmFsc2U7CisgICAgdHJ5IHsKKyAgICAg
ICAgZm9vLnN0YXJ0c1dpdGgoL2Zvby8pOworICAgIH0gY2F0Y2goZSkgeworICAgICAgICBhc3Nl
cnQoZS50b1N0cmluZygpID09PSAiVHlwZUVycm9yOiBBcmd1bWVudCB0byBTdHJpbmcucHJvdG90
eXBlLnN0YXJ0c1dpdGggY2FuIG5vdCBiZSBhIFJlZ0V4cC4iKTsKKyAgICAgICAgdGhyZXcgPSB0
cnVlOworICAgIH0KKyAgICBhc3NlcnQodGhyZXcpOworfSk7CisKK3Rlc3QoZnVuY3Rpb24oKSB7
CisgICAgbGV0IGZvbyA9ICJoZWxsbyI7CisgICAgbGV0IHRocmV3ID0gZmFsc2U7CisgICAgdHJ5
IHsKKyAgICAgICAgZm9vLmluY2x1ZGVzKC9mb28vKTsKKyAgICB9IGNhdGNoKGUpIHsKKyAgICAg
ICAgYXNzZXJ0KGUudG9TdHJpbmcoKSA9PT0gIlR5cGVFcnJvcjogQXJndW1lbnQgdG8gU3RyaW5n
LnByb3RvdHlwZS5pbmNsdWRlcyBjYW4gbm90IGJlIGEgUmVnRXhwLiIpOworICAgICAgICB0aHJl
dyA9IHRydWU7CisgICAgfQorICAgIGFzc2VydCh0aHJldyk7Cit9KTsKKwordGVzdChmdW5jdGlv
bigpIHsKKyAgICBsZXQgcHJvcHMgPSBbXTsKKyAgICBsZXQgcHJveHkgPSBuZXcgUHJveHkoL2Zv
by8sIHsKKyAgICAgICAgZ2V0KHRoZVRhcmdldCwgcHJvcCkgeworICAgICAgICAgICAgcHJvcHMu
cHVzaChwcm9wKTsKKyAgICAgICAgICAgIHJldHVybiB0aGVUYXJnZXRbcHJvcF07CisgICAgICAg
IH0KKyAgICB9KTsKKworICAgIGxldCBmb28gPSAiaGVsbG8iOworICAgIGxldCB0aHJldyA9IGZh
bHNlOworICAgIHRyeSB7CisgICAgICAgIGZvby5lbmRzV2l0aChwcm94eSk7CisgICAgfSBjYXRj
aChlKSB7CisgICAgICAgIGFzc2VydChlLnRvU3RyaW5nKCkgPT09ICJUeXBlRXJyb3I6IEFyZ3Vt
ZW50IHRvIFN0cmluZy5wcm90b3R5cGUuZW5kc1dpdGggY2FuIG5vdCBiZSBhIFJlZ0V4cC4iKTsK
KyAgICAgICAgdGhyZXcgPSB0cnVlOworICAgIH0KKyAgICBhc3NlcnQodGhyZXcpOworICAgIGFz
c2VydChwcm9wcy5sZW5ndGggPT09IDEpOworICAgIGFzc2VydChwcm9wc1swXSA9PT0gU3ltYm9s
Lm1hdGNoKTsKK30pOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIGxldCBwcm9wcyA9IFtdOwor
ICAgIGxldCBwcm94eSA9IG5ldyBQcm94eSgvZm9vLywgeworICAgICAgICBnZXQodGhlVGFyZ2V0
LCBwcm9wKSB7CisgICAgICAgICAgICBwcm9wcy5wdXNoKHByb3ApOworICAgICAgICAgICAgcmV0
dXJuIHRoZVRhcmdldFtwcm9wXTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgbGV0IGZvbyA9
ICJoZWxsbyI7CisgICAgbGV0IHRocmV3ID0gZmFsc2U7CisgICAgdHJ5IHsKKyAgICAgICAgZm9v
LnN0YXJ0c1dpdGgocHJveHkpOworICAgIH0gY2F0Y2goZSkgeworICAgICAgICBhc3NlcnQoZS50
b1N0cmluZygpID09PSAiVHlwZUVycm9yOiBBcmd1bWVudCB0byBTdHJpbmcucHJvdG90eXBlLnN0
YXJ0c1dpdGggY2FuIG5vdCBiZSBhIFJlZ0V4cC4iKTsKKyAgICAgICAgdGhyZXcgPSB0cnVlOwor
ICAgIH0KKyAgICBhc3NlcnQodGhyZXcpOworICAgIGFzc2VydChwcm9wcy5sZW5ndGggPT09IDEp
OworICAgIGFzc2VydChwcm9wc1swXSA9PT0gU3ltYm9sLm1hdGNoKTsKK30pOworCit0ZXN0KGZ1
bmN0aW9uKCkgeworICAgIGxldCBwcm9wcyA9IFtdOworICAgIGxldCBwcm94eSA9IG5ldyBQcm94
eSgvZm9vLywgeworICAgICAgICBnZXQodGhlVGFyZ2V0LCBwcm9wKSB7CisgICAgICAgICAgICBw
cm9wcy5wdXNoKHByb3ApOworICAgICAgICAgICAgcmV0dXJuIHRoZVRhcmdldFtwcm9wXTsKKyAg
ICAgICAgfQorICAgIH0pOworCisgICAgbGV0IGZvbyA9ICJoZWxsbyI7CisgICAgbGV0IHRocmV3
ID0gZmFsc2U7CisgICAgdHJ5IHsKKyAgICAgICAgZm9vLmluY2x1ZGVzKHByb3h5KTsKKyAgICB9
IGNhdGNoKGUpIHsKKyAgICAgICAgYXNzZXJ0KGUudG9TdHJpbmcoKSA9PT0gIlR5cGVFcnJvcjog
QXJndW1lbnQgdG8gU3RyaW5nLnByb3RvdHlwZS5pbmNsdWRlcyBjYW4gbm90IGJlIGEgUmVnRXhw
LiIpOworICAgICAgICB0aHJldyA9IHRydWU7CisgICAgfQorICAgIGFzc2VydCh0aHJldyk7Cisg
ICAgYXNzZXJ0KHByb3BzLmxlbmd0aCA9PT0gMSk7CisgICAgYXNzZXJ0KHByb3BzWzBdID09PSBT
eW1ib2wubWF0Y2gpOworfSk7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgbGV0IHByb3BzID0g
W107CisgICAgbGV0IHByb3h5ID0gbmV3IFByb3h5KC9mb28vLCB7CisgICAgICAgIGdldCh0aGVU
YXJnZXQsIHByb3ApIHsKKyAgICAgICAgICAgIHByb3BzLnB1c2gocHJvcCk7CisgICAgICAgICAg
ICBpZiAocHJvcCA9PT0gU3ltYm9sLm1hdGNoKQorICAgICAgICAgICAgICAgIHJldHVybiB1bmRl
ZmluZWQ7CisgICAgICAgICAgICByZXR1cm4gdGhlVGFyZ2V0W3Byb3BdOworICAgICAgICB9Cisg
ICAgfSk7CisKKyAgICBsZXQgZm9vID0gIi9mb28vIjsKKyAgICBsZXQgdGhyZXcgPSBmYWxzZTsK
KyAgICBsZXQgcmVzdWx0ID0gZm9vLmluY2x1ZGVzKHByb3h5KTsKKyAgICBhc3NlcnQocmVzdWx0
KTsKKyAgICBhc3NlcnQocHJvcHMubGVuZ3RoID09PSA1KTsKKyAgICBhc3NlcnQocHJvcHNbMF0g
PT09IFN5bWJvbC5tYXRjaCk7CisgICAgYXNzZXJ0KHByb3BzWzFdID09PSBTeW1ib2wudG9Qcmlt
aXRpdmUpOworICAgIGFzc2VydChwcm9wc1syXSA9PT0gInRvU3RyaW5nIik7CisgICAgYXNzZXJ0
KHByb3BzWzNdID09PSAic291cmNlIik7CisgICAgYXNzZXJ0KHByb3BzWzRdID09PSAiZmxhZ3Mi
KTsKK30pOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIGxldCBwcm9wcyA9IFtdOworICAgIGxl
dCBwcm94eSA9IG5ldyBQcm94eSgvZm9vLywgeworICAgICAgICBnZXQodGhlVGFyZ2V0LCBwcm9w
KSB7CisgICAgICAgICAgICBwcm9wcy5wdXNoKHByb3ApOworICAgICAgICAgICAgaWYgKHByb3Ag
PT09IFN5bWJvbC5tYXRjaCkKKyAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkOworICAg
ICAgICAgICAgcmV0dXJuIHRoZVRhcmdldFtwcm9wXTsKKyAgICAgICAgfQorICAgIH0pOworCisg
ICAgbGV0IGZvbyA9ICIvZm9vLyI7CisgICAgbGV0IHRocmV3ID0gZmFsc2U7CisgICAgbGV0IHJl
c3VsdCA9IGZvby5zdGFydHNXaXRoKHByb3h5KTsKKyAgICBhc3NlcnQocmVzdWx0KTsKKyAgICBh
c3NlcnQocHJvcHMubGVuZ3RoID09PSA1KTsKKyAgICBhc3NlcnQocHJvcHNbMF0gPT09IFN5bWJv
bC5tYXRjaCk7CisgICAgYXNzZXJ0KHByb3BzWzFdID09PSBTeW1ib2wudG9QcmltaXRpdmUpOwor
ICAgIGFzc2VydChwcm9wc1syXSA9PT0gInRvU3RyaW5nIik7CisgICAgYXNzZXJ0KHByb3BzWzNd
ID09PSAic291cmNlIik7CisgICAgYXNzZXJ0KHByb3BzWzRdID09PSAiZmxhZ3MiKTsKK30pOwor
Cit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIGxldCBwcm9wcyA9IFtdOworICAgIGxldCBwcm94eSA9
IG5ldyBQcm94eSgvZm9vLywgeworICAgICAgICBnZXQodGhlVGFyZ2V0LCBwcm9wKSB7CisgICAg
ICAgICAgICBwcm9wcy5wdXNoKHByb3ApOworICAgICAgICAgICAgaWYgKHByb3AgPT09IFN5bWJv
bC5tYXRjaCkKKyAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkOworICAgICAgICAgICAg
cmV0dXJuIHRoZVRhcmdldFtwcm9wXTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgbGV0IGZv
byA9ICIvZm9vLyI7CisgICAgbGV0IHRocmV3ID0gZmFsc2U7CisgICAgbGV0IHJlc3VsdCA9IGZv
by5lbmRzV2l0aChwcm94eSk7CisgICAgYXNzZXJ0KHJlc3VsdCk7CisgICAgYXNzZXJ0KHByb3Bz
Lmxlbmd0aCA9PT0gNSk7CisgICAgYXNzZXJ0KHByb3BzWzBdID09PSBTeW1ib2wubWF0Y2gpOwor
ICAgIGFzc2VydChwcm9wc1sxXSA9PT0gU3ltYm9sLnRvUHJpbWl0aXZlKTsKKyAgICBhc3NlcnQo
cHJvcHNbMl0gPT09ICJ0b1N0cmluZyIpOworICAgIGFzc2VydChwcm9wc1szXSA9PT0gInNvdXJj
ZSIpOworICAgIGFzc2VydChwcm9wc1s0XSA9PT0gImZsYWdzIik7Cit9KTsKSW5kZXg6IExheW91
dFRlc3RzL2pzL3N0cmluZy1pbmNsdWRlcy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvanMvc3RyaW5nLWluY2x1ZGVzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTk4NjQy
KQorKysgTGF5b3V0VGVzdHMvanMvc3RyaW5nLWluY2x1ZGVzLWV4cGVjdGVkLnR4dAkod29ya2lu
ZyBjb3B5KQpAQCAtMTE4LDkgKzExOCw5IEBAIFBBU1MgJ2FiYycuZW5kc1dpdGgoJ2JjJywgMykg
aXMgdHJ1ZQogUEFTUyAoZnVuY3Rpb24oKSB7IHZhciBmID0gU3RyaW5nLnByb3RvdHlwZS5zdGFy
dHNXaXRoOyAoZnVuY3Rpb24oKSB7IGYoJ2EnKTsgfSkoKTsgfSkoKSB0aHJldyBleGNlcHRpb24g
VHlwZUVycm9yOiBUeXBlIGVycm9yLgogUEFTUyAoZnVuY3Rpb24oKSB7IHZhciBmID0gU3RyaW5n
LnByb3RvdHlwZS5lbmRzV2l0aDsgKGZ1bmN0aW9uKCkgeyBmKCdhJyk7IH0pKCk7IH0pKCkgdGhy
ZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KIFBBU1MgKGZ1bmN0aW9uKCkgeyB2
YXIgZiA9IFN0cmluZy5wcm90b3R5cGUuaW5jbHVkZXM7IChmdW5jdGlvbigpIHsgZignYScpOyB9
KSgpOyB9KSgpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCi1QQVNTICdm
b28gYmFyJy5zdGFydHNXaXRoKC93Ky8pIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUg
ZXJyb3IuCi1QQVNTICdmb28gYmFyJy5lbmRzV2l0aCgvdysvKSB0aHJldyBleGNlcHRpb24gVHlw
ZUVycm9yOiBUeXBlIGVycm9yLgotUEFTUyAnZm9vIGJhcicuaW5jbHVkZXMoL3crLykgdGhyZXcg
ZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KK1BBU1MgJ2ZvbyBiYXInLnN0YXJ0c1dp
dGgoL3crLykgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQXJndW1lbnQgdG8gU3RyaW5nLnBy
b3RvdHlwZS5zdGFydHNXaXRoIGNhbiBub3QgYmUgYSBSZWdFeHAuLgorUEFTUyAnZm9vIGJhcicu
ZW5kc1dpdGgoL3crLykgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQXJndW1lbnQgdG8gU3Ry
aW5nLnByb3RvdHlwZS5lbmRzV2l0aCBjYW4gbm90IGJlIGEgUmVnRXhwLi4KK1BBU1MgJ2ZvbyBi
YXInLmluY2x1ZGVzKC93Ky8pIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEFyZ3VtZW50IHRv
IFN0cmluZy5wcm90b3R5cGUuaW5jbHVkZXMgY2FuIG5vdCBiZSBhIFJlZ0V4cC4uCiBQQVNTIHN0
cmluZ1RvU2VhcmNoSW4uc3RhcnRzV2l0aChzZWFyY2hTdHJpbmcsIHN0YXJ0T2Zmc2V0KSBpcyB0
cnVlCiBQQVNTIHNpZGVFZmZlY3QgPT0gJ0FCQycgaXMgdHJ1ZQogUEFTUyBzdHJpbmdUb1NlYXJj
aEluLnN0YXJ0c1dpdGgoc2VhcmNoU3RyaW5nLCBzdGFydE9mZnNldCkgdGhyZXcgZXhjZXB0aW9u
IGVycm9yLgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>274861</attachid>
            <date>2016-03-24 15:29:25 -0700</date>
            <delta_ts>2016-03-24 15:29:25 -0700</delta_ts>
            <desc>patch for landing</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>13802</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTk4NjQzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM2IEBA
CisyMDE2LTAzLTI0ICBTYWFtIGJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IEVTNjogSW1wbGVtZW50IElzUmVnRXhwIGZ1bmN0aW9uIGFuZCB1c2Ugd2hlcmUgbmVlZGVkIGlu
IFN0cmluZy5wcm90b3R5cGUuKiBtZXRob2RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNTU4NTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGlzIGEgc3RyYWlnaHQgZm9yd2FyZCBpbXBs
ZW1lbnRhdGlvbiBvZiBJc1JlZ0V4cAorICAgICAgICBpbiB0aGUgRVM2IHNwZWM6CisgICAgICAg
IGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWlzcmVnZXhwCisgICAgICAgIFdl
IG5vdyB1c2UgdGhpcyBJc1JlZ0V4cCBmdW5jdGlvbiBpbnNpZGUgU3RyaW5nLnByb3RvdHlwZS4o
c3RhcnRzV2l0aCB8IGVuZHNXaXRoIHwgaW5jbHVkZXMpCisgICAgICAgIGFzIGlzIGRpY3RhdGVk
IGJ5IHRoZSBzcGVjLgorCisgICAgICAgICogcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5oOgor
ICAgICAgICAoSlNDOjpSZWdFeHBDb25zdHJ1Y3Rvcjo6cmVjb3JkTWF0Y2gpOgorICAgICAgICAo
SlNDOjppc1JlZ0V4cCk6CisgICAgICAgICogcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwOgor
ICAgICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNTdGFydHNXaXRoKToKKyAgICAgICAgKEpTQzo6
c3RyaW5nUHJvdG9GdW5jRW5kc1dpdGgpOgorICAgICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNJ
bmNsdWRlcyk6CisgICAgICAgICogdGVzdHMvZXM2LnlhbWw6CisgICAgICAgICogdGVzdHMvZXM2
L3dlbGwta25vd25fc3ltYm9sc19TeW1ib2wubWF0Y2hfU3RyaW5nLnByb3RvdHlwZS5lbmRzV2l0
aC5qczogQWRkZWQuCisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKiB0ZXN0cy9lczYvd2VsbC1r
bm93bl9zeW1ib2xzX1N5bWJvbC5tYXRjaF9TdHJpbmcucHJvdG90eXBlLmluY2x1ZGVzLmpzOiBB
ZGRlZC4KKyAgICAgICAgKHRlc3QpOgorICAgICAgICAqIHRlc3RzL2VzNi93ZWxsLWtub3duX3N5
bWJvbHNfU3ltYm9sLm1hdGNoX1N0cmluZy5wcm90b3R5cGUuc3RhcnRzV2l0aC5qczogQWRkZWQu
CisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3Mvc3RyaW5nLXByb3RvdHlw
ZS1tZXRob2RzLWVuZHNXaXRoLXN0YXJ0c1dpdGgtaW5jbHVkZXMtY29ycmVjdG5lc3MuanM6IEFk
ZGVkLgorICAgICAgICAoYXNzZXJ0KToKKyAgICAgICAgKHRlc3QpOgorICAgICAgICAodGVzdC5n
ZXQgbGV0KToKKyAgICAgICAgKGdldCBsZXQpOgorCiAyMDE2LTAzLTI0ICBNaWNoYWVsIFNhYm9m
ZiAgPG1zYWJvZmZAYXBwbGUuY29tPgogCiAgICAgICAgIFtFUzZdIEFkZCBQcm94eSBiYXNlZCB0
ZXN0cyBmb3IgUmVnRXhwLnByb3RvdHlwZVtAQG1hdGNoXQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5oCShyZXZpc2lvbiAxOTg2
NDIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xMzEsNiArMTMxLDIxIEBAIEFMV0FZU19JTkxJTkUgdm9pZCBS
ZWdFeHBDb25zdHJ1Y3Rvcjo6cmUKICAgICBtX2NhY2hlZFJlc3VsdC5yZWNvcmQodm0sIHRoaXMs
IHJlZ0V4cCwgc3RyaW5nLCByZXN1bHQpOwogfQogCitBTFdBWVNfSU5MSU5FIGJvb2wgaXNSZWdF
eHAoVk0mIHZtLCBFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCit7CisgICAgaWYgKCF2
YWx1ZS5pc09iamVjdCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBKU09iamVjdCog
b2JqZWN0ID0gYXNPYmplY3QodmFsdWUpOworICAgIEpTVmFsdWUgbWF0Y2hWYWx1ZSA9IG9iamVj
dC0+Z2V0KGV4ZWMsIHZtLnByb3BlcnR5TmFtZXMtPm1hdGNoU3ltYm9sKTsKKyAgICBpZiAodm0u
ZXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIW1hdGNoVmFsdWUu
aXNVbmRlZmluZWQoKSkKKyAgICAgICAgcmV0dXJuIG1hdGNoVmFsdWUudG9Cb29sZWFuKGV4ZWMp
OworCisgICAgcmV0dXJuIG9iamVjdC0+aW5oZXJpdHMoUmVnRXhwT2JqZWN0OjppbmZvKCkpOwor
fQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIFJlZ0V4cENvbnN0cnVjdG9yX2gK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90
eXBlLmNwcAkocmV2aXNpb24gMTk4NjQyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RyaW5nUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg0MCw4ICsxODQwLDEy
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG8KICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIAogICAgIEpTVmFsdWUgYTAgPSBl
eGVjLT5hcmd1bWVudCgwKTsKLSAgICBpZiAoanNEeW5hbWljQ2FzdDxSZWdFeHBPYmplY3QqPihh
MCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CisgICAgYm9vbCBpc1JlZ3VsYXJFeHByZXNzaW9uID0gaXNSZWdFeHAodm0s
IGV4ZWMsIGEwKTsKKyAgICBpZiAodm0uZXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsKKyAgICBpZiAoaXNSZWd1bGFyRXhwcmVzc2lvbikKKyAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgIkFyZ3VtZW50IHRvIFN0cmluZy5w
cm90b3R5cGUuc3RhcnRzV2l0aCBjYW4gbm90IGJlIGEgUmVnRXhwLiIpOwogCiAgICAgU3RyaW5n
IHNlYXJjaFN0cmluZyA9IGEwLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICBpZiAo
ZXhlYy0+aGFkRXhjZXB0aW9uKCkpCkBAIC0xODcyLDggKzE4NzYsMTIgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90bwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwogCiAgICAgSlNWYWx1ZSBhMCA9IGV4ZWMtPmFyZ3VtZW50KDAp
OwotICAgIGlmIChqc0R5bmFtaWNDYXN0PFJlZ0V4cE9iamVjdCo+KGEwKSkKLSAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAg
ICBib29sIGlzUmVndWxhckV4cHJlc3Npb24gPSBpc1JlZ0V4cCh2bSwgZXhlYywgYTApOworICAg
IGlmICh2bS5leGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Zh
bHVlKCkpOworICAgIGlmIChpc1JlZ3VsYXJFeHByZXNzaW9uKQorICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihleGVjLCAiQXJndW1lbnQgdG8gU3RyaW5nLnByb3RvdHlwZS5lbmRzV2l0
aCBjYW4gbm90IGJlIGEgUmVnRXhwLiIpOwogCiAgICAgU3RyaW5nIHNlYXJjaFN0cmluZyA9IGEw
LnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9u
KCkpCkBAIC0xOTA1LDggKzE5MTMsMTIgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBz
dHJpbmdQcm90bwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwogCiAgICAgSlNWYWx1ZSBhMCA9IGV4ZWMtPmFyZ3VtZW50KDApOwotICAgIGlmIChqc0R5bmFt
aWNDYXN0PFJlZ0V4cE9iamVjdCo+KGEwKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYyk7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBib29sIGlzUmVndWxhckV4
cHJlc3Npb24gPSBpc1JlZ0V4cCh2bSwgZXhlYywgYTApOworICAgIGlmICh2bS5leGNlcHRpb24o
KSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKCkpOworICAgIGlmIChp
c1JlZ3VsYXJFeHByZXNzaW9uKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
LCAiQXJndW1lbnQgdG8gU3RyaW5nLnByb3RvdHlwZS5pbmNsdWRlcyBjYW4gbm90IGJlIGEgUmVn
RXhwLiIpOwogCiAgICAgU3RyaW5nIHNlYXJjaFN0cmluZyA9IGEwLnRvU3RyaW5nKGV4ZWMpLT52
YWx1ZShleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2LnlhbWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rlc3RzL2VzNi55YW1sCShyZXZpc2lvbiAxOTg2NDIpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvdGVzdHMvZXM2LnlhbWwJKHdvcmtpbmcgY29weSkKQEAgLTEyMjAsNiArMTIy
MCwxMiBAQAogICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCiAtIHBhdGg6IGVzNi93ZWxsLWtub3duX3N5
bWJvbHNfU3ltYm9sLnRvU3RyaW5nVGFnX21pc2MuX2J1aWx0LWlucy5qcwogICBjbWQ6IHJ1bkVT
NiA6bm9ybWFsCistIHBhdGg6IGVzNi93ZWxsLWtub3duX3N5bWJvbHNfU3ltYm9sLm1hdGNoX1N0
cmluZy5wcm90b3R5cGUuc3RhcnRzV2l0aC5qcworICBjbWQ6IHJ1bkVTNiA6bm9ybWFsCistIHBh
dGg6IGVzNi93ZWxsLWtub3duX3N5bWJvbHNfU3ltYm9sLm1hdGNoX1N0cmluZy5wcm90b3R5cGUu
ZW5kc1dpdGguanMKKyAgY21kOiBydW5FUzYgOm5vcm1hbAorLSBwYXRoOiBlczYvd2VsbC1rbm93
bl9zeW1ib2xzX1N5bWJvbC5tYXRjaF9TdHJpbmcucHJvdG90eXBlLmluY2x1ZGVzLmpzCisgIGNt
ZDogcnVuRVM2IDpub3JtYWwKICMgTGF0ZS1zdGFnZSBwcm9wb3NhbHMgZm9yIGEgZnV0dXJlIEVD
TUFTY3JpcHQgc3RhbmRhcmQKICMgRklYTUU6IG1vdmUgdGhlc2UgdG8gYSBuZXcgZGlyZWN0b3J5
PwogLSBwYXRoOiBlczYvT2JqZWN0X3N0YXRpY19tZXRob2RzX09iamVjdC5nZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3JzLmpzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2L3dl
bGwta25vd25fc3ltYm9sc19TeW1ib2wubWF0Y2hfU3RyaW5nLnByb3RvdHlwZS5lbmRzV2l0aC5q
cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2L3dlbGwta25v
d25fc3ltYm9sc19TeW1ib2wubWF0Y2hfU3RyaW5nLnByb3RvdHlwZS5lbmRzV2l0aC5qcwkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYvd2VsbC1rbm93bl9z
eW1ib2xzX1N5bWJvbC5tYXRjaF9TdHJpbmcucHJvdG90eXBlLmVuZHNXaXRoLmpzCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMTIgQEAKK2Z1bmN0aW9uIHRlc3QoKSB7CisgICAgdmFyIHJlID0g
Ly4vOworICAgIHRyeSB7CisgICAgICAgICcvLi8nLmVuZHNXaXRoKHJlKTsKKyAgICB9IGNhdGNo
KGUpeworICAgICAgICByZVtTeW1ib2wubWF0Y2hdID0gZmFsc2U7CisgICAgICAgIHJldHVybiAn
Ly4vJy5lbmRzV2l0aChyZSk7CisgICAgfQorfQorCitpZiAoIXRlc3QoKSkKKyAgICB0aHJvdyBu
ZXcgRXJyb3IoIlRlc3QgZmFpbGVkIik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvZXM2L3dlbGwta25vd25fc3ltYm9sc19TeW1ib2wubWF0Y2hfU3RyaW5nLnByb3RvdHlwZS5p
bmNsdWRlcy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2
L3dlbGwta25vd25fc3ltYm9sc19TeW1ib2wubWF0Y2hfU3RyaW5nLnByb3RvdHlwZS5pbmNsdWRl
cy5qcwkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYvd2Vs
bC1rbm93bl9zeW1ib2xzX1N5bWJvbC5tYXRjaF9TdHJpbmcucHJvdG90eXBlLmluY2x1ZGVzLmpz
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTIgQEAKK2Z1bmN0aW9uIHRlc3QoKSB7CisgICAg
dmFyIHJlID0gLy4vOworICAgIHRyeSB7CisgICAgICAgICcvLi8nLmluY2x1ZGVzKHJlKTsKKyAg
ICB9IGNhdGNoKGUpeworICAgICAgICByZVtTeW1ib2wubWF0Y2hdID0gZmFsc2U7CisgICAgICAg
IHJldHVybiAnLy4vJy5pbmNsdWRlcyhyZSk7CisgICAgfQorfQorCitpZiAoIXRlc3QoKSkKKyAg
ICB0aHJvdyBuZXcgRXJyb3IoIlRlc3QgZmFpbGVkIik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvZXM2L3dlbGwta25vd25fc3ltYm9sc19TeW1ib2wubWF0Y2hfU3RyaW5nLnBy
b3RvdHlwZS5zdGFydHNXaXRoLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9lczYvd2VsbC1rbm93bl9zeW1ib2xzX1N5bWJvbC5tYXRjaF9TdHJpbmcucHJvdG90
eXBlLnN0YXJ0c1dpdGguanMJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
dGVzdHMvZXM2L3dlbGwta25vd25fc3ltYm9sc19TeW1ib2wubWF0Y2hfU3RyaW5nLnByb3RvdHlw
ZS5zdGFydHNXaXRoLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTIgQEAKK2Z1bmN0aW9u
IHRlc3QoKSB7CisgICAgdmFyIHJlID0gLy4vOworICAgIHRyeSB7CisgICAgICAgICcvLi8nLnN0
YXJ0c1dpdGgocmUpOworICAgIH0gY2F0Y2goZSl7CisgICAgICAgIHJlW1N5bWJvbC5tYXRjaF0g
PSBmYWxzZTsKKyAgICAgICAgcmV0dXJuICcvLi8nLnN0YXJ0c1dpdGgocmUpOworICAgIH0KK30K
KworaWYgKCF0ZXN0KCkpCisgICAgdGhyb3cgbmV3IEVycm9yKCJUZXN0IGZhaWxlZCIpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9zdHJpbmctcHJvdG90eXBlLW1l
dGhvZHMtZW5kc1dpdGgtc3RhcnRzV2l0aC1pbmNsdWRlcy1jb3JyZWN0bmVzcy5qcwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3N0cmluZy1wcm90b3R5
cGUtbWV0aG9kcy1lbmRzV2l0aC1zdGFydHNXaXRoLWluY2x1ZGVzLWNvcnJlY3RuZXNzLmpzCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9zdHJpbmct
cHJvdG90eXBlLW1ldGhvZHMtZW5kc1dpdGgtc3RhcnRzV2l0aC1pbmNsdWRlcy1jb3JyZWN0bmVz
cy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE4MCBAQAorZnVuY3Rpb24gYXNzZXJ0KGIp
IHsKKyAgICBpZiAoIWIpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiQmFkIGFzc2VydGlvbiEi
KTsKK30KKworZnVuY3Rpb24gdGVzdChmKSB7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCA1MDA7
IGkrKykKKyAgICAgICAgZigpOworfQorCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIGxldCBmb28g
PSAiaGVsbG8iOworICAgIGxldCB0aHJldyA9IGZhbHNlOworICAgIHRyeSB7CisgICAgICAgIGZv
by5lbmRzV2l0aCgvZm9vLyk7CisgICAgfSBjYXRjaChlKSB7CisgICAgICAgIGFzc2VydChlLnRv
U3RyaW5nKCkgPT09ICJUeXBlRXJyb3I6IEFyZ3VtZW50IHRvIFN0cmluZy5wcm90b3R5cGUuZW5k
c1dpdGggY2FuIG5vdCBiZSBhIFJlZ0V4cC4iKTsKKyAgICAgICAgdGhyZXcgPSB0cnVlOworICAg
IH0KKyAgICBhc3NlcnQodGhyZXcpOworfSk7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgbGV0
IGZvbyA9ICJoZWxsbyI7CisgICAgbGV0IHRocmV3ID0gZmFsc2U7CisgICAgdHJ5IHsKKyAgICAg
ICAgZm9vLnN0YXJ0c1dpdGgoL2Zvby8pOworICAgIH0gY2F0Y2goZSkgeworICAgICAgICBhc3Nl
cnQoZS50b1N0cmluZygpID09PSAiVHlwZUVycm9yOiBBcmd1bWVudCB0byBTdHJpbmcucHJvdG90
eXBlLnN0YXJ0c1dpdGggY2FuIG5vdCBiZSBhIFJlZ0V4cC4iKTsKKyAgICAgICAgdGhyZXcgPSB0
cnVlOworICAgIH0KKyAgICBhc3NlcnQodGhyZXcpOworfSk7CisKK3Rlc3QoZnVuY3Rpb24oKSB7
CisgICAgbGV0IGZvbyA9ICJoZWxsbyI7CisgICAgbGV0IHRocmV3ID0gZmFsc2U7CisgICAgdHJ5
IHsKKyAgICAgICAgZm9vLmluY2x1ZGVzKC9mb28vKTsKKyAgICB9IGNhdGNoKGUpIHsKKyAgICAg
ICAgYXNzZXJ0KGUudG9TdHJpbmcoKSA9PT0gIlR5cGVFcnJvcjogQXJndW1lbnQgdG8gU3RyaW5n
LnByb3RvdHlwZS5pbmNsdWRlcyBjYW4gbm90IGJlIGEgUmVnRXhwLiIpOworICAgICAgICB0aHJl
dyA9IHRydWU7CisgICAgfQorICAgIGFzc2VydCh0aHJldyk7Cit9KTsKKwordGVzdChmdW5jdGlv
bigpIHsKKyAgICBsZXQgcHJvcHMgPSBbXTsKKyAgICBsZXQgcHJveHkgPSBuZXcgUHJveHkoL2Zv
by8sIHsKKyAgICAgICAgZ2V0KHRoZVRhcmdldCwgcHJvcCkgeworICAgICAgICAgICAgcHJvcHMu
cHVzaChwcm9wKTsKKyAgICAgICAgICAgIHJldHVybiB0aGVUYXJnZXRbcHJvcF07CisgICAgICAg
IH0KKyAgICB9KTsKKworICAgIGxldCBmb28gPSAiaGVsbG8iOworICAgIGxldCB0aHJldyA9IGZh
bHNlOworICAgIHRyeSB7CisgICAgICAgIGZvby5lbmRzV2l0aChwcm94eSk7CisgICAgfSBjYXRj
aChlKSB7CisgICAgICAgIGFzc2VydChlLnRvU3RyaW5nKCkgPT09ICJUeXBlRXJyb3I6IEFyZ3Vt
ZW50IHRvIFN0cmluZy5wcm90b3R5cGUuZW5kc1dpdGggY2FuIG5vdCBiZSBhIFJlZ0V4cC4iKTsK
KyAgICAgICAgdGhyZXcgPSB0cnVlOworICAgIH0KKyAgICBhc3NlcnQodGhyZXcpOworICAgIGFz
c2VydChwcm9wcy5sZW5ndGggPT09IDEpOworICAgIGFzc2VydChwcm9wc1swXSA9PT0gU3ltYm9s
Lm1hdGNoKTsKK30pOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIGxldCBwcm9wcyA9IFtdOwor
ICAgIGxldCBwcm94eSA9IG5ldyBQcm94eSgvZm9vLywgeworICAgICAgICBnZXQodGhlVGFyZ2V0
LCBwcm9wKSB7CisgICAgICAgICAgICBwcm9wcy5wdXNoKHByb3ApOworICAgICAgICAgICAgcmV0
dXJuIHRoZVRhcmdldFtwcm9wXTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgbGV0IGZvbyA9
ICJoZWxsbyI7CisgICAgbGV0IHRocmV3ID0gZmFsc2U7CisgICAgdHJ5IHsKKyAgICAgICAgZm9v
LnN0YXJ0c1dpdGgocHJveHkpOworICAgIH0gY2F0Y2goZSkgeworICAgICAgICBhc3NlcnQoZS50
b1N0cmluZygpID09PSAiVHlwZUVycm9yOiBBcmd1bWVudCB0byBTdHJpbmcucHJvdG90eXBlLnN0
YXJ0c1dpdGggY2FuIG5vdCBiZSBhIFJlZ0V4cC4iKTsKKyAgICAgICAgdGhyZXcgPSB0cnVlOwor
ICAgIH0KKyAgICBhc3NlcnQodGhyZXcpOworICAgIGFzc2VydChwcm9wcy5sZW5ndGggPT09IDEp
OworICAgIGFzc2VydChwcm9wc1swXSA9PT0gU3ltYm9sLm1hdGNoKTsKK30pOworCit0ZXN0KGZ1
bmN0aW9uKCkgeworICAgIGxldCBwcm9wcyA9IFtdOworICAgIGxldCBwcm94eSA9IG5ldyBQcm94
eSgvZm9vLywgeworICAgICAgICBnZXQodGhlVGFyZ2V0LCBwcm9wKSB7CisgICAgICAgICAgICBw
cm9wcy5wdXNoKHByb3ApOworICAgICAgICAgICAgcmV0dXJuIHRoZVRhcmdldFtwcm9wXTsKKyAg
ICAgICAgfQorICAgIH0pOworCisgICAgbGV0IGZvbyA9ICJoZWxsbyI7CisgICAgbGV0IHRocmV3
ID0gZmFsc2U7CisgICAgdHJ5IHsKKyAgICAgICAgZm9vLmluY2x1ZGVzKHByb3h5KTsKKyAgICB9
IGNhdGNoKGUpIHsKKyAgICAgICAgYXNzZXJ0KGUudG9TdHJpbmcoKSA9PT0gIlR5cGVFcnJvcjog
QXJndW1lbnQgdG8gU3RyaW5nLnByb3RvdHlwZS5pbmNsdWRlcyBjYW4gbm90IGJlIGEgUmVnRXhw
LiIpOworICAgICAgICB0aHJldyA9IHRydWU7CisgICAgfQorICAgIGFzc2VydCh0aHJldyk7Cisg
ICAgYXNzZXJ0KHByb3BzLmxlbmd0aCA9PT0gMSk7CisgICAgYXNzZXJ0KHByb3BzWzBdID09PSBT
eW1ib2wubWF0Y2gpOworfSk7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgbGV0IHByb3BzID0g
W107CisgICAgbGV0IHByb3h5ID0gbmV3IFByb3h5KC9mb28vLCB7CisgICAgICAgIGdldCh0aGVU
YXJnZXQsIHByb3ApIHsKKyAgICAgICAgICAgIHByb3BzLnB1c2gocHJvcCk7CisgICAgICAgICAg
ICBpZiAocHJvcCA9PT0gU3ltYm9sLm1hdGNoKQorICAgICAgICAgICAgICAgIHJldHVybiB1bmRl
ZmluZWQ7CisgICAgICAgICAgICByZXR1cm4gdGhlVGFyZ2V0W3Byb3BdOworICAgICAgICB9Cisg
ICAgfSk7CisKKyAgICBsZXQgZm9vID0gIi9mb28vIjsKKyAgICBsZXQgdGhyZXcgPSBmYWxzZTsK
KyAgICBsZXQgcmVzdWx0ID0gZm9vLmluY2x1ZGVzKHByb3h5KTsKKyAgICBhc3NlcnQocmVzdWx0
KTsKKyAgICBhc3NlcnQocHJvcHMubGVuZ3RoID09PSA1KTsKKyAgICBhc3NlcnQocHJvcHNbMF0g
PT09IFN5bWJvbC5tYXRjaCk7CisgICAgYXNzZXJ0KHByb3BzWzFdID09PSBTeW1ib2wudG9Qcmlt
aXRpdmUpOworICAgIGFzc2VydChwcm9wc1syXSA9PT0gInRvU3RyaW5nIik7CisgICAgYXNzZXJ0
KHByb3BzWzNdID09PSAic291cmNlIik7CisgICAgYXNzZXJ0KHByb3BzWzRdID09PSAiZmxhZ3Mi
KTsKK30pOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIGxldCBwcm9wcyA9IFtdOworICAgIGxl
dCBwcm94eSA9IG5ldyBQcm94eSgvZm9vLywgeworICAgICAgICBnZXQodGhlVGFyZ2V0LCBwcm9w
KSB7CisgICAgICAgICAgICBwcm9wcy5wdXNoKHByb3ApOworICAgICAgICAgICAgaWYgKHByb3Ag
PT09IFN5bWJvbC5tYXRjaCkKKyAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkOworICAg
ICAgICAgICAgcmV0dXJuIHRoZVRhcmdldFtwcm9wXTsKKyAgICAgICAgfQorICAgIH0pOworCisg
ICAgbGV0IGZvbyA9ICIvZm9vLyI7CisgICAgbGV0IHRocmV3ID0gZmFsc2U7CisgICAgbGV0IHJl
c3VsdCA9IGZvby5zdGFydHNXaXRoKHByb3h5KTsKKyAgICBhc3NlcnQocmVzdWx0KTsKKyAgICBh
c3NlcnQocHJvcHMubGVuZ3RoID09PSA1KTsKKyAgICBhc3NlcnQocHJvcHNbMF0gPT09IFN5bWJv
bC5tYXRjaCk7CisgICAgYXNzZXJ0KHByb3BzWzFdID09PSBTeW1ib2wudG9QcmltaXRpdmUpOwor
ICAgIGFzc2VydChwcm9wc1syXSA9PT0gInRvU3RyaW5nIik7CisgICAgYXNzZXJ0KHByb3BzWzNd
ID09PSAic291cmNlIik7CisgICAgYXNzZXJ0KHByb3BzWzRdID09PSAiZmxhZ3MiKTsKK30pOwor
Cit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIGxldCBwcm9wcyA9IFtdOworICAgIGxldCBwcm94eSA9
IG5ldyBQcm94eSgvZm9vLywgeworICAgICAgICBnZXQodGhlVGFyZ2V0LCBwcm9wKSB7CisgICAg
ICAgICAgICBwcm9wcy5wdXNoKHByb3ApOworICAgICAgICAgICAgaWYgKHByb3AgPT09IFN5bWJv
bC5tYXRjaCkKKyAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkOworICAgICAgICAgICAg
cmV0dXJuIHRoZVRhcmdldFtwcm9wXTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgbGV0IGZv
byA9ICIvZm9vLyI7CisgICAgbGV0IHRocmV3ID0gZmFsc2U7CisgICAgbGV0IHJlc3VsdCA9IGZv
by5lbmRzV2l0aChwcm94eSk7CisgICAgYXNzZXJ0KHJlc3VsdCk7CisgICAgYXNzZXJ0KHByb3Bz
Lmxlbmd0aCA9PT0gNSk7CisgICAgYXNzZXJ0KHByb3BzWzBdID09PSBTeW1ib2wubWF0Y2gpOwor
ICAgIGFzc2VydChwcm9wc1sxXSA9PT0gU3ltYm9sLnRvUHJpbWl0aXZlKTsKKyAgICBhc3NlcnQo
cHJvcHNbMl0gPT09ICJ0b1N0cmluZyIpOworICAgIGFzc2VydChwcm9wc1szXSA9PT0gInNvdXJj
ZSIpOworICAgIGFzc2VydChwcm9wc1s0XSA9PT0gImZsYWdzIik7Cit9KTsKSW5kZXg6IExheW91
dFRlc3RzL2pzL3N0cmluZy1pbmNsdWRlcy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvanMvc3RyaW5nLWluY2x1ZGVzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTk4NjQy
KQorKysgTGF5b3V0VGVzdHMvanMvc3RyaW5nLWluY2x1ZGVzLWV4cGVjdGVkLnR4dAkod29ya2lu
ZyBjb3B5KQpAQCAtMTE4LDkgKzExOCw5IEBAIFBBU1MgJ2FiYycuZW5kc1dpdGgoJ2JjJywgMykg
aXMgdHJ1ZQogUEFTUyAoZnVuY3Rpb24oKSB7IHZhciBmID0gU3RyaW5nLnByb3RvdHlwZS5zdGFy
dHNXaXRoOyAoZnVuY3Rpb24oKSB7IGYoJ2EnKTsgfSkoKTsgfSkoKSB0aHJldyBleGNlcHRpb24g
VHlwZUVycm9yOiBUeXBlIGVycm9yLgogUEFTUyAoZnVuY3Rpb24oKSB7IHZhciBmID0gU3RyaW5n
LnByb3RvdHlwZS5lbmRzV2l0aDsgKGZ1bmN0aW9uKCkgeyBmKCdhJyk7IH0pKCk7IH0pKCkgdGhy
ZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KIFBBU1MgKGZ1bmN0aW9uKCkgeyB2
YXIgZiA9IFN0cmluZy5wcm90b3R5cGUuaW5jbHVkZXM7IChmdW5jdGlvbigpIHsgZignYScpOyB9
KSgpOyB9KSgpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCi1QQVNTICdm
b28gYmFyJy5zdGFydHNXaXRoKC93Ky8pIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUg
ZXJyb3IuCi1QQVNTICdmb28gYmFyJy5lbmRzV2l0aCgvdysvKSB0aHJldyBleGNlcHRpb24gVHlw
ZUVycm9yOiBUeXBlIGVycm9yLgotUEFTUyAnZm9vIGJhcicuaW5jbHVkZXMoL3crLykgdGhyZXcg
ZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KK1BBU1MgJ2ZvbyBiYXInLnN0YXJ0c1dp
dGgoL3crLykgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQXJndW1lbnQgdG8gU3RyaW5nLnBy
b3RvdHlwZS5zdGFydHNXaXRoIGNhbiBub3QgYmUgYSBSZWdFeHAuLgorUEFTUyAnZm9vIGJhcicu
ZW5kc1dpdGgoL3crLykgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQXJndW1lbnQgdG8gU3Ry
aW5nLnByb3RvdHlwZS5lbmRzV2l0aCBjYW4gbm90IGJlIGEgUmVnRXhwLi4KK1BBU1MgJ2ZvbyBi
YXInLmluY2x1ZGVzKC93Ky8pIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEFyZ3VtZW50IHRv
IFN0cmluZy5wcm90b3R5cGUuaW5jbHVkZXMgY2FuIG5vdCBiZSBhIFJlZ0V4cC4uCiBQQVNTIHN0
cmluZ1RvU2VhcmNoSW4uc3RhcnRzV2l0aChzZWFyY2hTdHJpbmcsIHN0YXJ0T2Zmc2V0KSBpcyB0
cnVlCiBQQVNTIHNpZGVFZmZlY3QgPT0gJ0FCQycgaXMgdHJ1ZQogUEFTUyBzdHJpbmdUb1NlYXJj
aEluLnN0YXJ0c1dpdGgoc2VhcmNoU3RyaW5nLCBzdGFydE9mZnNldCkgdGhyZXcgZXhjZXB0aW9u
IGVycm9yLgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>