<?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>141183</bug_id>
          
          <creation_ts>2015-02-02 17:03:33 -0800</creation_ts>
          <short_desc>arguments[-1] should have well-defined behavior</short_desc>
          <delta_ts>2015-02-02 23:27:27 -0800</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>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>
          <dependson>141193</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenb</cc>
    
    <cc>mmirman</cc>
    
    <cc>msaboff</cc>
    
    <cc>nrotem</cc>
    
    <cc>oliver</cc>
    
    <cc>saam</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1066297</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-02-02 17:03:33 -0800</bug_when>
    <thetext>Currently it returns &quot;this&quot; or garbage.  That&apos;s bad.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1066314</commentid>
    <comment_count>1</comment_count>
      <attachid>245916</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-02-02 18:23:01 -0800</bug_when>
    <thetext>Created attachment 245916
work in progress

This fixes all of the 64-bit paths.  Still need to do 32-bit DFG.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1066315</commentid>
    <comment_count>2</comment_count>
      <attachid>245917</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-02-02 18:48:40 -0800</bug_when>
    <thetext>Created attachment 245917
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1066317</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-02-02 18:51:28 -0800</bug_when>
    <thetext>Attachment 245917 did not pass style-queue:


ERROR: Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp:2007:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 1 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1066318</commentid>
    <comment_count>4</comment_count>
      <attachid>245918</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-02-02 18:53:07 -0800</bug_when>
    <thetext>Created attachment 245918
the patch

Fix style and the wording of the ChangeLog</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1066326</commentid>
    <comment_count>5</comment_count>
      <attachid>245918</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-02-02 19:31:55 -0800</bug_when>
    <thetext>Comment on attachment 245918
the patch

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

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:4356
&gt;                      Imm32(node-&gt;origin.semantic.inlineCallFrame-&gt;arguments.size())));

I think you need to -1 from arguments.size() here.

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:4400
&gt; +                m_jit.offsetOfArgumentsIncludingThis(node-&gt;origin.semantic) + OBJECT_OFFSETOF(EncodedValueDescriptor, asBits.tag) + sizeof(EncodedJSValue)),

Per our offline discussion, change offsetOfArgumentsIncludingThis() into offsetOfArguments() and hence, no need for the &quot;+ sizeof(EncodedJSValue))&quot; thereafter.

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:4432
&gt;                      Imm32(node-&gt;origin.semantic.inlineCallFrame-&gt;arguments.size())));

Ditto.  Need to -1 from arguments.size() here.

&gt; Source/JavaScriptCore/jit/JITOpcodes32_64.cpp:1053
&gt; +    loadPtr(BaseIndex(callFrameRegister, regT2, TimesEight, OBJECT_OFFSETOF(JSValue, u.asBits.payload) + CallFrame::thisArgumentOffset() * static_cast&lt;int&gt;(sizeof(Register)) + sizeof(Register)), regT0);
&gt; +    loadPtr(BaseIndex(callFrameRegister, regT2, TimesEight, OBJECT_OFFSETOF(JSValue, u.asBits.tag) + CallFrame::thisArgumentOffset() * static_cast&lt;int&gt;(sizeof(Register)) + sizeof(Register)), regT1);

Instead of CallFrame::thisArgumentOffset(), you can use CallFrame::argumentOffset(0) here, and do away with the &quot;+ sizeof(Register)&quot; adjustments.

&gt; Source/JavaScriptCore/jit/JITOpcodes.cpp:928
&gt; +    load64(BaseIndex(callFrameRegister, regT1, TimesEight, CallFrame::thisArgumentOffset() * static_cast&lt;int&gt;(sizeof(Register)) + sizeof(Register)), regT0);

Ditto.  Use CallFrame::argumentOffset(0) and remove adjustment.

&gt; Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm:1621
&gt; +    loadi ThisArgumentOffset + 8 + TagOffset[cfr, t2, 8], t0
&gt; +    loadi ThisArgumentOffset + 8 + PayloadOffset[cfr, t2, 8], t1

I think it&apos;ll be clearer if you define a FirstArgumentOffset in LowLevelInterpreter.asm, and use that here instead of using ThisArgumentOffset + 8.

&gt; Source/JavaScriptCore/llint/LowLevelInterpreter64.asm:1480
&gt; +    loadq ThisArgumentOffset + 8[cfr, t2, 8], t0

Ditto.  Use FirstArgumentOffset.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1066330</commentid>
    <comment_count>6</comment_count>
      <attachid>245920</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-02-02 19:52:48 -0800</bug_when>
    <thetext>Created attachment 245920
the patch

Address Mark&apos;s comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1066342</commentid>
    <comment_count>7</comment_count>
      <attachid>245920</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-02-02 20:25:01 -0800</bug_when>
    <thetext>Comment on attachment 245920
the patch

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

&gt; Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm:1617
&gt; +    subi 1, t2

Shouldn&apos;t this be t1?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1066343</commentid>
    <comment_count>8</comment_count>
      <attachid>245920</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-02-02 20:30:35 -0800</bug_when>
    <thetext>Comment on attachment 245920
the patch

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

&gt;&gt; Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm:1617
&gt;&gt; +    subi 1, t2
&gt; 
&gt; Shouldn&apos;t this be t1?

Yes. :-)  I just fixed that locally.  Magically, tests started passing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1066345</commentid>
    <comment_count>9</comment_count>
      <attachid>245920</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-02-02 20:32:31 -0800</bug_when>
    <thetext>Comment on attachment 245920
the patch

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

r=me with remaining issues addressed.

&gt; Source/JavaScriptCore/jit/AssemblyHelpers.h:609
&gt; +            return CallFrame::argumentOffsetIncludingThis(1) * sizeof(Register);

You can make this CallFrame::argumentOffset(0) instead of CallFrame::argumentOffsetIncludingThis(1).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1066346</commentid>
    <comment_count>10</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-02-02 20:36:01 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; Comment on attachment 245920 [details]
&gt; the patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=245920&amp;action=review
&gt; 
&gt; r=me with remaining issues addressed.
&gt; 
&gt; &gt; Source/JavaScriptCore/jit/AssemblyHelpers.h:609
&gt; &gt; +            return CallFrame::argumentOffsetIncludingThis(1) * sizeof(Register);
&gt; 
&gt; You can make this CallFrame::argumentOffset(0) instead of
&gt; CallFrame::argumentOffsetIncludingThis(1).

Thanks for the feedback, I just made this change locally.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1066357</commentid>
    <comment_count>11</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-02-02 21:21:23 -0800</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/179538</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>245916</attachid>
            <date>2015-02-02 18:23:01 -0800</date>
            <delta_ts>2015-02-02 18:48:40 -0800</delta_ts>
            <desc>work in progress</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>12379</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDY0LmNwcAkocmV2aXNpb24gMTc5NTMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDM5NCwyMSArNDM5NCwx
OSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAg
ICAgICAgICAgICAgICBtX2ppdC5ncmFwaCgpLm1hY2hpbmVBcmd1bWVudHNSZWdpc3RlckZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpKSkpOwogICAgICAgICB9CiAKLSAgICAgICAgbV9qaXQuYWRk
MzIoVHJ1c3RlZEltbTMyKDEpLCBpbmRleEdQUiwgcmVzdWx0R1BSKTsKICAgICAgICAgaWYgKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWUpIHsKICAgICAgICAgICAgIHNwZWN1
bGF0aW9uQ2hlY2soCiAgICAgICAgICAgICAgICAgVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCks
IDAsCiAgICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoMzIoCiAgICAgICAgICAgICAgICAgICAg
IEpJVENvbXBpbGVyOjpBYm92ZU9yRXF1YWwsCi0gICAgICAgICAgICAgICAgICAgIHJlc3VsdEdQ
UiwKLSAgICAgICAgICAgICAgICAgICAgSW1tMzIobm9kZS0+b3JpZ2luLnNlbWFudGljLmlubGlu
ZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKSkpKTsKKyAgICAgICAgICAgICAgICAgICAgaW5k
ZXhHUFIsCisgICAgICAgICAgICAgICAgICAgIEltbTMyKG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5p
bmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCkgLSAxKSkpOwogICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpwYXlsb2FkRm9yKEpTU3Rh
Y2s6OkFyZ3VtZW50Q291bnQpLCByZXN1bHRHUFIpOworICAgICAgICAgICAgbV9qaXQuc3ViMzIo
VHJ1c3RlZEltbTMyKDEpLCByZXN1bHRHUFIpOwogICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVj
aygKICAgICAgICAgICAgICAgICBVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgMCwKLSAgICAg
ICAgICAgICAgICBtX2ppdC5icmFuY2gzMigKLSAgICAgICAgICAgICAgICAgICAgSklUQ29tcGls
ZXI6OkFib3ZlT3JFcXVhbCwKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0R1BSLAotICAgICAg
ICAgICAgICAgICAgICBKSVRDb21waWxlcjo6cGF5bG9hZEZvcihKU1N0YWNrOjpBcmd1bWVudENv
dW50KSkpOworICAgICAgICAgICAgICAgIG1faml0LmJyYW5jaDMyKEpJVENvbXBpbGVyOjpBYm92
ZU9yRXF1YWwsIGluZGV4R1BSLCByZXN1bHRHUFIpKTsKICAgICAgICAgfQogCiAgICAgICAgIEpJ
VENvbXBpbGVyOjpKdW1wTGlzdCBzbG93QXJndW1lbnQ7CkBAIC00NDM4LDExICs0NDM2LDkgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICB9CiAgICAg
ICAgIHNsb3dBcmd1bWVudE91dE9mQm91bmRzLmxpbmsoJm1faml0KTsKIAotICAgICAgICBtX2pp
dC5zaWduRXh0ZW5kMzJUb1B0cihyZXN1bHRHUFIsIHJlc3VsdEdQUik7Ci0gICAgICAgICAgICAK
ICAgICAgICAgbV9qaXQubG9hZDY0KAogICAgICAgICAgICAgSklUQ29tcGlsZXI6OkJhc2VJbmRl
eCgKLSAgICAgICAgICAgICAgICBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgcmVzdWx0R1BS
LCBKSVRDb21waWxlcjo6VGltZXNFaWdodCwgbV9qaXQub2Zmc2V0T2ZBcmd1bWVudHNJbmNsdWRp
bmdUaGlzKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLAorICAgICAgICAgICAgICAgIEdQUkluZm86
OmNhbGxGcmFtZVJlZ2lzdGVyLCBpbmRleEdQUiwgSklUQ29tcGlsZXI6OlRpbWVzRWlnaHQsIG1f
aml0Lm9mZnNldE9mQXJndW1lbnRzSW5jbHVkaW5nVGhpcyhub2RlLT5vcmlnaW4uc2VtYW50aWMp
ICsgc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSksCiAgICAgICAgICAgICByZXN1bHRHUFIpOwogCiAg
ICAgICAgIHNsb3dBcmd1bWVudC5saW5rKCZtX2ppdCk7CkBAIC00NDYzLDE5ICs0NDU5LDE3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgICAg
ICBKSVRDb21waWxlcjo6YWRkcmVzc0ZvcigKICAgICAgICAgICAgICAgICAgICAgbV9qaXQuZ3Jh
cGgoKS5tYWNoaW5lQXJndW1lbnRzUmVnaXN0ZXJGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSkp
KTsKICAgICAgICAgCi0gICAgICAgIG1faml0LmFkZDMyKFRydXN0ZWRJbW0zMigxKSwgaW5kZXhH
UFIsIHJlc3VsdEdQUik7CiAgICAgICAgIGlmIChub2RlLT5vcmlnaW4uc2VtYW50aWMuaW5saW5l
Q2FsbEZyYW1lKSB7CiAgICAgICAgICAgICBzbG93UGF0aC5hcHBlbmQoCiAgICAgICAgICAgICAg
ICAgbV9qaXQuYnJhbmNoMzIoCiAgICAgICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpBYm92
ZU9yRXF1YWwsCiAgICAgICAgICAgICAgICAgICAgIHJlc3VsdEdQUiwKLSAgICAgICAgICAgICAg
ICAgICAgSW1tMzIobm9kZS0+b3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxGcmFtZS0+YXJndW1l
bnRzLnNpemUoKSkpKTsKKyAgICAgICAgICAgICAgICAgICAgSW1tMzIobm9kZS0+b3JpZ2luLnNl
bWFudGljLmlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKSAtIDEpKSk7CiAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OnBheWxvYWRG
b3IoSlNTdGFjazo6QXJndW1lbnRDb3VudCksIHJlc3VsdEdQUik7CisgICAgICAgICAgICBtX2pp
dC5zdWIzMihUcnVzdGVkSW1tMzIoMSksIHJlc3VsdEdQUik7CiAgICAgICAgICAgICBzbG93UGF0
aC5hcHBlbmQoCi0gICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoMzIoCi0gICAgICAgICAgICAg
ICAgICAgIEpJVENvbXBpbGVyOjpBYm92ZU9yRXF1YWwsCi0gICAgICAgICAgICAgICAgICAgIHJl
c3VsdEdQUiwKLSAgICAgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6OnBheWxvYWRGb3IoSlNT
dGFjazo6QXJndW1lbnRDb3VudCkpKTsKKyAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2gzMihK
SVRDb21waWxlcjo6QWJvdmVPckVxdWFsLCBpbmRleEdQUiwgcmVzdWx0R1BSKSk7CiAgICAgICAg
IH0KICAgICAgICAgCiAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93QXJndW1lbnQ7
CkBAIC00NTA1LDExICs0NDk5LDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2Rl
KiBub2RlKQogICAgICAgICB9CiAgICAgICAgIHNsb3dBcmd1bWVudE91dE9mQm91bmRzLmxpbmso
Jm1faml0KTsKIAotICAgICAgICBtX2ppdC5zaWduRXh0ZW5kMzJUb1B0cihyZXN1bHRHUFIsIHJl
c3VsdEdQUik7Ci0gICAgICAgIAogICAgICAgICBtX2ppdC5sb2FkNjQoCiAgICAgICAgICAgICBK
SVRDb21waWxlcjo6QmFzZUluZGV4KAotICAgICAgICAgICAgICAgIEdQUkluZm86OmNhbGxGcmFt
ZVJlZ2lzdGVyLCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpUaW1lc0VpZ2h0LCBtX2ppdC5vZmZz
ZXRPZkFyZ3VtZW50c0luY2x1ZGluZ1RoaXMobm9kZS0+b3JpZ2luLnNlbWFudGljKSksCisgICAg
ICAgICAgICAgICAgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIGluZGV4R1BSLCBKSVRDb21w
aWxlcjo6VGltZXNFaWdodCwgbV9qaXQub2Zmc2V0T2ZBcmd1bWVudHNJbmNsdWRpbmdUaGlzKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYykgKyBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKSwKICAgICAgICAg
ICAgIHJlc3VsdEdQUik7CiAgICAgICAgIAogICAgICAgICBpZiAobm9kZS0+b3JpZ2luLnNlbWFu
dGljLmlubGluZUNhbGxGcmFtZSkgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExMb3dlckRGR1RvTExWTS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAJKHJldmlzaW9uIDE3OTUzMSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xOTk3LDE2ICsxOTk3LDE1IEBAIHByaXZhdGU6CiAgICAgICAgIAogICAgICAgICBDb2RlT3Jp
Z2luIGNvZGVPcmlnaW4gPSBtX25vZGUtPm9yaWdpbi5zZW1hbnRpYzsKICAgICAgICAgCi0gICAg
ICAgIExWYWx1ZSB6ZXJvQmFzZWRJbmRleCA9IGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQxKCkpOwot
ICAgICAgICBMVmFsdWUgb25lQmFzZWRJbmRleCA9IG1fb3V0LmFkZCh6ZXJvQmFzZWRJbmRleCwg
bV9vdXQuaW50MzJPbmUpOworICAgICAgICBMVmFsdWUgaW5kZXggPSBsb3dJbnQzMihtX25vZGUt
PmNoaWxkMSgpKTsKICAgICAgICAgCiAgICAgICAgIExWYWx1ZSBsaW1pdDsKICAgICAgICAgaWYg
KGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lKQotICAgICAgICAgICAgbGltaXQgPSBtX291dC5j
b25zdEludDMyKGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgpKTsK
KyAgICAgICAgICAgIGxpbWl0ID0gbV9vdXQuY29uc3RJbnQzMihjb2RlT3JpZ2luLmlubGluZUNh
bGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKSAtIDEpOwogICAgICAgICBlbHNlCi0gICAgICAgICAg
ICBsaW1pdCA9IG1fb3V0LmxvYWQzMihwYXlsb2FkRm9yKEpTU3RhY2s6OkFyZ3VtZW50Q291bnQp
KTsKLSAgICAgICAgCi0gICAgICAgIHNwZWN1bGF0ZShVbmNvdW50YWJsZSwgbm9WYWx1ZSgpLCAw
LCBtX291dC5hYm92ZU9yRXF1YWwob25lQmFzZWRJbmRleCwgbGltaXQpKTsKKyAgICAgICAgICAg
IGxpbWl0ID0gbV9vdXQuc3ViKG1fb3V0LmxvYWQzMihwYXlsb2FkRm9yKEpTU3RhY2s6OkFyZ3Vt
ZW50Q291bnQpKSwgbV9vdXQuaW50MzJPbmUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgCisgICAgICAgIHNwZWN1bGF0ZShVbmNvdW50YWJsZSwgbm9WYWx1ZSgpLCAwLCBtX291dC5h
Ym92ZU9yRXF1YWwoaW5kZXgsIGxpbWl0KSk7CiAgICAgICAgIAogICAgICAgICBTeW1ib2xUYWJs
ZSogc3ltYm9sVGFibGUgPSBtX2dyYXBoLmJhc2VsaW5lQ29kZUJsb2NrRm9yKGNvZGVPcmlnaW4p
LT5zeW1ib2xUYWJsZSgpOwogICAgICAgICBpZiAoc3ltYm9sVGFibGUtPnNsb3dBcmd1bWVudHMo
KSkgewpAQCAtMjAzMiw3ICsyMDMxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJhc2UgPSBh
ZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KDEpKTsKICAgICAgICAgCiAgICAg
ICAgIExWYWx1ZSBwb2ludGVyID0gbV9vdXQuYmFzZUluZGV4KAotICAgICAgICAgICAgYmFzZS52
YWx1ZSgpLCBtX291dC56ZXJvRXh0KHplcm9CYXNlZEluZGV4LCBtX291dC5pbnRQdHIpLCBTY2Fs
ZUVpZ2h0KTsKKyAgICAgICAgICAgIGJhc2UudmFsdWUoKSwgbV9vdXQuemVyb0V4dChpbmRleCwg
bV9vdXQuaW50UHRyKSwgU2NhbGVFaWdodCk7CiAgICAgICAgIHNldEpTVmFsdWUobV9vdXQubG9h
ZDY0KFR5cGVkUG9pbnRlcihtX2hlYXBzLnZhcmlhYmxlcy5hdEFueUluZGV4KCksIHBvaW50ZXIp
KSk7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMz
Ml82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNv
ZGVzMzJfNjQuY3BwCShyZXZpc2lvbiAxNzk1MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wY29kZXMzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNDQsMTMgKzEwNDQs
MTMgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2FyZ3VtZW50X2J5X3ZhbChJbgogICAgIGFkZFNs
b3dDYXNlKGJyYW5jaDMyKE5vdEVxdWFsLCB0YWdGb3IoYXJndW1lbnRzUmVnaXN0ZXIpLCBUcnVz
dGVkSW1tMzIoSlNWYWx1ZTo6RW1wdHlWYWx1ZVRhZykpKTsKICAgICBlbWl0TG9hZChwcm9wZXJ0
eSwgcmVnVDEsIHJlZ1QyKTsKICAgICBhZGRTbG93Q2FzZShicmFuY2gzMihOb3RFcXVhbCwgcmVn
VDEsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRhZykpKTsKLSAgICBhZGQzMihUcnVzdGVk
SW1tMzIoMSksIHJlZ1QyKTsKICAgICAvLyByZWdUMiBub3cgY29udGFpbnMgdGhlIGludGVnZXIg
aW5kZXggb2YgdGhlIGFyZ3VtZW50IHdlIHdhbnQsIGluY2x1ZGluZyB0aGlzCiAgICAgbG9hZDMy
KHBheWxvYWRGb3IoSlNTdGFjazo6QXJndW1lbnRDb3VudCksIHJlZ1QzKTsKKyAgICBzdWIzMihU
cnVzdGVkSW1tMzIoMSksIHJlZ1QzKTsKICAgICBhZGRTbG93Q2FzZShicmFuY2gzMihBYm92ZU9y
RXF1YWwsIHJlZ1QyLCByZWdUMykpOwogICAgIAotICAgIGxvYWRQdHIoQmFzZUluZGV4KGNhbGxG
cmFtZVJlZ2lzdGVyLCByZWdUMiwgVGltZXNFaWdodCwgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUs
IHUuYXNCaXRzLnBheWxvYWQpICsgQ2FsbEZyYW1lOjp0aGlzQXJndW1lbnRPZmZzZXQoKSAqIHN0
YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkpLCByZWdUMCk7Ci0gICAgbG9hZFB0cihC
YXNlSW5kZXgoY2FsbEZyYW1lUmVnaXN0ZXIsIHJlZ1QyLCBUaW1lc0VpZ2h0LCBPQkpFQ1RfT0ZG
U0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMudGFnKSArIENhbGxGcmFtZTo6dGhpc0FyZ3VtZW50T2Zm
c2V0KCkgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpKSwgcmVnVDEpOworICAg
IGxvYWRQdHIoQmFzZUluZGV4KGNhbGxGcmFtZVJlZ2lzdGVyLCByZWdUMiwgVGltZXNFaWdodCwg
T0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnBheWxvYWQpICsgQ2FsbEZyYW1lOjp0
aGlzQXJndW1lbnRPZmZzZXQoKSAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkg
KyBzaXplb2YoUmVnaXN0ZXIpKSwgcmVnVDApOworICAgIGxvYWRQdHIoQmFzZUluZGV4KGNhbGxG
cmFtZVJlZ2lzdGVyLCByZWdUMiwgVGltZXNFaWdodCwgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUs
IHUuYXNCaXRzLnRhZykgKyBDYWxsRnJhbWU6OnRoaXNBcmd1bWVudE9mZnNldCgpICogc3RhdGlj
X2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSArIHNpemVvZihSZWdpc3RlcikpLCByZWdUMSk7
CiAgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZSgpOwogICAgIGVtaXRTdG9yZShkc3QsIHJlZ1Qx
LCByZWdUMCk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5j
cHAJKHJldmlzaW9uIDE3OTUzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bj
b2Rlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkyMCwxMyArOTIwLDEyIEBAIHZvaWQgSklUOjpl
bWl0X29wX2dldF9hcmd1bWVudF9ieV92YWwoSW4KICAgICBhZGRTbG93Q2FzZShicmFuY2hUZXN0
NjQoTm9uWmVybywgYWRkcmVzc0Zvcihhcmd1bWVudHNSZWdpc3RlcikpKTsKICAgICBlbWl0R2V0
VmlydHVhbFJlZ2lzdGVyKHByb3BlcnR5LCByZWdUMSk7CiAgICAgYWRkU2xvd0Nhc2UoZW1pdEp1
bXBJZk5vdEltbWVkaWF0ZUludGVnZXIocmVnVDEpKTsKLSAgICBhZGQzMihUcnVzdGVkSW1tMzIo
MSksIHJlZ1QxKTsKLSAgICAvLyByZWdUMSBub3cgY29udGFpbnMgdGhlIGludGVnZXIgaW5kZXgg
b2YgdGhlIGFyZ3VtZW50IHdlIHdhbnQsIGluY2x1ZGluZyB0aGlzCiAgICAgZW1pdEdldEZyb21D
YWxsRnJhbWVIZWFkZXIzMihKU1N0YWNrOjpBcmd1bWVudENvdW50LCByZWdUMik7CisgICAgc3Vi
MzIoVHJ1c3RlZEltbTMyKDEpLCByZWdUMik7CiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoMzIoQWJv
dmVPckVxdWFsLCByZWdUMSwgcmVnVDIpKTsKIAogICAgIHNpZ25FeHRlbmQzMlRvUHRyKHJlZ1Qx
LCByZWdUMSk7Ci0gICAgbG9hZDY0KEJhc2VJbmRleChjYWxsRnJhbWVSZWdpc3RlciwgcmVnVDEs
IFRpbWVzRWlnaHQsIENhbGxGcmFtZTo6dGhpc0FyZ3VtZW50T2Zmc2V0KCkgKiBzdGF0aWNfY2Fz
dDxpbnQ+KHNpemVvZihSZWdpc3RlcikpKSwgcmVnVDApOworICAgIGxvYWQ2NChCYXNlSW5kZXgo
Y2FsbEZyYW1lUmVnaXN0ZXIsIHJlZ1QxLCBUaW1lc0VpZ2h0LCBDYWxsRnJhbWU6OnRoaXNBcmd1
bWVudE9mZnNldCgpICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSArIHNpemVv
ZihSZWdpc3RlcikpLCByZWdUMCk7CiAgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZSgpOwogICAg
IGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0LCByZWdUMCk7CiB9CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0
LmFzbQkocmV2aXNpb24gMTc5NTMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20JKHdvcmtpbmcgY29weSkKQEAgLTE2MTMsMTIgKzE2
MTMsMTIgQEAgX2xsaW50X29wX2dldF9hcmd1bWVudF9ieV92YWw6CiAgICAgbG9hZGkgMTJbUENd
LCB0MQogICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9w
R2V0QXJndW1lbnRCeVZhbFNsb3cKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0
MSwgSW50MzJUYWcsIHQyLCAub3BHZXRBcmd1bWVudEJ5VmFsU2xvdykKLSAgICBhZGRpIDEsIHQy
CiAgICAgbG9hZGkgQXJndW1lbnRDb3VudCArIFBheWxvYWRPZmZzZXRbY2ZyXSwgdDEKKyAgICBz
dWJpIDEsIHQyCiAgICAgYmlhZXEgdDIsIHQxLCAub3BHZXRBcmd1bWVudEJ5VmFsU2xvdwogICAg
IGxvYWRpIDRbUENdLCB0MwotICAgIGxvYWRpIFRoaXNBcmd1bWVudE9mZnNldCArIFRhZ09mZnNl
dFtjZnIsIHQyLCA4XSwgdDAKLSAgICBsb2FkaSBUaGlzQXJndW1lbnRPZmZzZXQgKyBQYXlsb2Fk
T2Zmc2V0W2NmciwgdDIsIDhdLCB0MQorICAgIGxvYWRpIFRoaXNBcmd1bWVudE9mZnNldCArIDgg
KyBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0sIHQwCisgICAgbG9hZGkgVGhpc0FyZ3VtZW50T2Zmc2V0
ICsgOCArIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0sIHQxCiAgICAgc3RvcmVpIHQwLCBUYWdP
ZmZzZXRbY2ZyLCB0MywgOF0KICAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0Mywg
OF0KICAgICB2YWx1ZVByb2ZpbGUodDAsIHQxLCAyNCwgdDIpCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkocmV2
aXNpb24gMTc5NTMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXI2NC5hc20JKHdvcmtpbmcgY29weSkKQEAgLTE0NzEsMTIgKzE0NzEsMTMgQEAgX2xs
aW50X29wX2dldF9hcmd1bWVudF9ieV92YWw6CiAgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDMs
IHQxKQogICAgIGJ0cW56IFtjZnIsIHQwLCA4XSwgLm9wR2V0QXJndW1lbnRCeVZhbFNsb3cKICAg
ICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlSW50MzIodDEsIHQyLCAub3BHZXRBcmd1bWVudEJ5VmFs
U2xvdykKLSAgICBhZGRpIDEsIHQyCiAgICAgbG9hZGkgQXJndW1lbnRDb3VudCArIFBheWxvYWRP
ZmZzZXRbY2ZyXSwgdDEKKyAgICBzeGkycSB0MiwgdDIKKyAgICBzdWJpIDEsIHQxCiAgICAgYmlh
ZXEgdDIsIHQxLCAub3BHZXRBcmd1bWVudEJ5VmFsU2xvdwogICAgIGxvYWRpc0Zyb21JbnN0cnVj
dGlvbigxLCB0MykKICAgICBsb2FkcEZyb21JbnN0cnVjdGlvbig2LCB0MSkKLSAgICBsb2FkcSBU
aGlzQXJndW1lbnRPZmZzZXRbY2ZyLCB0MiwgOF0sIHQwCisgICAgbG9hZHEgVGhpc0FyZ3VtZW50
T2Zmc2V0ICsgOFtjZnIsIHQyLCA4XSwgdDAKICAgICBzdG9yZXEgdDAsIFtjZnIsIHQzLCA4XQog
ICAgIHZhbHVlUHJvZmlsZSh0MCwgNiwgdDEpCiAgICAgZGlzcGF0Y2goNykKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2V0LW15LWFyZ3VtZW50LWJ5LXZhbC1zYWZl
LXdyYXAtYXJvdW5kLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0
cy9zdHJlc3MvZ2V0LW15LWFyZ3VtZW50LWJ5LXZhbC1zYWZlLXdyYXAtYXJvdW5kLmpzCShyZXZp
c2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZXQtbXktYXJn
dW1lbnQtYnktdmFsLXNhZmUtd3JhcC1hcm91bmQuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSwxNyBAQAorZnVuY3Rpb24gZm9vKGluZGV4KSB7CisgICAgaWYgKGluZGV4ID4gMTAwMCkKKyAg
ICAgICAgYXJndW1lbnRzID0gWzEsIDIsIDNdOworICAgIHJldHVybiBhcmd1bWVudHNbaW5kZXhd
OworfQorCitub0lubGluZShmb28pOworCitmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDsgKytp
KSB7CisgICAgdmFyIHJlc3VsdCA9IGZvbygxLCA0Mik7CisgICAgaWYgKHJlc3VsdCAhPSA0MikK
KyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0IGluIGxvb3A6ICIgKyByZXN1bHQ7Cit9
CisKK3ZhciByZXN1bHQgPSBmb28oLTEpOworaWYgKHJlc3VsdCAhPT0gdm9pZCAwKQorICAgIHRo
cm93ICJFcnJvcjogYmFkIHJlc3VsdCBhdCBlbmQ6ICIgKyByZXN1bHQ7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dldC1teS1hcmd1bWVudC1ieS12YWwtd3JhcC1h
cm91bmQtbm8td2FybS11cC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
dGVzdHMvc3RyZXNzL2dldC1teS1hcmd1bWVudC1ieS12YWwtd3JhcC1hcm91bmQtbm8td2FybS11
cC5qcwkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mv
Z2V0LW15LWFyZ3VtZW50LWJ5LXZhbC13cmFwLWFyb3VuZC1uby13YXJtLXVwLmpzCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsOSBAQAorZnVuY3Rpb24gZm9vKGluZGV4KSB7CisgICAgcmV0dXJu
IGFyZ3VtZW50c1tpbmRleF07Cit9CisKK25vSW5saW5lKGZvbyk7CisKK3ZhciByZXN1bHQgPSBm
b28oLTEpOworaWYgKHJlc3VsdCAhPT0gdm9pZCAwKQorICAgIHRocm93ICJFcnJvcjogYmFkIHJl
c3VsdCBhdCBlbmQ6ICIgKyByZXN1bHQ7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvc3RyZXNzL2dldC1teS1hcmd1bWVudC1ieS12YWwtd3JhcC1hcm91bmQuanMKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZXQtbXktYXJndW1lbnQt
YnktdmFsLXdyYXAtYXJvdW5kLmpzCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL3N0cmVzcy9nZXQtbXktYXJndW1lbnQtYnktdmFsLXdyYXAtYXJvdW5kLmpzCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTUgQEAKK2Z1bmN0aW9uIGZvbyhpbmRleCkgeworICAg
IHJldHVybiBhcmd1bWVudHNbaW5kZXhdOworfQorCitub0lubGluZShmb28pOworCitmb3IgKHZh
ciBpID0gMDsgaSA8IDEwMDAwMDsgKytpKSB7CisgICAgdmFyIHJlc3VsdCA9IGZvbygxLCA0Mik7
CisgICAgaWYgKHJlc3VsdCAhPSA0MikKKyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0
IGluIGxvb3A6ICIgKyByZXN1bHQ7Cit9CisKK3ZhciByZXN1bHQgPSBmb28oLTEpOworaWYgKHJl
c3VsdCAhPT0gdm9pZCAwKQorICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdCBhdCBlbmQ6ICIg
KyByZXN1bHQ7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>245917</attachid>
            <date>2015-02-02 18:48:40 -0800</date>
            <delta_ts>2015-02-02 18:53:07 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>20687</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTc5NTMzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYwIEBA
CisyMDE1LTAyLTAyICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
YXJndW1lbnRzWy0xXSBzaG91bGQgaGF2ZSB3ZWxsLWRlZmluZWQgYmVoYXZpb3IKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MTE4MworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgQWNjb3JkaW5n
IHRvIEpTQydzIGludGVybmFsIGFyZ3VtZW50IG51bWJlcmluZywgMCBpcyAidGhpcyIgYW5kIDEg
aXMgdGhlIGZpcnN0IGFyZ3VtZW50LgorICAgICAgICBJbiB0aGUgImFyZ3VtZW50c1tpXSIsICJ0
aGlzIiBpcyBub3QgYWNjZXNzaWJsZSBhbmQgMCByZWZlcnMgdG8gdGhlIGZpcnN0IGFyZ3VtZW50
LgorICAgICAgICBQcmV2aW91c2x5IHdlIGhhbmRsZWQgdGhpcyBieSBpbXBsZW1lbnRpbmcgImFy
Z3VtZW50c1tpXSIgLSB3aGVyZSAiYXJndW1lbnRzIiBpcworICAgICAgICBzdGF0aWNhbGx5IGtu
b3duIHRvIGJlIHRoZSBjdXJyZW50IGZ1bmN0aW9uJ3MgYXJndW1lbnRzIG9iamVjdCAtIGFzIGZv
bGxvd3M6CisgICAgICAgIAorICAgICAgICAgICAgYWRkIDEsIGkKKyAgICAgICAgICAgIGJyYW5j
aEFib3ZlT3JFcXVhbCBpLCBjYWxsRnJhbWUuQXJndW1lbnRDb3VudCwgc2xvd1BhdGgKKyAgICAg
ICAgCisgICAgICAgIFRoZSBwcm9ibGVtIHdpdGggdGhpcyBpcyB0aGF0IGlmIGkgPSAtMSwgdGhp
cyBwYXNzZXMgdGhlIHRlc3QsIGFuZCB3ZSBlbmQgdXAgYWNjZXNzaW5nCisgICAgICAgIHdoYXQg
d291bGQgYmUgdGhlICJ0aGlzIiBhcmd1bWVudCBzbG90LiBUaGF0J3Mgd3JvbmcsIHNpbmNlIHdl
IHNob3VsZCByZWFsbHkgYmUgYm90dG9taW5nCisgICAgICAgIG91dCBpbiBhcmd1bWVudHNbIi0x
Il0sIHdoaWNoIGlzIHVzdWFsbHkgdW5kZWZpbmVkIGJ1dCBjb3VsZCBiZSBhbnl0aGluZy4gSXQn
cyBldmVuIHdvcnNlCisgICAgICAgIGlmIHRoZSBmdW5jdGlvbiBpcyBpbmxpbmVkIG9yIGlmIHdl
J3JlIGluIGEgY29uc3RydWN0b3IgLSBpbiB0aGF0IGNhc2UgdGhlICJ0aGlzIiBzbG90CisgICAg
ICAgIGNvdWxkIGJlIGdhcmJhZ2UuCisgICAgICAgIAorICAgICAgICBJdCB0dXJucyBvdXQgdGhh
dCB3ZSBoYWQgdGhpcyBidWcgaW4gYWxsIG9mIG91ciBlbmdpbmVzLgorICAgICAgICAKKyAgICAg
ICAgVGhpcyBmaXhlcyB0aGUgaXNzdWUgYnkgY2hhbmdpbmcgdGhlIGFsZ29yaXRobSB0bzoKKyAg
ICAgICAgCisgICAgICAgICAgICBsb2FkMzIgY2FsbEZyYW1lLkFyZ3VtZW50Q291bnQsIHRtcAor
ICAgICAgICAgICAgc3ViIDEsIHRtcAorICAgICAgICAgICAgYnJhbmNoQWJvdmVPckVxdWFsIGks
IHRtcCwgc2xvd1BhdGgKKyAgICAgICAgCisgICAgICAgIEluIHNvbWUgZW5naW5lcywgd2Ugd291
bGQgaGF2ZSB1c2VkIHRoZSBtb2RpZmllZCAiaSIgKHRoZSBvbmUgdGhhdCBoYWQgMSBhZGRlZCB0
byBpdCkgZm9yCisgICAgICAgIHRoZSBzdWJzZXF1ZW50IGFyZ3VtZW50IGxvYWQ7IHNpbmNlIHdl
IGRvbid0IGRvIHRoaXMgYW55bW9yZSBJIGFsc28gaGFkIHRvIGNoYW5nZSBzb21lIG9mCisgICAg
ICAgIHRoZSBvZmZzZXRzIG9uIHRoZSBCYXNlSW5kZXggYXJndW1lbnRzIGxvYWQuCisgICAgICAg
IAorICAgICAgICBUaGlzIGFsc28gaW5jbHVkZXMgdGVzdHMgdGhhdCBhcmUgd3JpdHRlbiBpbiBz
dWNoIGEgd2F5IGFzIHRvIGdldCBjb3ZlcmFnZSBvbiBMTEludCBhbmQKKyAgICAgICAgQmFzZWxp
bmUgSklUIChnZXQtbXktYXJndW1lbnQtYnktdmFsLXdyYXAtYXJvdW5kLW5vLXdhcm0tdXApLCBE
RkcgYW5kIEZUTAorICAgICAgICAoZ2V0LW15LWFyZ3VtZW50LWJ5LXZhbC13cmFwLWFyb3VuZCks
IGFuZCBERkcgd2hlbiB3ZSdyZSBiZWluZyBwYXJhbm9pZCBhYm91dCB0aGUgdXNlcgorICAgICAg
ICBvdmVyd3JpdGluZyB0aGUgImFyZ3VtZW50cyIgdmFyaWFibGUgKGdldC1teS1hcmd1bWVudC1i
eS12YWwtc2FmZS13cmFwLWFyb3VuZCkuCisKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVK
SVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUp
OgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZH
VG9MTFZNLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZUdl
dE15QXJndW1lbnRCeVZhbCk6CisgICAgICAgICogaml0L0pJVE9wY29kZXMuY3BwOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2FyZ3VtZW50X2J5X3ZhbCk6CisgICAgICAgICogaml0
L0pJVE9wY29kZXMzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfYXJn
dW1lbnRfYnlfdmFsKToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQu
YXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAg
ICogdGVzdHMvc3RyZXNzL2dldC1teS1hcmd1bWVudC1ieS12YWwtc2FmZS13cmFwLWFyb3VuZC5q
czogQWRkZWQuCisgICAgICAgIChmb28pOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9nZXQtbXkt
YXJndW1lbnQtYnktdmFsLXdyYXAtYXJvdW5kLW5vLXdhcm0tdXAuanM6IEFkZGVkLgorICAgICAg
ICAoZm9vKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2V0LW15LWFyZ3VtZW50LWJ5LXZhbC13
cmFwLWFyb3VuZC5qczogQWRkZWQuCisgICAgICAgIChmb28pOgorCiAyMDE1LTAyLTAyICBGaWxp
cCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgW0ZUTF0gaW5saW5lZCBHZXRN
eUFyZ3VtZW50QnlWYWwgd2l0aCBubyBhcmd1bWVudHMgcGFzc2VkIGNhdXNlcyBpbnN0YW50IGNy
YXNoCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJf
NjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQzMl82NC5jcHAJKHJldmlzaW9uIDE3OTUzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQz
NDcsMjIgKzQzNDcsMTkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2Rl
KQogICAgICAgICAgICAgICAgICAgICBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6RW1wdHlWYWx1ZVRh
ZykpKTsKICAgICAgICAgfQogICAgICAgICAgICAgCi0gICAgICAgIG1faml0LmFkZDMyKFRydXN0
ZWRJbW0zMigxKSwgaW5kZXhHUFIsIHJlc3VsdFBheWxvYWRHUFIpOwotICAgICAgICAgICAgCiAg
ICAgICAgIGlmIChub2RlLT5vcmlnaW4uc2VtYW50aWMuaW5saW5lQ2FsbEZyYW1lKSB7CiAgICAg
ICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKAogICAgICAgICAgICAgICAgIFVuY291bnRhYmxlLCBK
U1ZhbHVlUmVncygpLCAwLAogICAgICAgICAgICAgICAgIG1faml0LmJyYW5jaDMyKAogICAgICAg
ICAgICAgICAgICAgICBKSVRDb21waWxlcjo6QWJvdmVPckVxdWFsLAotICAgICAgICAgICAgICAg
ICAgICByZXN1bHRQYXlsb2FkR1BSLAorICAgICAgICAgICAgICAgICAgICBpbmRleEdQUiwKICAg
ICAgICAgICAgICAgICAgICAgSW1tMzIobm9kZS0+b3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxG
cmFtZS0+YXJndW1lbnRzLnNpemUoKSkpKTsKICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
IG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6cGF5bG9hZEZvcihKU1N0YWNrOjpBcmd1bWVudENv
dW50KSwgcmVzdWx0UGF5bG9hZEdQUik7CisgICAgICAgICAgICBtX2ppdC5zdWIzMihUcnVzdGVk
SW1tMzIoMSksIHJlc3VsdFBheWxvYWRHUFIpOwogICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVj
aygKICAgICAgICAgICAgICAgICBVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgMCwKLSAgICAg
ICAgICAgICAgICBtX2ppdC5icmFuY2gzMigKLSAgICAgICAgICAgICAgICAgICAgSklUQ29tcGls
ZXI6OkFib3ZlT3JFcXVhbCwKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0UGF5bG9hZEdQUiwK
LSAgICAgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6OnBheWxvYWRGb3IoSlNTdGFjazo6QXJn
dW1lbnRDb3VudCkpKTsKKyAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2gzMihKSVRDb21waWxl
cjo6QWJvdmVPckVxdWFsLCBpbmRleEdQUiwgcmVzdWx0UGF5bG9hZEdQUikpOwogICAgICAgICB9
CiAgICAgICAgIAogICAgICAgICBKSVRDb21waWxlcjo6SnVtcExpc3Qgc2xvd0FyZ3VtZW50OwpA
QCAtNDM5OSwxMyArNDM5NiwxMyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUq
IG5vZGUpCiAKICAgICAgICAgbV9qaXQubG9hZDMyKAogICAgICAgICAgICAgSklUQ29tcGlsZXI6
OkJhc2VJbmRleCgKLSAgICAgICAgICAgICAgICBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlciwg
cmVzdWx0UGF5bG9hZEdQUiwgSklUQ29tcGlsZXI6OlRpbWVzRWlnaHQsCi0gICAgICAgICAgICAg
ICAgbV9qaXQub2Zmc2V0T2ZBcmd1bWVudHNJbmNsdWRpbmdUaGlzKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYykgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnRh
ZykpLAorICAgICAgICAgICAgICAgIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBpbmRleEdQ
UiwgSklUQ29tcGlsZXI6OlRpbWVzRWlnaHQsCisgICAgICAgICAgICAgICAgbV9qaXQub2Zmc2V0
T2ZBcmd1bWVudHNJbmNsdWRpbmdUaGlzKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykgKyBPQkpFQ1Rf
T0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnRhZykgKyBzaXplb2YoRW5j
b2RlZEpTVmFsdWUpKSwKICAgICAgICAgICAgIHJlc3VsdFRhZ0dQUik7CiAgICAgICAgIG1faml0
LmxvYWQzMigKICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpCYXNlSW5kZXgoCi0gICAgICAgICAg
ICAgICAgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIHJlc3VsdFBheWxvYWRHUFIsIEpJVENv
bXBpbGVyOjpUaW1lc0VpZ2h0LAotICAgICAgICAgICAgICAgIG1faml0Lm9mZnNldE9mQXJndW1l
bnRzSW5jbHVkaW5nVGhpcyhub2RlLT5vcmlnaW4uc2VtYW50aWMpICsgT0JKRUNUX09GRlNFVE9G
KEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSksCisgICAgICAgICAgICAg
ICAgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIGluZGV4R1BSLCBKSVRDb21waWxlcjo6VGlt
ZXNFaWdodCwKKyAgICAgICAgICAgICAgICBtX2ppdC5vZmZzZXRPZkFyZ3VtZW50c0luY2x1ZGlu
Z1RoaXMobm9kZS0+b3JpZ2luLnNlbWFudGljKSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFs
dWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkgKyBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKSwK
ICAgICAgICAgICAgIHJlc3VsdFBheWxvYWRHUFIpOwogICAgICAgICAgICAgCiAgICAgICAgIHNs
b3dBcmd1bWVudC5saW5rKCZtX2ppdCk7CkBAIC00NDI3LDE5ICs0NDI0LDE3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgICAgICBKSVRDb21w
aWxlcjo6dGFnRm9yKG1faml0LmdyYXBoKCkubWFjaGluZUFyZ3VtZW50c1JlZ2lzdGVyRm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYykpLAogICAgICAgICAgICAgICAgIFRydXN0ZWRJbW0zMihKU1Zh
bHVlOjpFbXB0eVZhbHVlVGFnKSkpOwogICAgICAgICAKLSAgICAgICAgbV9qaXQuYWRkMzIoVHJ1
c3RlZEltbTMyKDEpLCBpbmRleEdQUiwgcmVzdWx0UGF5bG9hZEdQUik7CiAgICAgICAgIGlmIChu
b2RlLT5vcmlnaW4uc2VtYW50aWMuaW5saW5lQ2FsbEZyYW1lKSB7CiAgICAgICAgICAgICBzbG93
UGF0aC5hcHBlbmQoCiAgICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoMzIoCiAgICAgICAgICAg
ICAgICAgICAgIEpJVENvbXBpbGVyOjpBYm92ZU9yRXF1YWwsCi0gICAgICAgICAgICAgICAgICAg
IHJlc3VsdFBheWxvYWRHUFIsCisgICAgICAgICAgICAgICAgICAgIGluZGV4R1BSLAogICAgICAg
ICAgICAgICAgICAgICBJbW0zMihub2RlLT5vcmlnaW4uc2VtYW50aWMuaW5saW5lQ2FsbEZyYW1l
LT5hcmd1bWVudHMuc2l6ZSgpKSkpOwogICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbV9q
aXQubG9hZDMyKEpJVENvbXBpbGVyOjpwYXlsb2FkRm9yKEpTU3RhY2s6OkFyZ3VtZW50Q291bnQp
LCByZXN1bHRQYXlsb2FkR1BSKTsKKyAgICAgICAgICAgIG1faml0LnN1YjMyKFRydXN0ZWRJbW0z
MigxKSwgcmVzdWx0UGF5bG9hZEdQUik7CiAgICAgICAgICAgICBzbG93UGF0aC5hcHBlbmQoCi0g
ICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoMzIoCi0gICAgICAgICAgICAgICAgICAgIEpJVENv
bXBpbGVyOjpBYm92ZU9yRXF1YWwsCi0gICAgICAgICAgICAgICAgICAgIHJlc3VsdFBheWxvYWRH
UFIsCi0gICAgICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpwYXlsb2FkRm9yKEpTU3RhY2s6
OkFyZ3VtZW50Q291bnQpKSk7CisgICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoMzIoSklUQ29t
cGlsZXI6OkFib3ZlT3JFcXVhbCwgaW5kZXhHUFIsIHJlc3VsdFBheWxvYWRHUFIpKTsKICAgICAg
ICAgfQogICAgICAgICAKICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXBMaXN0IHNsb3dBcmd1bWVu
dDsKQEAgLTQ0NzUsMTMgKzQ0NzAsMTMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShO
b2RlKiBub2RlKQogCiAgICAgICAgIG1faml0LmxvYWQzMigKICAgICAgICAgICAgIEpJVENvbXBp
bGVyOjpCYXNlSW5kZXgoCi0gICAgICAgICAgICAgICAgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0
ZXIsIHJlc3VsdFBheWxvYWRHUFIsIEpJVENvbXBpbGVyOjpUaW1lc0VpZ2h0LAotICAgICAgICAg
ICAgICAgIG1faml0Lm9mZnNldE9mQXJndW1lbnRzSW5jbHVkaW5nVGhpcyhub2RlLT5vcmlnaW4u
c2VtYW50aWMpICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0
cy50YWcpKSwKKyAgICAgICAgICAgICAgICBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgaW5k
ZXhHUFIsIEpJVENvbXBpbGVyOjpUaW1lc0VpZ2h0LAorICAgICAgICAgICAgICAgIG1faml0Lm9m
ZnNldE9mQXJndW1lbnRzSW5jbHVkaW5nVGhpcyhub2RlLT5vcmlnaW4uc2VtYW50aWMpICsgT0JK
RUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy50YWcpICsgc2l6ZW9m
KEVuY29kZWRKU1ZhbHVlKSksCiAgICAgICAgICAgICByZXN1bHRUYWdHUFIpOwogICAgICAgICBt
X2ppdC5sb2FkMzIoCiAgICAgICAgICAgICBKSVRDb21waWxlcjo6QmFzZUluZGV4KAotICAgICAg
ICAgICAgICAgIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCByZXN1bHRQYXlsb2FkR1BSLCBK
SVRDb21waWxlcjo6VGltZXNFaWdodCwKLSAgICAgICAgICAgICAgICBtX2ppdC5vZmZzZXRPZkFy
Z3VtZW50c0luY2x1ZGluZ1RoaXMobm9kZS0+b3JpZ2luLnNlbWFudGljKSArIE9CSkVDVF9PRkZT
RVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpLAorICAgICAgICAg
ICAgICAgIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBpbmRleEdQUiwgSklUQ29tcGlsZXI6
OlRpbWVzRWlnaHQsCisgICAgICAgICAgICAgICAgbV9qaXQub2Zmc2V0T2ZBcmd1bWVudHNJbmNs
dWRpbmdUaGlzKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2Rl
ZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnBheWxvYWQpICsgc2l6ZW9mKEVuY29kZWRKU1ZhbHVl
KSksCiAgICAgICAgICAgICByZXN1bHRQYXlsb2FkR1BSKTsKICAgICAgICAgCiAgICAgICAgIGlm
IChub2RlLT5vcmlnaW4uc2VtYW50aWMuaW5saW5lQ2FsbEZyYW1lKSB7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHJldmlz
aW9uIDE3OTUzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQ2NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzOTQsMjEgKzQzOTQsMTkgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgICAgICAgICAgICAg
bV9qaXQuZ3JhcGgoKS5tYWNoaW5lQXJndW1lbnRzUmVnaXN0ZXJGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKSkpKTsKICAgICAgICAgfQogCi0gICAgICAgIG1faml0LmFkZDMyKFRydXN0ZWRJbW0z
MigxKSwgaW5kZXhHUFIsIHJlc3VsdEdQUik7CiAgICAgICAgIGlmIChub2RlLT5vcmlnaW4uc2Vt
YW50aWMuaW5saW5lQ2FsbEZyYW1lKSB7CiAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKAog
ICAgICAgICAgICAgICAgIFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCAwLAogICAgICAgICAg
ICAgICAgIG1faml0LmJyYW5jaDMyKAogICAgICAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6
QWJvdmVPckVxdWFsLAotICAgICAgICAgICAgICAgICAgICByZXN1bHRHUFIsCi0gICAgICAgICAg
ICAgICAgICAgIEltbTMyKG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWUtPmFy
Z3VtZW50cy5zaXplKCkpKSk7CisgICAgICAgICAgICAgICAgICAgIGluZGV4R1BSLAorICAgICAg
ICAgICAgICAgICAgICBJbW0zMihub2RlLT5vcmlnaW4uc2VtYW50aWMuaW5saW5lQ2FsbEZyYW1l
LT5hcmd1bWVudHMuc2l6ZSgpIC0gMSkpKTsKICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
IG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6cGF5bG9hZEZvcihKU1N0YWNrOjpBcmd1bWVudENv
dW50KSwgcmVzdWx0R1BSKTsKKyAgICAgICAgICAgIG1faml0LnN1YjMyKFRydXN0ZWRJbW0zMigx
KSwgcmVzdWx0R1BSKTsKICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soCiAgICAgICAgICAg
ICAgICAgVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIDAsCi0gICAgICAgICAgICAgICAgbV9q
aXQuYnJhbmNoMzIoCi0gICAgICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpBYm92ZU9yRXF1
YWwsCi0gICAgICAgICAgICAgICAgICAgIHJlc3VsdEdQUiwKLSAgICAgICAgICAgICAgICAgICAg
SklUQ29tcGlsZXI6OnBheWxvYWRGb3IoSlNTdGFjazo6QXJndW1lbnRDb3VudCkpKTsKKyAgICAg
ICAgICAgICAgICBtX2ppdC5icmFuY2gzMihKSVRDb21waWxlcjo6QWJvdmVPckVxdWFsLCBpbmRl
eEdQUiwgcmVzdWx0R1BSKSk7CiAgICAgICAgIH0KIAogICAgICAgICBKSVRDb21waWxlcjo6SnVt
cExpc3Qgc2xvd0FyZ3VtZW50OwpAQCAtNDQzOCwxMSArNDQzNiw5IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgfQogICAgICAgICBzbG93QXJndW1l
bnRPdXRPZkJvdW5kcy5saW5rKCZtX2ppdCk7CiAKLSAgICAgICAgbV9qaXQuc2lnbkV4dGVuZDMy
VG9QdHIocmVzdWx0R1BSLCByZXN1bHRHUFIpOwotICAgICAgICAgICAgCiAgICAgICAgIG1faml0
LmxvYWQ2NCgKICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpCYXNlSW5kZXgoCi0gICAgICAgICAg
ICAgICAgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6
OlRpbWVzRWlnaHQsIG1faml0Lm9mZnNldE9mQXJndW1lbnRzSW5jbHVkaW5nVGhpcyhub2RlLT5v
cmlnaW4uc2VtYW50aWMpKSwKKyAgICAgICAgICAgICAgICBHUFJJbmZvOjpjYWxsRnJhbWVSZWdp
c3RlciwgaW5kZXhHUFIsIEpJVENvbXBpbGVyOjpUaW1lc0VpZ2h0LCBtX2ppdC5vZmZzZXRPZkFy
Z3VtZW50c0luY2x1ZGluZ1RoaXMobm9kZS0+b3JpZ2luLnNlbWFudGljKSArIHNpemVvZihFbmNv
ZGVkSlNWYWx1ZSkpLAogICAgICAgICAgICAgcmVzdWx0R1BSKTsKIAogICAgICAgICBzbG93QXJn
dW1lbnQubGluaygmbV9qaXQpOwpAQCAtNDQ2MywxOSArNDQ1OSwxNyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6
OmFkZHJlc3NGb3IoCiAgICAgICAgICAgICAgICAgICAgIG1faml0LmdyYXBoKCkubWFjaGluZUFy
Z3VtZW50c1JlZ2lzdGVyRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpKSk7CiAgICAgICAgIAot
ICAgICAgICBtX2ppdC5hZGQzMihUcnVzdGVkSW1tMzIoMSksIGluZGV4R1BSLCByZXN1bHRHUFIp
OwogICAgICAgICBpZiAobm9kZS0+b3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxGcmFtZSkgewog
ICAgICAgICAgICAgc2xvd1BhdGguYXBwZW5kKAogICAgICAgICAgICAgICAgIG1faml0LmJyYW5j
aDMyKAogICAgICAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6QWJvdmVPckVxdWFsLAogICAg
ICAgICAgICAgICAgICAgICByZXN1bHRHUFIsCi0gICAgICAgICAgICAgICAgICAgIEltbTMyKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCkpKSk7
CisgICAgICAgICAgICAgICAgICAgIEltbTMyKG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVD
YWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCkgLSAxKSkpOwogICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpwYXlsb2FkRm9yKEpTU3RhY2s6OkFy
Z3VtZW50Q291bnQpLCByZXN1bHRHUFIpOworICAgICAgICAgICAgbV9qaXQuc3ViMzIoVHJ1c3Rl
ZEltbTMyKDEpLCByZXN1bHRHUFIpOwogICAgICAgICAgICAgc2xvd1BhdGguYXBwZW5kKAotICAg
ICAgICAgICAgICAgIG1faml0LmJyYW5jaDMyKAotICAgICAgICAgICAgICAgICAgICBKSVRDb21w
aWxlcjo6QWJvdmVPckVxdWFsLAotICAgICAgICAgICAgICAgICAgICByZXN1bHRHUFIsCi0gICAg
ICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpwYXlsb2FkRm9yKEpTU3RhY2s6OkFyZ3VtZW50
Q291bnQpKSk7CisgICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoMzIoSklUQ29tcGlsZXI6OkFi
b3ZlT3JFcXVhbCwgaW5kZXhHUFIsIHJlc3VsdEdQUikpOwogICAgICAgICB9CiAgICAgICAgIAog
ICAgICAgICBKSVRDb21waWxlcjo6SnVtcExpc3Qgc2xvd0FyZ3VtZW50OwpAQCAtNDUwNSwxMSAr
NDQ5OSw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAg
ICAgfQogICAgICAgICBzbG93QXJndW1lbnRPdXRPZkJvdW5kcy5saW5rKCZtX2ppdCk7CiAKLSAg
ICAgICAgbV9qaXQuc2lnbkV4dGVuZDMyVG9QdHIocmVzdWx0R1BSLCByZXN1bHRHUFIpOwotICAg
ICAgICAKICAgICAgICAgbV9qaXQubG9hZDY0KAogICAgICAgICAgICAgSklUQ29tcGlsZXI6OkJh
c2VJbmRleCgKLSAgICAgICAgICAgICAgICBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgcmVz
dWx0R1BSLCBKSVRDb21waWxlcjo6VGltZXNFaWdodCwgbV9qaXQub2Zmc2V0T2ZBcmd1bWVudHNJ
bmNsdWRpbmdUaGlzKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLAorICAgICAgICAgICAgICAgIEdQ
UkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBpbmRleEdQUiwgSklUQ29tcGlsZXI6OlRpbWVzRWln
aHQsIG1faml0Lm9mZnNldE9mQXJndW1lbnRzSW5jbHVkaW5nVGhpcyhub2RlLT5vcmlnaW4uc2Vt
YW50aWMpICsgc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSksCiAgICAgICAgICAgICByZXN1bHRHUFIp
OwogICAgICAgICAKICAgICAgICAgaWYgKG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxs
RnJhbWUpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xM
Vk0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJE
RkdUb0xMVk0uY3BwCShyZXZpc2lvbiAxNzk1MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk5NywxNiArMTk5
NywxNSBAQCBwcml2YXRlOgogICAgICAgICAKICAgICAgICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2lu
ID0gbV9ub2RlLT5vcmlnaW4uc2VtYW50aWM7CiAgICAgICAgIAotICAgICAgICBMVmFsdWUgemVy
b0Jhc2VkSW5kZXggPSBsb3dJbnQzMihtX25vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgTFZhbHVl
IG9uZUJhc2VkSW5kZXggPSBtX291dC5hZGQoemVyb0Jhc2VkSW5kZXgsIG1fb3V0LmludDMyT25l
KTsKKyAgICAgICAgTFZhbHVlIGluZGV4ID0gbG93SW50MzIobV9ub2RlLT5jaGlsZDEoKSk7CiAg
ICAgICAgIAogICAgICAgICBMVmFsdWUgbGltaXQ7CiAgICAgICAgIGlmIChjb2RlT3JpZ2luLmlu
bGluZUNhbGxGcmFtZSkKLSAgICAgICAgICAgIGxpbWl0ID0gbV9vdXQuY29uc3RJbnQzMihjb2Rl
T3JpZ2luLmlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKSk7CisgICAgICAgICAgICBs
aW1pdCA9IG1fb3V0LmNvbnN0SW50MzIoY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUtPmFyZ3Vt
ZW50cy5zaXplKCkgLSAxKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbGltaXQgPSBtX291
dC5sb2FkMzIocGF5bG9hZEZvcihKU1N0YWNrOjpBcmd1bWVudENvdW50KSk7Ci0gICAgICAgIAot
ICAgICAgICBzcGVjdWxhdGUoVW5jb3VudGFibGUsIG5vVmFsdWUoKSwgMCwgbV9vdXQuYWJvdmVP
ckVxdWFsKG9uZUJhc2VkSW5kZXgsIGxpbWl0KSk7CisgICAgICAgICAgICBsaW1pdCA9IG1fb3V0
LnN1YihtX291dC5sb2FkMzIocGF5bG9hZEZvcihKU1N0YWNrOjpBcmd1bWVudENvdW50KSksIG1f
b3V0LmludDMyT25lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICBz
cGVjdWxhdGUoVW5jb3VudGFibGUsIG5vVmFsdWUoKSwgMCwgbV9vdXQuYWJvdmVPckVxdWFsKGlu
ZGV4LCBsaW1pdCkpOwogICAgICAgICAKICAgICAgICAgU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxl
ID0gbV9ncmFwaC5iYXNlbGluZUNvZGVCbG9ja0Zvcihjb2RlT3JpZ2luKS0+c3ltYm9sVGFibGUo
KTsKICAgICAgICAgaWYgKHN5bWJvbFRhYmxlLT5zbG93QXJndW1lbnRzKCkpIHsKQEAgLTIwMzIs
NyArMjAzMSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBiYXNlID0gYWRkcmVzc0Zvcih2aXJ0
dWFsUmVnaXN0ZXJGb3JBcmd1bWVudCgxKSk7CiAgICAgICAgIAogICAgICAgICBMVmFsdWUgcG9p
bnRlciA9IG1fb3V0LmJhc2VJbmRleCgKLSAgICAgICAgICAgIGJhc2UudmFsdWUoKSwgbV9vdXQu
emVyb0V4dCh6ZXJvQmFzZWRJbmRleCwgbV9vdXQuaW50UHRyKSwgU2NhbGVFaWdodCk7CisgICAg
ICAgICAgICBiYXNlLnZhbHVlKCksIG1fb3V0Lnplcm9FeHQoaW5kZXgsIG1fb3V0LmludFB0ciks
IFNjYWxlRWlnaHQpOwogICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0LmxvYWQ2NChUeXBlZFBvaW50
ZXIobV9oZWFwcy52YXJpYWJsZXMuYXRBbnlJbmRleCgpLCBwb2ludGVyKSkpOwogICAgIH0KIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAko
cmV2aXNpb24gMTc5NTMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVz
MzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQ0LDEzICsxMDQ0LDEzIEBAIHZvaWQgSklU
OjplbWl0X29wX2dldF9hcmd1bWVudF9ieV92YWwoSW4KICAgICBhZGRTbG93Q2FzZShicmFuY2gz
MihOb3RFcXVhbCwgdGFnRm9yKGFyZ3VtZW50c1JlZ2lzdGVyKSwgVHJ1c3RlZEltbTMyKEpTVmFs
dWU6OkVtcHR5VmFsdWVUYWcpKSk7CiAgICAgZW1pdExvYWQocHJvcGVydHksIHJlZ1QxLCByZWdU
Mik7CiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QxLCBUcnVzdGVkSW1t
MzIoSlNWYWx1ZTo6SW50MzJUYWcpKSk7Ci0gICAgYWRkMzIoVHJ1c3RlZEltbTMyKDEpLCByZWdU
Mik7CiAgICAgLy8gcmVnVDIgbm93IGNvbnRhaW5zIHRoZSBpbnRlZ2VyIGluZGV4IG9mIHRoZSBh
cmd1bWVudCB3ZSB3YW50LCBpbmNsdWRpbmcgdGhpcwogICAgIGxvYWQzMihwYXlsb2FkRm9yKEpT
U3RhY2s6OkFyZ3VtZW50Q291bnQpLCByZWdUMyk7CisgICAgc3ViMzIoVHJ1c3RlZEltbTMyKDEp
LCByZWdUMyk7CiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoMzIoQWJvdmVPckVxdWFsLCByZWdUMiwg
cmVnVDMpKTsKICAgICAKLSAgICBsb2FkUHRyKEJhc2VJbmRleChjYWxsRnJhbWVSZWdpc3Rlciwg
cmVnVDIsIFRpbWVzRWlnaHQsIE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy5wYXls
b2FkKSArIENhbGxGcmFtZTo6dGhpc0FyZ3VtZW50T2Zmc2V0KCkgKiBzdGF0aWNfY2FzdDxpbnQ+
KHNpemVvZihSZWdpc3RlcikpKSwgcmVnVDApOwotICAgIGxvYWRQdHIoQmFzZUluZGV4KGNhbGxG
cmFtZVJlZ2lzdGVyLCByZWdUMiwgVGltZXNFaWdodCwgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUs
IHUuYXNCaXRzLnRhZykgKyBDYWxsRnJhbWU6OnRoaXNBcmd1bWVudE9mZnNldCgpICogc3RhdGlj
X2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSksIHJlZ1QxKTsKKyAgICBsb2FkUHRyKEJhc2VJ
bmRleChjYWxsRnJhbWVSZWdpc3RlciwgcmVnVDIsIFRpbWVzRWlnaHQsIE9CSkVDVF9PRkZTRVRP
RihKU1ZhbHVlLCB1LmFzQml0cy5wYXlsb2FkKSArIENhbGxGcmFtZTo6dGhpc0FyZ3VtZW50T2Zm
c2V0KCkgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpICsgc2l6ZW9mKFJlZ2lz
dGVyKSksIHJlZ1QwKTsKKyAgICBsb2FkUHRyKEJhc2VJbmRleChjYWxsRnJhbWVSZWdpc3Rlciwg
cmVnVDIsIFRpbWVzRWlnaHQsIE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy50YWcp
ICsgQ2FsbEZyYW1lOjp0aGlzQXJndW1lbnRPZmZzZXQoKSAqIHN0YXRpY19jYXN0PGludD4oc2l6
ZW9mKFJlZ2lzdGVyKSkgKyBzaXplb2YoUmVnaXN0ZXIpKSwgcmVnVDEpOwogICAgIGVtaXRWYWx1
ZVByb2ZpbGluZ1NpdGUoKTsKICAgICBlbWl0U3RvcmUoZHN0LCByZWdUMSwgcmVnVDApOwogfQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCShyZXZpc2lvbiAx
Nzk1MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC05MjAsMTMgKzkyMCwxMiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYXJn
dW1lbnRfYnlfdmFsKEluCiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoVGVzdDY0KE5vblplcm8sIGFk
ZHJlc3NGb3IoYXJndW1lbnRzUmVnaXN0ZXIpKSk7CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rl
cihwcm9wZXJ0eSwgcmVnVDEpOwogICAgIGFkZFNsb3dDYXNlKGVtaXRKdW1wSWZOb3RJbW1lZGlh
dGVJbnRlZ2VyKHJlZ1QxKSk7Ci0gICAgYWRkMzIoVHJ1c3RlZEltbTMyKDEpLCByZWdUMSk7Ci0g
ICAgLy8gcmVnVDEgbm93IGNvbnRhaW5zIHRoZSBpbnRlZ2VyIGluZGV4IG9mIHRoZSBhcmd1bWVu
dCB3ZSB3YW50LCBpbmNsdWRpbmcgdGhpcwogICAgIGVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVy
MzIoSlNTdGFjazo6QXJndW1lbnRDb3VudCwgcmVnVDIpOworICAgIHN1YjMyKFRydXN0ZWRJbW0z
MigxKSwgcmVnVDIpOwogICAgIGFkZFNsb3dDYXNlKGJyYW5jaDMyKEFib3ZlT3JFcXVhbCwgcmVn
VDEsIHJlZ1QyKSk7CiAKICAgICBzaWduRXh0ZW5kMzJUb1B0cihyZWdUMSwgcmVnVDEpOwotICAg
IGxvYWQ2NChCYXNlSW5kZXgoY2FsbEZyYW1lUmVnaXN0ZXIsIHJlZ1QxLCBUaW1lc0VpZ2h0LCBD
YWxsRnJhbWU6OnRoaXNBcmd1bWVudE9mZnNldCgpICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2Yo
UmVnaXN0ZXIpKSksIHJlZ1QwKTsKKyAgICBsb2FkNjQoQmFzZUluZGV4KGNhbGxGcmFtZVJlZ2lz
dGVyLCByZWdUMSwgVGltZXNFaWdodCwgQ2FsbEZyYW1lOjp0aGlzQXJndW1lbnRPZmZzZXQoKSAq
IHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgKyBzaXplb2YoUmVnaXN0ZXIpKSwg
cmVnVDApOwogICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoKTsKICAgICBlbWl0UHV0VmlydHVh
bFJlZ2lzdGVyKGRzdCwgcmVnVDApOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20JKHJldmlzaW9u
IDE3OTUzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyMzJfNjQuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC0xNjEzLDEyICsxNjEzLDEyIEBAIF9sbGlu
dF9vcF9nZXRfYXJndW1lbnRfYnlfdmFsOgogICAgIGxvYWRpIDEyW1BDXSwgdDEKICAgICBiaW5l
cSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEVtcHR5VmFsdWVUYWcsIC5vcEdldEFyZ3VtZW50QnlW
YWxTbG93CiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDEsIEludDMyVGFnLCB0
MiwgLm9wR2V0QXJndW1lbnRCeVZhbFNsb3cpCi0gICAgYWRkaSAxLCB0MgogICAgIGxvYWRpIEFy
Z3VtZW50Q291bnQgKyBQYXlsb2FkT2Zmc2V0W2Nmcl0sIHQxCisgICAgc3ViaSAxLCB0MgogICAg
IGJpYWVxIHQyLCB0MSwgLm9wR2V0QXJndW1lbnRCeVZhbFNsb3cKICAgICBsb2FkaSA0W1BDXSwg
dDMKLSAgICBsb2FkaSBUaGlzQXJndW1lbnRPZmZzZXQgKyBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0s
IHQwCi0gICAgbG9hZGkgVGhpc0FyZ3VtZW50T2Zmc2V0ICsgUGF5bG9hZE9mZnNldFtjZnIsIHQy
LCA4XSwgdDEKKyAgICBsb2FkaSBUaGlzQXJndW1lbnRPZmZzZXQgKyA4ICsgVGFnT2Zmc2V0W2Nm
ciwgdDIsIDhdLCB0MAorICAgIGxvYWRpIFRoaXNBcmd1bWVudE9mZnNldCArIDggKyBQYXlsb2Fk
T2Zmc2V0W2NmciwgdDIsIDhdLCB0MQogICAgIHN0b3JlaSB0MCwgVGFnT2Zmc2V0W2NmciwgdDMs
IDhdCiAgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCiAgICAgdmFsdWVQ
cm9maWxlKHQwLCB0MSwgMjQsIHQyKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20JKHJldmlzaW9uIDE3OTUzMSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNt
CSh3b3JraW5nIGNvcHkpCkBAIC0xNDcxLDEyICsxNDcxLDEzIEBAIF9sbGludF9vcF9nZXRfYXJn
dW1lbnRfYnlfdmFsOgogICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigzLCB0MSkKICAgICBidHFu
eiBbY2ZyLCB0MCwgOF0sIC5vcEdldEFyZ3VtZW50QnlWYWxTbG93CiAgICAgbG9hZENvbnN0YW50
T3JWYXJpYWJsZUludDMyKHQxLCB0MiwgLm9wR2V0QXJndW1lbnRCeVZhbFNsb3cpCi0gICAgYWRk
aSAxLCB0MgogICAgIGxvYWRpIEFyZ3VtZW50Q291bnQgKyBQYXlsb2FkT2Zmc2V0W2Nmcl0sIHQx
CisgICAgc3hpMnEgdDIsIHQyCisgICAgc3ViaSAxLCB0MQogICAgIGJpYWVxIHQyLCB0MSwgLm9w
R2V0QXJndW1lbnRCeVZhbFNsb3cKICAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMSwgdDMpCiAg
ICAgbG9hZHBGcm9tSW5zdHJ1Y3Rpb24oNiwgdDEpCi0gICAgbG9hZHEgVGhpc0FyZ3VtZW50T2Zm
c2V0W2NmciwgdDIsIDhdLCB0MAorICAgIGxvYWRxIFRoaXNBcmd1bWVudE9mZnNldCArIDhbY2Zy
LCB0MiwgOF0sIHQwCiAgICAgc3RvcmVxIHQwLCBbY2ZyLCB0MywgOF0KICAgICB2YWx1ZVByb2Zp
bGUodDAsIDYsIHQxKQogICAgIGRpc3BhdGNoKDcpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvc3RyZXNzL2dldC1teS1hcmd1bWVudC1ieS12YWwtc2FmZS13cmFwLWFyb3VuZC5q
cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dldC1t
eS1hcmd1bWVudC1ieS12YWwtc2FmZS13cmFwLWFyb3VuZC5qcwkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2V0LW15LWFyZ3VtZW50LWJ5LXZhbC1z
YWZlLXdyYXAtYXJvdW5kLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTcgQEAKK2Z1bmN0
aW9uIGZvbyhpbmRleCkgeworICAgIGlmIChpbmRleCA+IDEwMDApCisgICAgICAgIGFyZ3VtZW50
cyA9IFsxLCAyLCAzXTsKKyAgICByZXR1cm4gYXJndW1lbnRzW2luZGV4XTsKK30KKworbm9Jbmxp
bmUoZm9vKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDA7ICsraSkgeworICAgIHZhciBy
ZXN1bHQgPSBmb28oMSwgNDIpOworICAgIGlmIChyZXN1bHQgIT0gNDIpCisgICAgICAgIHRocm93
ICJFcnJvcjogYmFkIHJlc3VsdCBpbiBsb29wOiAiICsgcmVzdWx0OworfQorCit2YXIgcmVzdWx0
ID0gZm9vKC0xKTsKK2lmIChyZXN1bHQgIT09IHZvaWQgMCkKKyAgICB0aHJvdyAiRXJyb3I6IGJh
ZCByZXN1bHQgYXQgZW5kOiAiICsgcmVzdWx0OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rlc3RzL3N0cmVzcy9nZXQtbXktYXJndW1lbnQtYnktdmFsLXdyYXAtYXJvdW5kLW5vLXdhcm0t
dXAuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9n
ZXQtbXktYXJndW1lbnQtYnktdmFsLXdyYXAtYXJvdW5kLW5vLXdhcm0tdXAuanMJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dldC1teS1hcmd1bWVu
dC1ieS12YWwtd3JhcC1hcm91bmQtbm8td2FybS11cC5qcwkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDkgQEAKK2Z1bmN0aW9uIGZvbyhpbmRleCkgeworICAgIHJldHVybiBhcmd1bWVudHNbaW5k
ZXhdOworfQorCitub0lubGluZShmb28pOworCit2YXIgcmVzdWx0ID0gZm9vKC0xKTsKK2lmIChy
ZXN1bHQgIT09IHZvaWQgMCkKKyAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQgYXQgZW5kOiAi
ICsgcmVzdWx0OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZXQt
bXktYXJndW1lbnQtYnktdmFsLXdyYXAtYXJvdW5kLmpzCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2V0LW15LWFyZ3VtZW50LWJ5LXZhbC13cmFwLWFy
b3VuZC5qcwkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJl
c3MvZ2V0LW15LWFyZ3VtZW50LWJ5LXZhbC13cmFwLWFyb3VuZC5qcwkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDE1IEBACitmdW5jdGlvbiBmb28oaW5kZXgpIHsKKyAgICByZXR1cm4gYXJndW1l
bnRzW2luZGV4XTsKK30KKworbm9JbmxpbmUoZm9vKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAx
MDAwMDA7ICsraSkgeworICAgIHZhciByZXN1bHQgPSBmb28oMSwgNDIpOworICAgIGlmIChyZXN1
bHQgIT0gNDIpCisgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdCBpbiBsb29wOiAiICsg
cmVzdWx0OworfQorCit2YXIgcmVzdWx0ID0gZm9vKC0xKTsKK2lmIChyZXN1bHQgIT09IHZvaWQg
MCkKKyAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQgYXQgZW5kOiAiICsgcmVzdWx0Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>245918</attachid>
            <date>2015-02-02 18:53:07 -0800</date>
            <delta_ts>2015-02-02 19:52:48 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>20669</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTc5NTMzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYwIEBA
CisyMDE1LTAyLTAyICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
YXJndW1lbnRzWy0xXSBzaG91bGQgaGF2ZSB3ZWxsLWRlZmluZWQgYmVoYXZpb3IKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MTE4MworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgQWNjb3JkaW5n
IHRvIEpTQydzIGludGVybmFsIGFyZ3VtZW50IG51bWJlcmluZywgMCBpcyAidGhpcyIgYW5kIDEg
aXMgdGhlIGZpcnN0IGFyZ3VtZW50LgorICAgICAgICBJbiB0aGUgImFyZ3VtZW50c1tpXSIgZXhw
cmVzc2lvbiwgInRoaXMiIGlzIG5vdCBhY2Nlc3NpYmxlIGFuZCBpID0gMCByZWZlcnMgdG8gdGhl
IGZpcnN0CisgICAgICAgIGFyZ3VtZW50LiBQcmV2aW91c2x5IHdlIGhhbmRsZWQgdGhlIGJvdW5k
cyBjaGVjayBpbiAiYXJndW1lbnRzW2ldIiAtIHdoZXJlICJhcmd1bWVudHMiIGlzCisgICAgICAg
IHN0YXRpY2FsbHkga25vd24gdG8gYmUgdGhlIGN1cnJlbnQgZnVuY3Rpb24ncyBhcmd1bWVudHMg
b2JqZWN0IC0gYXMgZm9sbG93czoKKyAgICAgICAgCisgICAgICAgICAgICBhZGQgMSwgaQorICAg
ICAgICAgICAgYnJhbmNoQWJvdmVPckVxdWFsIGksIGNhbGxGcmFtZS5Bcmd1bWVudENvdW50LCBz
bG93UGF0aAorICAgICAgICAKKyAgICAgICAgVGhlIHByb2JsZW0gd2l0aCB0aGlzIGlzIHRoYXQg
aWYgaSA9IC0xLCB0aGlzIHBhc3NlcyB0aGUgdGVzdCwgYW5kIHdlIGVuZCB1cCBhY2Nlc3NpbmcK
KyAgICAgICAgd2hhdCB3b3VsZCBiZSB0aGUgInRoaXMiIGFyZ3VtZW50IHNsb3QuIFRoYXQncyB3
cm9uZywgc2luY2Ugd2Ugc2hvdWxkIHJlYWxseSBiZSBib3R0b21pbmcKKyAgICAgICAgb3V0IGlu
IGFyZ3VtZW50c1siLTEiXSwgd2hpY2ggaXMgdXN1YWxseSB1bmRlZmluZWQgYnV0IGNvdWxkIGJl
IGFueXRoaW5nLiBJdCdzIGV2ZW4gd29yc2UKKyAgICAgICAgaWYgdGhlIGZ1bmN0aW9uIGlzIGlu
bGluZWQgb3IgaWYgd2UncmUgaW4gYSBjb25zdHJ1Y3RvciAtIGluIHRoYXQgY2FzZSB0aGUgInRo
aXMiIHNsb3QKKyAgICAgICAgY291bGQgYmUgZ2FyYmFnZS4KKyAgICAgICAgCisgICAgICAgIEl0
IHR1cm5zIG91dCB0aGF0IHdlIGhhZCB0aGlzIGJ1ZyBpbiBhbGwgb2Ygb3VyIGVuZ2luZXMuCisg
ICAgICAgIAorICAgICAgICBUaGlzIGZpeGVzIHRoZSBpc3N1ZSBieSBjaGFuZ2luZyB0aGUgYWxn
b3JpdGhtIHRvOgorICAgICAgICAKKyAgICAgICAgICAgIGxvYWQzMiBjYWxsRnJhbWUuQXJndW1l
bnRDb3VudCwgdG1wCisgICAgICAgICAgICBzdWIgMSwgdG1wCisgICAgICAgICAgICBicmFuY2hB
Ym92ZU9yRXF1YWwgaSwgdG1wLCBzbG93UGF0aAorICAgICAgICAKKyAgICAgICAgSW4gc29tZSBl
bmdpbmVzLCB3ZSB3b3VsZCBoYXZlIHVzZWQgdGhlIG1vZGlmaWVkICJpIiAodGhlIG9uZSB0aGF0
IGhhZCAxIGFkZGVkIHRvIGl0KSBmb3IKKyAgICAgICAgdGhlIHN1YnNlcXVlbnQgYXJndW1lbnQg
bG9hZDsgc2luY2Ugd2UgZG9uJ3QgZG8gdGhpcyBhbnltb3JlIEkgYWxzbyBoYWQgdG8gY2hhbmdl
IHNvbWUgb2YKKyAgICAgICAgdGhlIG9mZnNldHMgb24gdGhlIEJhc2VJbmRleCBhcmd1bWVudHMg
bG9hZC4KKyAgICAgICAgCisgICAgICAgIFRoaXMgYWxzbyBpbmNsdWRlcyB0ZXN0cyB0aGF0IGFy
ZSB3cml0dGVuIGluIHN1Y2ggYSB3YXkgYXMgdG8gZ2V0IGNvdmVyYWdlIG9uIExMSW50IGFuZAor
ICAgICAgICBCYXNlbGluZSBKSVQgKGdldC1teS1hcmd1bWVudC1ieS12YWwtd3JhcC1hcm91bmQt
bm8td2FybS11cCksIERGRyBhbmQgRlRMCisgICAgICAgIChnZXQtbXktYXJndW1lbnQtYnktdmFs
LXdyYXAtYXJvdW5kKSwgYW5kIERGRyB3aGVuIHdlJ3JlIGJlaW5nIHBhcmFub2lkIGFib3V0IHRo
ZSB1c2VyCisgICAgICAgIG92ZXJ3cml0aW5nIHRoZSAiYXJndW1lbnRzIiB2YXJpYWJsZSAoZ2V0
LW15LWFyZ3VtZW50LWJ5LXZhbC1zYWZlLXdyYXAtYXJvdW5kKS4KKworICAgICAgICAqIGRmZy9E
RkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBm
dGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9M
TFZNOjpjb21waWxlR2V0TXlBcmd1bWVudEJ5VmFsKToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2Rl
cy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfYXJndW1lbnRfYnlfdmFsKToK
KyAgICAgICAgKiBqaXQvSklUT3Bjb2RlczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0X29wX2dldF9hcmd1bWVudF9ieV92YWwpOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIzMl82NC5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0
LmFzbToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2V0LW15LWFyZ3VtZW50LWJ5LXZhbC1zYWZl
LXdyYXAtYXJvdW5kLmpzOiBBZGRlZC4KKyAgICAgICAgKGZvbyk6CisgICAgICAgICogdGVzdHMv
c3RyZXNzL2dldC1teS1hcmd1bWVudC1ieS12YWwtd3JhcC1hcm91bmQtbm8td2FybS11cC5qczog
QWRkZWQuCisgICAgICAgIChmb28pOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9nZXQtbXktYXJn
dW1lbnQtYnktdmFsLXdyYXAtYXJvdW5kLmpzOiBBZGRlZC4KKyAgICAgICAgKGZvbyk6CisKIDIw
MTUtMDItMDIgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBbRlRM
XSBpbmxpbmVkIEdldE15QXJndW1lbnRCeVZhbCB3aXRoIG5vIGFyZ3VtZW50cyBwYXNzZWQgY2F1
c2VzIGluc3RhbnQgY3Jhc2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkocmV2aXNpb24gMTc5NTMxKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDM0NywyMiArNDM0NywxOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICAgICAgICAgIFRydXN0ZWRJbW0zMihKU1ZhbHVl
OjpFbXB0eVZhbHVlVGFnKSkpOwogICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgbV9q
aXQuYWRkMzIoVHJ1c3RlZEltbTMyKDEpLCBpbmRleEdQUiwgcmVzdWx0UGF5bG9hZEdQUik7Ci0g
ICAgICAgICAgICAKICAgICAgICAgaWYgKG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxs
RnJhbWUpIHsKICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soCiAgICAgICAgICAgICAgICAg
VW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIDAsCiAgICAgICAgICAgICAgICAgbV9qaXQuYnJh
bmNoMzIoCiAgICAgICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpBYm92ZU9yRXF1YWwsCi0g
ICAgICAgICAgICAgICAgICAgIHJlc3VsdFBheWxvYWRHUFIsCisgICAgICAgICAgICAgICAgICAg
IGluZGV4R1BSLAogICAgICAgICAgICAgICAgICAgICBJbW0zMihub2RlLT5vcmlnaW4uc2VtYW50
aWMuaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgpKSkpOwogICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpwYXlsb2FkRm9yKEpTU3Rh
Y2s6OkFyZ3VtZW50Q291bnQpLCByZXN1bHRQYXlsb2FkR1BSKTsKKyAgICAgICAgICAgIG1faml0
LnN1YjMyKFRydXN0ZWRJbW0zMigxKSwgcmVzdWx0UGF5bG9hZEdQUik7CiAgICAgICAgICAgICBz
cGVjdWxhdGlvbkNoZWNrKAogICAgICAgICAgICAgICAgIFVuY291bnRhYmxlLCBKU1ZhbHVlUmVn
cygpLCAwLAotICAgICAgICAgICAgICAgIG1faml0LmJyYW5jaDMyKAotICAgICAgICAgICAgICAg
ICAgICBKSVRDb21waWxlcjo6QWJvdmVPckVxdWFsLAotICAgICAgICAgICAgICAgICAgICByZXN1
bHRQYXlsb2FkR1BSLAotICAgICAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6cGF5bG9hZEZv
cihKU1N0YWNrOjpBcmd1bWVudENvdW50KSkpOworICAgICAgICAgICAgICAgIG1faml0LmJyYW5j
aDMyKEpJVENvbXBpbGVyOjpBYm92ZU9yRXF1YWwsIGluZGV4R1BSLCByZXN1bHRQYXlsb2FkR1BS
KSk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBz
bG93QXJndW1lbnQ7CkBAIC00Mzk5LDEzICs0Mzk2LDEzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGUoTm9kZSogbm9kZSkKIAogICAgICAgICBtX2ppdC5sb2FkMzIoCiAgICAgICAgICAg
ICBKSVRDb21waWxlcjo6QmFzZUluZGV4KAotICAgICAgICAgICAgICAgIEdQUkluZm86OmNhbGxG
cmFtZVJlZ2lzdGVyLCByZXN1bHRQYXlsb2FkR1BSLCBKSVRDb21waWxlcjo6VGltZXNFaWdodCwK
LSAgICAgICAgICAgICAgICBtX2ppdC5vZmZzZXRPZkFyZ3VtZW50c0luY2x1ZGluZ1RoaXMobm9k
ZS0+b3JpZ2luLnNlbWFudGljKSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlw
dG9yLCBhc0JpdHMudGFnKSksCisgICAgICAgICAgICAgICAgR1BSSW5mbzo6Y2FsbEZyYW1lUmVn
aXN0ZXIsIGluZGV4R1BSLCBKSVRDb21waWxlcjo6VGltZXNFaWdodCwKKyAgICAgICAgICAgICAg
ICBtX2ppdC5vZmZzZXRPZkFyZ3VtZW50c0luY2x1ZGluZ1RoaXMobm9kZS0+b3JpZ2luLnNlbWFu
dGljKSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFn
KSArIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpLAogICAgICAgICAgICAgcmVzdWx0VGFnR1BSKTsK
ICAgICAgICAgbV9qaXQubG9hZDMyKAogICAgICAgICAgICAgSklUQ29tcGlsZXI6OkJhc2VJbmRl
eCgKLSAgICAgICAgICAgICAgICBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgcmVzdWx0UGF5
bG9hZEdQUiwgSklUQ29tcGlsZXI6OlRpbWVzRWlnaHQsCi0gICAgICAgICAgICAgICAgbV9qaXQu
b2Zmc2V0T2ZBcmd1bWVudHNJbmNsdWRpbmdUaGlzKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykgKyBP
QkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnBheWxvYWQpKSwK
KyAgICAgICAgICAgICAgICBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgaW5kZXhHUFIsIEpJ
VENvbXBpbGVyOjpUaW1lc0VpZ2h0LAorICAgICAgICAgICAgICAgIG1faml0Lm9mZnNldE9mQXJn
dW1lbnRzSW5jbHVkaW5nVGhpcyhub2RlLT5vcmlnaW4uc2VtYW50aWMpICsgT0JKRUNUX09GRlNF
VE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSArIHNpemVvZihFbmNv
ZGVkSlNWYWx1ZSkpLAogICAgICAgICAgICAgcmVzdWx0UGF5bG9hZEdQUik7CiAgICAgICAgICAg
ICAKICAgICAgICAgc2xvd0FyZ3VtZW50LmxpbmsoJm1faml0KTsKQEAgLTQ0MjcsMTkgKzQ0MjQs
MTcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAg
ICAgICAgIEpJVENvbXBpbGVyOjp0YWdGb3IobV9qaXQuZ3JhcGgoKS5tYWNoaW5lQXJndW1lbnRz
UmVnaXN0ZXJGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksCiAgICAgICAgICAgICAgICAgVHJ1
c3RlZEltbTMyKEpTVmFsdWU6OkVtcHR5VmFsdWVUYWcpKSk7CiAgICAgICAgIAotICAgICAgICBt
X2ppdC5hZGQzMihUcnVzdGVkSW1tMzIoMSksIGluZGV4R1BSLCByZXN1bHRQYXlsb2FkR1BSKTsK
ICAgICAgICAgaWYgKG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWUpIHsKICAg
ICAgICAgICAgIHNsb3dQYXRoLmFwcGVuZCgKICAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2gz
MigKICAgICAgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6OkFib3ZlT3JFcXVhbCwKLSAgICAg
ICAgICAgICAgICAgICAgcmVzdWx0UGF5bG9hZEdQUiwKKyAgICAgICAgICAgICAgICAgICAgaW5k
ZXhHUFIsCiAgICAgICAgICAgICAgICAgICAgIEltbTMyKG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5p
bmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCkpKSk7CiAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OnBheWxvYWRGb3IoSlNTdGFjazo6
QXJndW1lbnRDb3VudCksIHJlc3VsdFBheWxvYWRHUFIpOworICAgICAgICAgICAgbV9qaXQuc3Vi
MzIoVHJ1c3RlZEltbTMyKDEpLCByZXN1bHRQYXlsb2FkR1BSKTsKICAgICAgICAgICAgIHNsb3dQ
YXRoLmFwcGVuZCgKLSAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2gzMigKLSAgICAgICAgICAg
ICAgICAgICAgSklUQ29tcGlsZXI6OkFib3ZlT3JFcXVhbCwKLSAgICAgICAgICAgICAgICAgICAg
cmVzdWx0UGF5bG9hZEdQUiwKLSAgICAgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6OnBheWxv
YWRGb3IoSlNTdGFjazo6QXJndW1lbnRDb3VudCkpKTsKKyAgICAgICAgICAgICAgICBtX2ppdC5i
cmFuY2gzMihKSVRDb21waWxlcjo6QWJvdmVPckVxdWFsLCBpbmRleEdQUiwgcmVzdWx0UGF5bG9h
ZEdQUikpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBKSVRDb21waWxlcjo6SnVtcExp
c3Qgc2xvd0FyZ3VtZW50OwpAQCAtNDQ3NSwxMyArNDQ3MCwxMyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAKICAgICAgICAgbV9qaXQubG9hZDMyKAogICAgICAg
ICAgICAgSklUQ29tcGlsZXI6OkJhc2VJbmRleCgKLSAgICAgICAgICAgICAgICBHUFJJbmZvOjpj
YWxsRnJhbWVSZWdpc3RlciwgcmVzdWx0UGF5bG9hZEdQUiwgSklUQ29tcGlsZXI6OlRpbWVzRWln
aHQsCi0gICAgICAgICAgICAgICAgbV9qaXQub2Zmc2V0T2ZBcmd1bWVudHNJbmNsdWRpbmdUaGlz
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYykgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVz
Y3JpcHRvciwgYXNCaXRzLnRhZykpLAorICAgICAgICAgICAgICAgIEdQUkluZm86OmNhbGxGcmFt
ZVJlZ2lzdGVyLCBpbmRleEdQUiwgSklUQ29tcGlsZXI6OlRpbWVzRWlnaHQsCisgICAgICAgICAg
ICAgICAgbV9qaXQub2Zmc2V0T2ZBcmd1bWVudHNJbmNsdWRpbmdUaGlzKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYykgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRz
LnRhZykgKyBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKSwKICAgICAgICAgICAgIHJlc3VsdFRhZ0dQ
Uik7CiAgICAgICAgIG1faml0LmxvYWQzMigKICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpCYXNl
SW5kZXgoCi0gICAgICAgICAgICAgICAgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIHJlc3Vs
dFBheWxvYWRHUFIsIEpJVENvbXBpbGVyOjpUaW1lc0VpZ2h0LAotICAgICAgICAgICAgICAgIG1f
aml0Lm9mZnNldE9mQXJndW1lbnRzSW5jbHVkaW5nVGhpcyhub2RlLT5vcmlnaW4uc2VtYW50aWMp
ICsgT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2Fk
KSksCisgICAgICAgICAgICAgICAgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIGluZGV4R1BS
LCBKSVRDb21waWxlcjo6VGltZXNFaWdodCwKKyAgICAgICAgICAgICAgICBtX2ppdC5vZmZzZXRP
ZkFyZ3VtZW50c0luY2x1ZGluZ1RoaXMobm9kZS0+b3JpZ2luLnNlbWFudGljKSArIE9CSkVDVF9P
RkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkgKyBzaXplb2Yo
RW5jb2RlZEpTVmFsdWUpKSwKICAgICAgICAgICAgIHJlc3VsdFBheWxvYWRHUFIpOwogICAgICAg
ICAKICAgICAgICAgaWYgKG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWUpIHsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDY0LmNwcAkocmV2aXNpb24gMTc5NTMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDM5NCwyMSArNDM5NCwx
OSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAg
ICAgICAgICAgICAgICBtX2ppdC5ncmFwaCgpLm1hY2hpbmVBcmd1bWVudHNSZWdpc3RlckZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpKSkpOwogICAgICAgICB9CiAKLSAgICAgICAgbV9qaXQuYWRk
MzIoVHJ1c3RlZEltbTMyKDEpLCBpbmRleEdQUiwgcmVzdWx0R1BSKTsKICAgICAgICAgaWYgKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWUpIHsKICAgICAgICAgICAgIHNwZWN1
bGF0aW9uQ2hlY2soCiAgICAgICAgICAgICAgICAgVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCks
IDAsCiAgICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoMzIoCiAgICAgICAgICAgICAgICAgICAg
IEpJVENvbXBpbGVyOjpBYm92ZU9yRXF1YWwsCi0gICAgICAgICAgICAgICAgICAgIHJlc3VsdEdQ
UiwKLSAgICAgICAgICAgICAgICAgICAgSW1tMzIobm9kZS0+b3JpZ2luLnNlbWFudGljLmlubGlu
ZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKSkpKTsKKyAgICAgICAgICAgICAgICAgICAgaW5k
ZXhHUFIsCisgICAgICAgICAgICAgICAgICAgIEltbTMyKG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5p
bmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCkgLSAxKSkpOwogICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpwYXlsb2FkRm9yKEpTU3Rh
Y2s6OkFyZ3VtZW50Q291bnQpLCByZXN1bHRHUFIpOworICAgICAgICAgICAgbV9qaXQuc3ViMzIo
VHJ1c3RlZEltbTMyKDEpLCByZXN1bHRHUFIpOwogICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVj
aygKICAgICAgICAgICAgICAgICBVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgMCwKLSAgICAg
ICAgICAgICAgICBtX2ppdC5icmFuY2gzMigKLSAgICAgICAgICAgICAgICAgICAgSklUQ29tcGls
ZXI6OkFib3ZlT3JFcXVhbCwKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0R1BSLAotICAgICAg
ICAgICAgICAgICAgICBKSVRDb21waWxlcjo6cGF5bG9hZEZvcihKU1N0YWNrOjpBcmd1bWVudENv
dW50KSkpOworICAgICAgICAgICAgICAgIG1faml0LmJyYW5jaDMyKEpJVENvbXBpbGVyOjpBYm92
ZU9yRXF1YWwsIGluZGV4R1BSLCByZXN1bHRHUFIpKTsKICAgICAgICAgfQogCiAgICAgICAgIEpJ
VENvbXBpbGVyOjpKdW1wTGlzdCBzbG93QXJndW1lbnQ7CkBAIC00NDM4LDExICs0NDM2LDkgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICB9CiAgICAg
ICAgIHNsb3dBcmd1bWVudE91dE9mQm91bmRzLmxpbmsoJm1faml0KTsKIAotICAgICAgICBtX2pp
dC5zaWduRXh0ZW5kMzJUb1B0cihyZXN1bHRHUFIsIHJlc3VsdEdQUik7Ci0gICAgICAgICAgICAK
ICAgICAgICAgbV9qaXQubG9hZDY0KAogICAgICAgICAgICAgSklUQ29tcGlsZXI6OkJhc2VJbmRl
eCgKLSAgICAgICAgICAgICAgICBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgcmVzdWx0R1BS
LCBKSVRDb21waWxlcjo6VGltZXNFaWdodCwgbV9qaXQub2Zmc2V0T2ZBcmd1bWVudHNJbmNsdWRp
bmdUaGlzKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLAorICAgICAgICAgICAgICAgIEdQUkluZm86
OmNhbGxGcmFtZVJlZ2lzdGVyLCBpbmRleEdQUiwgSklUQ29tcGlsZXI6OlRpbWVzRWlnaHQsIG1f
aml0Lm9mZnNldE9mQXJndW1lbnRzSW5jbHVkaW5nVGhpcyhub2RlLT5vcmlnaW4uc2VtYW50aWMp
ICsgc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSksCiAgICAgICAgICAgICByZXN1bHRHUFIpOwogCiAg
ICAgICAgIHNsb3dBcmd1bWVudC5saW5rKCZtX2ppdCk7CkBAIC00NDYzLDE5ICs0NDU5LDE3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgICAg
ICBKSVRDb21waWxlcjo6YWRkcmVzc0ZvcigKICAgICAgICAgICAgICAgICAgICAgbV9qaXQuZ3Jh
cGgoKS5tYWNoaW5lQXJndW1lbnRzUmVnaXN0ZXJGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSkp
KTsKICAgICAgICAgCi0gICAgICAgIG1faml0LmFkZDMyKFRydXN0ZWRJbW0zMigxKSwgaW5kZXhH
UFIsIHJlc3VsdEdQUik7CiAgICAgICAgIGlmIChub2RlLT5vcmlnaW4uc2VtYW50aWMuaW5saW5l
Q2FsbEZyYW1lKSB7CiAgICAgICAgICAgICBzbG93UGF0aC5hcHBlbmQoCiAgICAgICAgICAgICAg
ICAgbV9qaXQuYnJhbmNoMzIoCiAgICAgICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpBYm92
ZU9yRXF1YWwsCiAgICAgICAgICAgICAgICAgICAgIHJlc3VsdEdQUiwKLSAgICAgICAgICAgICAg
ICAgICAgSW1tMzIobm9kZS0+b3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxGcmFtZS0+YXJndW1l
bnRzLnNpemUoKSkpKTsKKyAgICAgICAgICAgICAgICAgICAgSW1tMzIobm9kZS0+b3JpZ2luLnNl
bWFudGljLmlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKSAtIDEpKSk7CiAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OnBheWxvYWRG
b3IoSlNTdGFjazo6QXJndW1lbnRDb3VudCksIHJlc3VsdEdQUik7CisgICAgICAgICAgICBtX2pp
dC5zdWIzMihUcnVzdGVkSW1tMzIoMSksIHJlc3VsdEdQUik7CiAgICAgICAgICAgICBzbG93UGF0
aC5hcHBlbmQoCi0gICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoMzIoCi0gICAgICAgICAgICAg
ICAgICAgIEpJVENvbXBpbGVyOjpBYm92ZU9yRXF1YWwsCi0gICAgICAgICAgICAgICAgICAgIHJl
c3VsdEdQUiwKLSAgICAgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6OnBheWxvYWRGb3IoSlNT
dGFjazo6QXJndW1lbnRDb3VudCkpKTsKKyAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2gzMihK
SVRDb21waWxlcjo6QWJvdmVPckVxdWFsLCBpbmRleEdQUiwgcmVzdWx0R1BSKSk7CiAgICAgICAg
IH0KICAgICAgICAgCiAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93QXJndW1lbnQ7
CkBAIC00NTA1LDExICs0NDk5LDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2Rl
KiBub2RlKQogICAgICAgICB9CiAgICAgICAgIHNsb3dBcmd1bWVudE91dE9mQm91bmRzLmxpbmso
Jm1faml0KTsKIAotICAgICAgICBtX2ppdC5zaWduRXh0ZW5kMzJUb1B0cihyZXN1bHRHUFIsIHJl
c3VsdEdQUik7Ci0gICAgICAgIAogICAgICAgICBtX2ppdC5sb2FkNjQoCiAgICAgICAgICAgICBK
SVRDb21waWxlcjo6QmFzZUluZGV4KAotICAgICAgICAgICAgICAgIEdQUkluZm86OmNhbGxGcmFt
ZVJlZ2lzdGVyLCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpUaW1lc0VpZ2h0LCBtX2ppdC5vZmZz
ZXRPZkFyZ3VtZW50c0luY2x1ZGluZ1RoaXMobm9kZS0+b3JpZ2luLnNlbWFudGljKSksCisgICAg
ICAgICAgICAgICAgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIGluZGV4R1BSLCBKSVRDb21w
aWxlcjo6VGltZXNFaWdodCwgbV9qaXQub2Zmc2V0T2ZBcmd1bWVudHNJbmNsdWRpbmdUaGlzKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYykgKyBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKSwKICAgICAgICAg
ICAgIHJlc3VsdEdQUik7CiAgICAgICAgIAogICAgICAgICBpZiAobm9kZS0+b3JpZ2luLnNlbWFu
dGljLmlubGluZUNhbGxGcmFtZSkgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExMb3dlckRGR1RvTExWTS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAJKHJldmlzaW9uIDE3OTUzMSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xOTk3LDE2ICsxOTk3LDE1IEBAIHByaXZhdGU6CiAgICAgICAgIAogICAgICAgICBDb2RlT3Jp
Z2luIGNvZGVPcmlnaW4gPSBtX25vZGUtPm9yaWdpbi5zZW1hbnRpYzsKICAgICAgICAgCi0gICAg
ICAgIExWYWx1ZSB6ZXJvQmFzZWRJbmRleCA9IGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQxKCkpOwot
ICAgICAgICBMVmFsdWUgb25lQmFzZWRJbmRleCA9IG1fb3V0LmFkZCh6ZXJvQmFzZWRJbmRleCwg
bV9vdXQuaW50MzJPbmUpOworICAgICAgICBMVmFsdWUgaW5kZXggPSBsb3dJbnQzMihtX25vZGUt
PmNoaWxkMSgpKTsKICAgICAgICAgCiAgICAgICAgIExWYWx1ZSBsaW1pdDsKICAgICAgICAgaWYg
KGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lKQotICAgICAgICAgICAgbGltaXQgPSBtX291dC5j
b25zdEludDMyKGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgpKTsK
KyAgICAgICAgICAgIGxpbWl0ID0gbV9vdXQuY29uc3RJbnQzMihjb2RlT3JpZ2luLmlubGluZUNh
bGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKSAtIDEpOwogICAgICAgICBlbHNlCi0gICAgICAgICAg
ICBsaW1pdCA9IG1fb3V0LmxvYWQzMihwYXlsb2FkRm9yKEpTU3RhY2s6OkFyZ3VtZW50Q291bnQp
KTsKKyAgICAgICAgICAgIGxpbWl0ID0gbV9vdXQuc3ViKG1fb3V0LmxvYWQzMihwYXlsb2FkRm9y
KEpTU3RhY2s6OkFyZ3VtZW50Q291bnQpKSwgbV9vdXQuaW50MzJPbmUpOwogICAgICAgICAKLSAg
ICAgICAgc3BlY3VsYXRlKFVuY291bnRhYmxlLCBub1ZhbHVlKCksIDAsIG1fb3V0LmFib3ZlT3JF
cXVhbChvbmVCYXNlZEluZGV4LCBsaW1pdCkpOworICAgICAgICBzcGVjdWxhdGUoVW5jb3VudGFi
bGUsIG5vVmFsdWUoKSwgMCwgbV9vdXQuYWJvdmVPckVxdWFsKGluZGV4LCBsaW1pdCkpOwogICAg
ICAgICAKICAgICAgICAgU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlID0gbV9ncmFwaC5iYXNlbGlu
ZUNvZGVCbG9ja0Zvcihjb2RlT3JpZ2luKS0+c3ltYm9sVGFibGUoKTsKICAgICAgICAgaWYgKHN5
bWJvbFRhYmxlLT5zbG93QXJndW1lbnRzKCkpIHsKQEAgLTIwMzIsNyArMjAzMSw3IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICBiYXNlID0gYWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1
bWVudCgxKSk7CiAgICAgICAgIAogICAgICAgICBMVmFsdWUgcG9pbnRlciA9IG1fb3V0LmJhc2VJ
bmRleCgKLSAgICAgICAgICAgIGJhc2UudmFsdWUoKSwgbV9vdXQuemVyb0V4dCh6ZXJvQmFzZWRJ
bmRleCwgbV9vdXQuaW50UHRyKSwgU2NhbGVFaWdodCk7CisgICAgICAgICAgICBiYXNlLnZhbHVl
KCksIG1fb3V0Lnplcm9FeHQoaW5kZXgsIG1fb3V0LmludFB0ciksIFNjYWxlRWlnaHQpOwogICAg
ICAgICBzZXRKU1ZhbHVlKG1fb3V0LmxvYWQ2NChUeXBlZFBvaW50ZXIobV9oZWFwcy52YXJpYWJs
ZXMuYXRBbnlJbmRleCgpLCBwb2ludGVyKSkpOwogICAgIH0KIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAkocmV2aXNpb24gMTc5NTMxKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMDQ0LDEzICsxMDQ0LDEzIEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9hcmd1
bWVudF9ieV92YWwoSW4KICAgICBhZGRTbG93Q2FzZShicmFuY2gzMihOb3RFcXVhbCwgdGFnRm9y
KGFyZ3VtZW50c1JlZ2lzdGVyKSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkVtcHR5VmFsdWVUYWcp
KSk7CiAgICAgZW1pdExvYWQocHJvcGVydHksIHJlZ1QxLCByZWdUMik7CiAgICAgYWRkU2xvd0Nh
c2UoYnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QxLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6SW50MzJU
YWcpKSk7Ci0gICAgYWRkMzIoVHJ1c3RlZEltbTMyKDEpLCByZWdUMik7CiAgICAgLy8gcmVnVDIg
bm93IGNvbnRhaW5zIHRoZSBpbnRlZ2VyIGluZGV4IG9mIHRoZSBhcmd1bWVudCB3ZSB3YW50LCBp
bmNsdWRpbmcgdGhpcwogICAgIGxvYWQzMihwYXlsb2FkRm9yKEpTU3RhY2s6OkFyZ3VtZW50Q291
bnQpLCByZWdUMyk7CisgICAgc3ViMzIoVHJ1c3RlZEltbTMyKDEpLCByZWdUMyk7CiAgICAgYWRk
U2xvd0Nhc2UoYnJhbmNoMzIoQWJvdmVPckVxdWFsLCByZWdUMiwgcmVnVDMpKTsKICAgICAKLSAg
ICBsb2FkUHRyKEJhc2VJbmRleChjYWxsRnJhbWVSZWdpc3RlciwgcmVnVDIsIFRpbWVzRWlnaHQs
IE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy5wYXlsb2FkKSArIENhbGxGcmFtZTo6
dGhpc0FyZ3VtZW50T2Zmc2V0KCkgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3Rlcikp
KSwgcmVnVDApOwotICAgIGxvYWRQdHIoQmFzZUluZGV4KGNhbGxGcmFtZVJlZ2lzdGVyLCByZWdU
MiwgVGltZXNFaWdodCwgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnRhZykgKyBD
YWxsRnJhbWU6OnRoaXNBcmd1bWVudE9mZnNldCgpICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2Yo
UmVnaXN0ZXIpKSksIHJlZ1QxKTsKKyAgICBsb2FkUHRyKEJhc2VJbmRleChjYWxsRnJhbWVSZWdp
c3RlciwgcmVnVDIsIFRpbWVzRWlnaHQsIE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0
cy5wYXlsb2FkKSArIENhbGxGcmFtZTo6dGhpc0FyZ3VtZW50T2Zmc2V0KCkgKiBzdGF0aWNfY2Fz
dDxpbnQ+KHNpemVvZihSZWdpc3RlcikpICsgc2l6ZW9mKFJlZ2lzdGVyKSksIHJlZ1QwKTsKKyAg
ICBsb2FkUHRyKEJhc2VJbmRleChjYWxsRnJhbWVSZWdpc3RlciwgcmVnVDIsIFRpbWVzRWlnaHQs
IE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy50YWcpICsgQ2FsbEZyYW1lOjp0aGlz
QXJndW1lbnRPZmZzZXQoKSAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgKyBz
aXplb2YoUmVnaXN0ZXIpKSwgcmVnVDEpOwogICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoKTsK
ICAgICBlbWl0U3RvcmUoZHN0LCByZWdUMSwgcmVnVDApOwogfQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCShyZXZpc2lvbiAxNzk1MzEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MjAs
MTMgKzkyMCwxMiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYXJndW1lbnRfYnlfdmFsKEluCiAg
ICAgYWRkU2xvd0Nhc2UoYnJhbmNoVGVzdDY0KE5vblplcm8sIGFkZHJlc3NGb3IoYXJndW1lbnRz
UmVnaXN0ZXIpKSk7CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihwcm9wZXJ0eSwgcmVnVDEp
OwogICAgIGFkZFNsb3dDYXNlKGVtaXRKdW1wSWZOb3RJbW1lZGlhdGVJbnRlZ2VyKHJlZ1QxKSk7
Ci0gICAgYWRkMzIoVHJ1c3RlZEltbTMyKDEpLCByZWdUMSk7Ci0gICAgLy8gcmVnVDEgbm93IGNv
bnRhaW5zIHRoZSBpbnRlZ2VyIGluZGV4IG9mIHRoZSBhcmd1bWVudCB3ZSB3YW50LCBpbmNsdWRp
bmcgdGhpcwogICAgIGVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyMzIoSlNTdGFjazo6QXJndW1l
bnRDb3VudCwgcmVnVDIpOworICAgIHN1YjMyKFRydXN0ZWRJbW0zMigxKSwgcmVnVDIpOwogICAg
IGFkZFNsb3dDYXNlKGJyYW5jaDMyKEFib3ZlT3JFcXVhbCwgcmVnVDEsIHJlZ1QyKSk7CiAKICAg
ICBzaWduRXh0ZW5kMzJUb1B0cihyZWdUMSwgcmVnVDEpOwotICAgIGxvYWQ2NChCYXNlSW5kZXgo
Y2FsbEZyYW1lUmVnaXN0ZXIsIHJlZ1QxLCBUaW1lc0VpZ2h0LCBDYWxsRnJhbWU6OnRoaXNBcmd1
bWVudE9mZnNldCgpICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSksIHJlZ1Qw
KTsKKyAgICBsb2FkNjQoQmFzZUluZGV4KGNhbGxGcmFtZVJlZ2lzdGVyLCByZWdUMSwgVGltZXNF
aWdodCwgQ2FsbEZyYW1lOjp0aGlzQXJndW1lbnRPZmZzZXQoKSAqIHN0YXRpY19jYXN0PGludD4o
c2l6ZW9mKFJlZ2lzdGVyKSkgKyBzaXplb2YoUmVnaXN0ZXIpKSwgcmVnVDApOwogICAgIGVtaXRW
YWx1ZVByb2ZpbGluZ1NpdGUoKTsKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwgcmVn
VDApOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXIzMl82NC5hc20KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20JKHJldmlzaW9uIDE3OTUzMSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNjEzLDEyICsxNjEzLDEyIEBAIF9sbGludF9vcF9nZXRfYXJndW1lbnRf
YnlfdmFsOgogICAgIGxvYWRpIDEyW1BDXSwgdDEKICAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0
MCwgOF0sIEVtcHR5VmFsdWVUYWcsIC5vcEdldEFyZ3VtZW50QnlWYWxTbG93CiAgICAgbG9hZENv
bnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDEsIEludDMyVGFnLCB0MiwgLm9wR2V0QXJndW1lbnRC
eVZhbFNsb3cpCi0gICAgYWRkaSAxLCB0MgogICAgIGxvYWRpIEFyZ3VtZW50Q291bnQgKyBQYXls
b2FkT2Zmc2V0W2Nmcl0sIHQxCisgICAgc3ViaSAxLCB0MgogICAgIGJpYWVxIHQyLCB0MSwgLm9w
R2V0QXJndW1lbnRCeVZhbFNsb3cKICAgICBsb2FkaSA0W1BDXSwgdDMKLSAgICBsb2FkaSBUaGlz
QXJndW1lbnRPZmZzZXQgKyBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0sIHQwCi0gICAgbG9hZGkgVGhp
c0FyZ3VtZW50T2Zmc2V0ICsgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XSwgdDEKKyAgICBsb2Fk
aSBUaGlzQXJndW1lbnRPZmZzZXQgKyA4ICsgVGFnT2Zmc2V0W2NmciwgdDIsIDhdLCB0MAorICAg
IGxvYWRpIFRoaXNBcmd1bWVudE9mZnNldCArIDggKyBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhd
LCB0MQogICAgIHN0b3JlaSB0MCwgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCiAgICAgc3RvcmVpIHQx
LCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCiAgICAgdmFsdWVQcm9maWxlKHQwLCB0MSwgMjQs
IHQyKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXI2NC5hc20KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXI2NC5hc20JKHJldmlzaW9uIDE3OTUzMSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCSh3b3JraW5nIGNvcHkpCkBA
IC0xNDcxLDEyICsxNDcxLDEzIEBAIF9sbGludF9vcF9nZXRfYXJndW1lbnRfYnlfdmFsOgogICAg
IGxvYWRpc0Zyb21JbnN0cnVjdGlvbigzLCB0MSkKICAgICBidHFueiBbY2ZyLCB0MCwgOF0sIC5v
cEdldEFyZ3VtZW50QnlWYWxTbG93CiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUludDMyKHQx
LCB0MiwgLm9wR2V0QXJndW1lbnRCeVZhbFNsb3cpCi0gICAgYWRkaSAxLCB0MgogICAgIGxvYWRp
IEFyZ3VtZW50Q291bnQgKyBQYXlsb2FkT2Zmc2V0W2Nmcl0sIHQxCisgICAgc3hpMnEgdDIsIHQy
CisgICAgc3ViaSAxLCB0MQogICAgIGJpYWVxIHQyLCB0MSwgLm9wR2V0QXJndW1lbnRCeVZhbFNs
b3cKICAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMSwgdDMpCiAgICAgbG9hZHBGcm9tSW5zdHJ1
Y3Rpb24oNiwgdDEpCi0gICAgbG9hZHEgVGhpc0FyZ3VtZW50T2Zmc2V0W2NmciwgdDIsIDhdLCB0
MAorICAgIGxvYWRxIFRoaXNBcmd1bWVudE9mZnNldCArIDhbY2ZyLCB0MiwgOF0sIHQwCiAgICAg
c3RvcmVxIHQwLCBbY2ZyLCB0MywgOF0KICAgICB2YWx1ZVByb2ZpbGUodDAsIDYsIHQxKQogICAg
IGRpc3BhdGNoKDcpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dl
dC1teS1hcmd1bWVudC1ieS12YWwtc2FmZS13cmFwLWFyb3VuZC5qcwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dldC1teS1hcmd1bWVudC1ieS12YWwt
c2FmZS13cmFwLWFyb3VuZC5qcwkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9zdHJlc3MvZ2V0LW15LWFyZ3VtZW50LWJ5LXZhbC1zYWZlLXdyYXAtYXJvdW5kLmpz
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTcgQEAKK2Z1bmN0aW9uIGZvbyhpbmRleCkgewor
ICAgIGlmIChpbmRleCA+IDEwMDApCisgICAgICAgIGFyZ3VtZW50cyA9IFsxLCAyLCAzXTsKKyAg
ICByZXR1cm4gYXJndW1lbnRzW2luZGV4XTsKK30KKworbm9JbmxpbmUoZm9vKTsKKworZm9yICh2
YXIgaSA9IDA7IGkgPCAxMDAwMDA7ICsraSkgeworICAgIHZhciByZXN1bHQgPSBmb28oMSwgNDIp
OworICAgIGlmIChyZXN1bHQgIT0gNDIpCisgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3Vs
dCBpbiBsb29wOiAiICsgcmVzdWx0OworfQorCit2YXIgcmVzdWx0ID0gZm9vKC0xKTsKK2lmIChy
ZXN1bHQgIT09IHZvaWQgMCkKKyAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQgYXQgZW5kOiAi
ICsgcmVzdWx0OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZXQt
bXktYXJndW1lbnQtYnktdmFsLXdyYXAtYXJvdW5kLW5vLXdhcm0tdXAuanMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZXQtbXktYXJndW1lbnQtYnkt
dmFsLXdyYXAtYXJvdW5kLW5vLXdhcm0tdXAuanMJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dldC1teS1hcmd1bWVudC1ieS12YWwtd3JhcC1hcm91
bmQtbm8td2FybS11cC5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDkgQEAKK2Z1bmN0aW9u
IGZvbyhpbmRleCkgeworICAgIHJldHVybiBhcmd1bWVudHNbaW5kZXhdOworfQorCitub0lubGlu
ZShmb28pOworCit2YXIgcmVzdWx0ID0gZm9vKC0xKTsKK2lmIChyZXN1bHQgIT09IHZvaWQgMCkK
KyAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQgYXQgZW5kOiAiICsgcmVzdWx0OwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZXQtbXktYXJndW1lbnQtYnktdmFs
LXdyYXAtYXJvdW5kLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0
cy9zdHJlc3MvZ2V0LW15LWFyZ3VtZW50LWJ5LXZhbC13cmFwLWFyb3VuZC5qcwkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2V0LW15LWFyZ3VtZW50
LWJ5LXZhbC13cmFwLWFyb3VuZC5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE1IEBACitm
dW5jdGlvbiBmb28oaW5kZXgpIHsKKyAgICByZXR1cm4gYXJndW1lbnRzW2luZGV4XTsKK30KKwor
bm9JbmxpbmUoZm9vKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDA7ICsraSkgeworICAg
IHZhciByZXN1bHQgPSBmb28oMSwgNDIpOworICAgIGlmIChyZXN1bHQgIT0gNDIpCisgICAgICAg
IHRocm93ICJFcnJvcjogYmFkIHJlc3VsdCBpbiBsb29wOiAiICsgcmVzdWx0OworfQorCit2YXIg
cmVzdWx0ID0gZm9vKC0xKTsKK2lmIChyZXN1bHQgIT09IHZvaWQgMCkKKyAgICB0aHJvdyAiRXJy
b3I6IGJhZCByZXN1bHQgYXQgZW5kOiAiICsgcmVzdWx0Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>245920</attachid>
            <date>2015-02-02 19:52:48 -0800</date>
            <delta_ts>2015-02-02 20:32:31 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>26186</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTc5NTM0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDczIEBA
CisyMDE1LTAyLTAyICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
YXJndW1lbnRzWy0xXSBzaG91bGQgaGF2ZSB3ZWxsLWRlZmluZWQgYmVoYXZpb3IKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MTE4MworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgQWNjb3JkaW5n
IHRvIEpTQydzIGludGVybmFsIGFyZ3VtZW50IG51bWJlcmluZywgMCBpcyAidGhpcyIgYW5kIDEg
aXMgdGhlIGZpcnN0IGFyZ3VtZW50LgorICAgICAgICBJbiB0aGUgImFyZ3VtZW50c1tpXSIgZXhw
cmVzc2lvbiwgInRoaXMiIGlzIG5vdCBhY2Nlc3NpYmxlIGFuZCBpID0gMCByZWZlcnMgdG8gdGhl
IGZpcnN0CisgICAgICAgIGFyZ3VtZW50LiBQcmV2aW91c2x5IHdlIGhhbmRsZWQgdGhlIGJvdW5k
cyBjaGVjayBpbiAiYXJndW1lbnRzW2ldIiAtIHdoZXJlICJhcmd1bWVudHMiIGlzCisgICAgICAg
IHN0YXRpY2FsbHkga25vd24gdG8gYmUgdGhlIGN1cnJlbnQgZnVuY3Rpb24ncyBhcmd1bWVudHMg
b2JqZWN0IC0gYXMgZm9sbG93czoKKyAgICAgICAgCisgICAgICAgICAgICBhZGQgMSwgaQorICAg
ICAgICAgICAgYnJhbmNoQWJvdmVPckVxdWFsIGksIGNhbGxGcmFtZS5Bcmd1bWVudENvdW50LCBz
bG93UGF0aAorICAgICAgICAKKyAgICAgICAgVGhlIHByb2JsZW0gd2l0aCB0aGlzIGlzIHRoYXQg
aWYgaSA9IC0xLCB0aGlzIHBhc3NlcyB0aGUgdGVzdCwgYW5kIHdlIGVuZCB1cCBhY2Nlc3NpbmcK
KyAgICAgICAgd2hhdCB3b3VsZCBiZSB0aGUgInRoaXMiIGFyZ3VtZW50IHNsb3QuIFRoYXQncyB3
cm9uZywgc2luY2Ugd2Ugc2hvdWxkIHJlYWxseSBiZSBib3R0b21pbmcKKyAgICAgICAgb3V0IGlu
IGFyZ3VtZW50c1siLTEiXSwgd2hpY2ggaXMgdXN1YWxseSB1bmRlZmluZWQgYnV0IGNvdWxkIGJl
IGFueXRoaW5nLiBJdCdzIGV2ZW4gd29yc2UKKyAgICAgICAgaWYgdGhlIGZ1bmN0aW9uIGlzIGlu
bGluZWQgb3IgaWYgd2UncmUgaW4gYSBjb25zdHJ1Y3RvciAtIGluIHRoYXQgY2FzZSB0aGUgInRo
aXMiIHNsb3QKKyAgICAgICAgY291bGQgYmUgZ2FyYmFnZS4KKyAgICAgICAgCisgICAgICAgIEl0
IHR1cm5zIG91dCB0aGF0IHdlIGhhZCB0aGlzIGJ1ZyBpbiBhbGwgb2Ygb3VyIGVuZ2luZXMuCisg
ICAgICAgIAorICAgICAgICBUaGlzIGZpeGVzIHRoZSBpc3N1ZSBieSBjaGFuZ2luZyB0aGUgYWxn
b3JpdGhtIHRvOgorICAgICAgICAKKyAgICAgICAgICAgIGxvYWQzMiBjYWxsRnJhbWUuQXJndW1l
bnRDb3VudCwgdG1wCisgICAgICAgICAgICBzdWIgMSwgdG1wCisgICAgICAgICAgICBicmFuY2hB
Ym92ZU9yRXF1YWwgaSwgdG1wLCBzbG93UGF0aAorICAgICAgICAKKyAgICAgICAgSW4gc29tZSBl
bmdpbmVzLCB3ZSB3b3VsZCBoYXZlIHVzZWQgdGhlIG1vZGlmaWVkICJpIiAodGhlIG9uZSB0aGF0
IGhhZCAxIGFkZGVkIHRvIGl0KSBmb3IKKyAgICAgICAgdGhlIHN1YnNlcXVlbnQgYXJndW1lbnQg
bG9hZDsgc2luY2Ugd2UgZG9uJ3QgZG8gdGhpcyBhbnltb3JlIEkgYWxzbyBoYWQgdG8gY2hhbmdl
IHNvbWUgb2YKKyAgICAgICAgdGhlIG9mZnNldHMgb24gdGhlIEJhc2VJbmRleCBhcmd1bWVudHMg
bG9hZC4KKyAgICAgICAgCisgICAgICAgIFRoaXMgYWxzbyBpbmNsdWRlcyB0ZXN0cyB0aGF0IGFy
ZSB3cml0dGVuIGluIHN1Y2ggYSB3YXkgYXMgdG8gZ2V0IGNvdmVyYWdlIG9uIExMSW50IGFuZAor
ICAgICAgICBCYXNlbGluZSBKSVQgKGdldC1teS1hcmd1bWVudC1ieS12YWwtd3JhcC1hcm91bmQt
bm8td2FybS11cCksIERGRyBhbmQgRlRMCisgICAgICAgIChnZXQtbXktYXJndW1lbnQtYnktdmFs
LXdyYXAtYXJvdW5kKSwgYW5kIERGRyB3aGVuIHdlJ3JlIGJlaW5nIHBhcmFub2lkIGFib3V0IHRo
ZSB1c2VyCisgICAgICAgIG92ZXJ3cml0aW5nIHRoZSAiYXJndW1lbnRzIiB2YXJpYWJsZSAoZ2V0
LW15LWFyZ3VtZW50LWJ5LXZhbC1zYWZlLXdyYXAtYXJvdW5kKS4gVGhpcyBhbHNvCisgICAgICAg
IGluY2x1ZGVzIG9mZi1ieS0xIG91dC1vZi1ib3VuZHMgdGVzdHMgZm9yIGVhY2ggb2YgdGhlc2Ug
Y2FzZXMsIHNpbmNlIGluIHRoZSBwcm9jZXNzIG9mCisgICAgICAgIHdyaXRpbmcgdGhlIHBhdGNo
IEkgYnJva2UgdGhlIGFyZ3VtZW50c1thcmd1bWVudHMubGVuZ3RoXSBjYXNlIGluIHRoZSBERkcg
YW5kIGRpZG4ndCBzZWUKKyAgICAgICAgYW55IHRlc3QgZmFpbHVyZXMuCisKKyAgICAgICAgKiBk
ZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAg
ICogZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRG
R1RvTExWTTo6Y29tcGlsZUdldE15QXJndW1lbnRCeVZhbCk6CisgICAgICAgICogaml0L0Fzc2Vt
Ymx5SGVscGVycy5oOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6Om9mZnNldE9mQXJn
dW1lbnRzKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpvZmZzZXRPZkFyZ3VtZW50
c0luY2x1ZGluZ1RoaXMpOiBEZWxldGVkLgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9hcmd1bWVudF9ieV92YWwpOgorICAgICAg
ICAqIGppdC9KSVRPcGNvZGVzMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bf
Z2V0X2FyZ3VtZW50X2J5X3ZhbCk6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
ci5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbToKKyAg
ICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtOgorICAgICAgICAqIHRlc3Rz
L3N0cmVzcy9nZXQtbXktYXJndW1lbnQtYnktdmFsLW91dC1vZi1ib3VuZHMtbm8td2FybS11cC5q
czogQWRkZWQuCisgICAgICAgIChmb28pOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9nZXQtbXkt
YXJndW1lbnQtYnktdmFsLW91dC1vZi1ib3VuZHMuanM6IEFkZGVkLgorICAgICAgICAoZm9vKToK
KyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2V0LW15LWFyZ3VtZW50LWJ5LXZhbC1zYWZlLW91dC1v
Zi1ib3VuZHMuanM6IEFkZGVkLgorICAgICAgICAoZm9vKToKKyAgICAgICAgKiB0ZXN0cy9zdHJl
c3MvZ2V0LW15LWFyZ3VtZW50LWJ5LXZhbC1zYWZlLXdyYXAtYXJvdW5kLmpzOiBBZGRlZC4KKyAg
ICAgICAgKGZvbyk6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2dldC1teS1hcmd1bWVudC1ieS12
YWwtd3JhcC1hcm91bmQtbm8td2FybS11cC5qczogQWRkZWQuCisgICAgICAgIChmb28pOgorICAg
ICAgICAqIHRlc3RzL3N0cmVzcy9nZXQtbXktYXJndW1lbnQtYnktdmFsLXdyYXAtYXJvdW5kLmpz
OiBBZGRlZC4KKyAgICAgICAgKGZvbyk6CisKIDIwMTUtMDItMDIgIEZpbGlwIFBpemxvICA8ZnBp
emxvQGFwcGxlLmNvbT4KIAogICAgICAgICBbRlRMXSBpbmxpbmVkIEdldE15QXJndW1lbnRCeVZh
bCB3aXRoIG5vIGFyZ3VtZW50cyBwYXNzZWQgY2F1c2VzIGluc3RhbnQgY3Jhc2gKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0
LmNwcAkocmV2aXNpb24gMTc5NTMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDM0NywyMiArNDM0Nywx
OSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAg
ICAgICAgICAgIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpFbXB0eVZhbHVlVGFnKSkpOwogICAgICAg
ICB9CiAgICAgICAgICAgICAKLSAgICAgICAgbV9qaXQuYWRkMzIoVHJ1c3RlZEltbTMyKDEpLCBp
bmRleEdQUiwgcmVzdWx0UGF5bG9hZEdQUik7Ci0gICAgICAgICAgICAKICAgICAgICAgaWYgKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWUpIHsKICAgICAgICAgICAgIHNwZWN1
bGF0aW9uQ2hlY2soCiAgICAgICAgICAgICAgICAgVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCks
IDAsCiAgICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoMzIoCiAgICAgICAgICAgICAgICAgICAg
IEpJVENvbXBpbGVyOjpBYm92ZU9yRXF1YWwsCi0gICAgICAgICAgICAgICAgICAgIHJlc3VsdFBh
eWxvYWRHUFIsCi0gICAgICAgICAgICAgICAgICAgIEltbTMyKG5vZGUtPm9yaWdpbi5zZW1hbnRp
Yy5pbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCkpKSk7CisgICAgICAgICAgICAgICAg
ICAgIGluZGV4R1BSLAorICAgICAgICAgICAgICAgICAgICBJbW0zMihub2RlLT5vcmlnaW4uc2Vt
YW50aWMuaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgpIC0gMSkpKTsKICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6cGF5bG9hZEZv
cihKU1N0YWNrOjpBcmd1bWVudENvdW50KSwgcmVzdWx0UGF5bG9hZEdQUik7CisgICAgICAgICAg
ICBtX2ppdC5zdWIzMihUcnVzdGVkSW1tMzIoMSksIHJlc3VsdFBheWxvYWRHUFIpOwogICAgICAg
ICAgICAgc3BlY3VsYXRpb25DaGVjaygKICAgICAgICAgICAgICAgICBVbmNvdW50YWJsZSwgSlNW
YWx1ZVJlZ3MoKSwgMCwKLSAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2gzMigKLSAgICAgICAg
ICAgICAgICAgICAgSklUQ29tcGlsZXI6OkFib3ZlT3JFcXVhbCwKLSAgICAgICAgICAgICAgICAg
ICAgcmVzdWx0UGF5bG9hZEdQUiwKLSAgICAgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6OnBh
eWxvYWRGb3IoSlNTdGFjazo6QXJndW1lbnRDb3VudCkpKTsKKyAgICAgICAgICAgICAgICBtX2pp
dC5icmFuY2gzMihKSVRDb21waWxlcjo6QWJvdmVPckVxdWFsLCBpbmRleEdQUiwgcmVzdWx0UGF5
bG9hZEdQUikpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBKSVRDb21waWxlcjo6SnVt
cExpc3Qgc2xvd0FyZ3VtZW50OwpAQCAtNDM5OSwxMyArNDM5NiwxMyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAKICAgICAgICAgbV9qaXQubG9hZDMyKAogICAg
ICAgICAgICAgSklUQ29tcGlsZXI6OkJhc2VJbmRleCgKLSAgICAgICAgICAgICAgICBHUFJJbmZv
OjpjYWxsRnJhbWVSZWdpc3RlciwgcmVzdWx0UGF5bG9hZEdQUiwgSklUQ29tcGlsZXI6OlRpbWVz
RWlnaHQsCi0gICAgICAgICAgICAgICAgbV9qaXQub2Zmc2V0T2ZBcmd1bWVudHNJbmNsdWRpbmdU
aGlzKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVl
RGVzY3JpcHRvciwgYXNCaXRzLnRhZykpLAorICAgICAgICAgICAgICAgIEdQUkluZm86OmNhbGxG
cmFtZVJlZ2lzdGVyLCBpbmRleEdQUiwgSklUQ29tcGlsZXI6OlRpbWVzRWlnaHQsCisgICAgICAg
ICAgICAgICAgbV9qaXQub2Zmc2V0T2ZBcmd1bWVudHMobm9kZS0+b3JpZ2luLnNlbWFudGljKSAr
IE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSksCiAg
ICAgICAgICAgICByZXN1bHRUYWdHUFIpOwogICAgICAgICBtX2ppdC5sb2FkMzIoCiAgICAgICAg
ICAgICBKSVRDb21waWxlcjo6QmFzZUluZGV4KAotICAgICAgICAgICAgICAgIEdQUkluZm86OmNh
bGxGcmFtZVJlZ2lzdGVyLCByZXN1bHRQYXlsb2FkR1BSLCBKSVRDb21waWxlcjo6VGltZXNFaWdo
dCwKLSAgICAgICAgICAgICAgICBtX2ppdC5vZmZzZXRPZkFyZ3VtZW50c0luY2x1ZGluZ1RoaXMo
bm9kZS0+b3JpZ2luLnNlbWFudGljKSArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNj
cmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpLAorICAgICAgICAgICAgICAgIEdQUkluZm86OmNhbGxG
cmFtZVJlZ2lzdGVyLCBpbmRleEdQUiwgSklUQ29tcGlsZXI6OlRpbWVzRWlnaHQsCisgICAgICAg
ICAgICAgICAgbV9qaXQub2Zmc2V0T2ZBcmd1bWVudHMobm9kZS0+b3JpZ2luLnNlbWFudGljKSAr
IE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkp
LAogICAgICAgICAgICAgcmVzdWx0UGF5bG9hZEdQUik7CiAgICAgICAgICAgICAKICAgICAgICAg
c2xvd0FyZ3VtZW50LmxpbmsoJm1faml0KTsKQEAgLTQ0MjcsMTkgKzQ0MjQsMTcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgICAgIEpJVENv
bXBpbGVyOjp0YWdGb3IobV9qaXQuZ3JhcGgoKS5tYWNoaW5lQXJndW1lbnRzUmVnaXN0ZXJGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKSksCiAgICAgICAgICAgICAgICAgVHJ1c3RlZEltbTMyKEpT
VmFsdWU6OkVtcHR5VmFsdWVUYWcpKSk7CiAgICAgICAgIAotICAgICAgICBtX2ppdC5hZGQzMihU
cnVzdGVkSW1tMzIoMSksIGluZGV4R1BSLCByZXN1bHRQYXlsb2FkR1BSKTsKICAgICAgICAgaWYg
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWUpIHsKICAgICAgICAgICAgIHNs
b3dQYXRoLmFwcGVuZCgKICAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2gzMigKICAgICAgICAg
ICAgICAgICAgICAgSklUQ29tcGlsZXI6OkFib3ZlT3JFcXVhbCwKLSAgICAgICAgICAgICAgICAg
ICAgcmVzdWx0UGF5bG9hZEdQUiwKLSAgICAgICAgICAgICAgICAgICAgSW1tMzIobm9kZS0+b3Jp
Z2luLnNlbWFudGljLmlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKSkpKTsKKyAgICAg
ICAgICAgICAgICAgICAgaW5kZXhHUFIsCisgICAgICAgICAgICAgICAgICAgIEltbTMyKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCkgLSAxKSkp
OwogICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVy
OjpwYXlsb2FkRm9yKEpTU3RhY2s6OkFyZ3VtZW50Q291bnQpLCByZXN1bHRQYXlsb2FkR1BSKTsK
KyAgICAgICAgICAgIG1faml0LnN1YjMyKFRydXN0ZWRJbW0zMigxKSwgcmVzdWx0UGF5bG9hZEdQ
Uik7CiAgICAgICAgICAgICBzbG93UGF0aC5hcHBlbmQoCi0gICAgICAgICAgICAgICAgbV9qaXQu
YnJhbmNoMzIoCi0gICAgICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpBYm92ZU9yRXF1YWws
Ci0gICAgICAgICAgICAgICAgICAgIHJlc3VsdFBheWxvYWRHUFIsCi0gICAgICAgICAgICAgICAg
ICAgIEpJVENvbXBpbGVyOjpwYXlsb2FkRm9yKEpTU3RhY2s6OkFyZ3VtZW50Q291bnQpKSk7Cisg
ICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoMzIoSklUQ29tcGlsZXI6OkFib3ZlT3JFcXVhbCwg
aW5kZXhHUFIsIHJlc3VsdFBheWxvYWRHUFIpKTsKICAgICAgICAgfQogICAgICAgICAKICAgICAg
ICAgSklUQ29tcGlsZXI6Okp1bXBMaXN0IHNsb3dBcmd1bWVudDsKQEAgLTQ0NzUsMTMgKzQ0NzAs
MTMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogCiAgICAgICAg
IG1faml0LmxvYWQzMigKICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpCYXNlSW5kZXgoCi0gICAg
ICAgICAgICAgICAgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIHJlc3VsdFBheWxvYWRHUFIs
IEpJVENvbXBpbGVyOjpUaW1lc0VpZ2h0LAotICAgICAgICAgICAgICAgIG1faml0Lm9mZnNldE9m
QXJndW1lbnRzSW5jbHVkaW5nVGhpcyhub2RlLT5vcmlnaW4uc2VtYW50aWMpICsgT0JKRUNUX09G
RlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy50YWcpKSwKKyAgICAgICAgICAg
ICAgICBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgaW5kZXhHUFIsIEpJVENvbXBpbGVyOjpU
aW1lc0VpZ2h0LAorICAgICAgICAgICAgICAgIG1faml0Lm9mZnNldE9mQXJndW1lbnRzKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYykgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRv
ciwgYXNCaXRzLnRhZykpLAogICAgICAgICAgICAgcmVzdWx0VGFnR1BSKTsKICAgICAgICAgbV9q
aXQubG9hZDMyKAogICAgICAgICAgICAgSklUQ29tcGlsZXI6OkJhc2VJbmRleCgKLSAgICAgICAg
ICAgICAgICBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgcmVzdWx0UGF5bG9hZEdQUiwgSklU
Q29tcGlsZXI6OlRpbWVzRWlnaHQsCi0gICAgICAgICAgICAgICAgbV9qaXQub2Zmc2V0T2ZBcmd1
bWVudHNJbmNsdWRpbmdUaGlzKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykgKyBPQkpFQ1RfT0ZGU0VU
T0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnBheWxvYWQpKSwKKyAgICAgICAgICAg
ICAgICBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgaW5kZXhHUFIsIEpJVENvbXBpbGVyOjpU
aW1lc0VpZ2h0LAorICAgICAgICAgICAgICAgIG1faml0Lm9mZnNldE9mQXJndW1lbnRzKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYykgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRv
ciwgYXNCaXRzLnBheWxvYWQpKSwKICAgICAgICAgICAgIHJlc3VsdFBheWxvYWRHUFIpOwogICAg
ICAgICAKICAgICAgICAgaWYgKG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWUp
IHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDY0LmNwcAkocmV2aXNpb24gMTc5NTMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDM5NCwyMSArNDM5
NCwxOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAg
ICAgICAgICAgICAgICAgICBtX2ppdC5ncmFwaCgpLm1hY2hpbmVBcmd1bWVudHNSZWdpc3RlckZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSkpOwogICAgICAgICB9CiAKLSAgICAgICAgbV9qaXQu
YWRkMzIoVHJ1c3RlZEltbTMyKDEpLCBpbmRleEdQUiwgcmVzdWx0R1BSKTsKICAgICAgICAgaWYg
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWUpIHsKICAgICAgICAgICAgIHNw
ZWN1bGF0aW9uQ2hlY2soCiAgICAgICAgICAgICAgICAgVW5jb3VudGFibGUsIEpTVmFsdWVSZWdz
KCksIDAsCiAgICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoMzIoCiAgICAgICAgICAgICAgICAg
ICAgIEpJVENvbXBpbGVyOjpBYm92ZU9yRXF1YWwsCi0gICAgICAgICAgICAgICAgICAgIHJlc3Vs
dEdQUiwKLSAgICAgICAgICAgICAgICAgICAgSW1tMzIobm9kZS0+b3JpZ2luLnNlbWFudGljLmlu
bGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKSkpKTsKKyAgICAgICAgICAgICAgICAgICAg
aW5kZXhHUFIsCisgICAgICAgICAgICAgICAgICAgIEltbTMyKG5vZGUtPm9yaWdpbi5zZW1hbnRp
Yy5pbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCkgLSAxKSkpOwogICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpwYXlsb2FkRm9yKEpT
U3RhY2s6OkFyZ3VtZW50Q291bnQpLCByZXN1bHRHUFIpOworICAgICAgICAgICAgbV9qaXQuc3Vi
MzIoVHJ1c3RlZEltbTMyKDEpLCByZXN1bHRHUFIpOwogICAgICAgICAgICAgc3BlY3VsYXRpb25D
aGVjaygKICAgICAgICAgICAgICAgICBVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgMCwKLSAg
ICAgICAgICAgICAgICBtX2ppdC5icmFuY2gzMigKLSAgICAgICAgICAgICAgICAgICAgSklUQ29t
cGlsZXI6OkFib3ZlT3JFcXVhbCwKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0R1BSLAotICAg
ICAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6cGF5bG9hZEZvcihKU1N0YWNrOjpBcmd1bWVu
dENvdW50KSkpOworICAgICAgICAgICAgICAgIG1faml0LmJyYW5jaDMyKEpJVENvbXBpbGVyOjpB
Ym92ZU9yRXF1YWwsIGluZGV4R1BSLCByZXN1bHRHUFIpKTsKICAgICAgICAgfQogCiAgICAgICAg
IEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93QXJndW1lbnQ7CkBAIC00NDM4LDExICs0NDM2LDkg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICB9CiAg
ICAgICAgIHNsb3dBcmd1bWVudE91dE9mQm91bmRzLmxpbmsoJm1faml0KTsKIAotICAgICAgICBt
X2ppdC5zaWduRXh0ZW5kMzJUb1B0cihyZXN1bHRHUFIsIHJlc3VsdEdQUik7Ci0gICAgICAgICAg
ICAKICAgICAgICAgbV9qaXQubG9hZDY0KAogICAgICAgICAgICAgSklUQ29tcGlsZXI6OkJhc2VJ
bmRleCgKLSAgICAgICAgICAgICAgICBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgcmVzdWx0
R1BSLCBKSVRDb21waWxlcjo6VGltZXNFaWdodCwgbV9qaXQub2Zmc2V0T2ZBcmd1bWVudHNJbmNs
dWRpbmdUaGlzKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLAorICAgICAgICAgICAgICAgIEdQUklu
Zm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBpbmRleEdQUiwgSklUQ29tcGlsZXI6OlRpbWVzRWlnaHQs
IG1faml0Lm9mZnNldE9mQXJndW1lbnRzKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLAogICAgICAg
ICAgICAgcmVzdWx0R1BSKTsKIAogICAgICAgICBzbG93QXJndW1lbnQubGluaygmbV9qaXQpOwpA
QCAtNDQ2MywxOSArNDQ1OSwxNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUq
IG5vZGUpCiAgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IoCiAgICAgICAg
ICAgICAgICAgICAgIG1faml0LmdyYXBoKCkubWFjaGluZUFyZ3VtZW50c1JlZ2lzdGVyRm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYykpKSk7CiAgICAgICAgIAotICAgICAgICBtX2ppdC5hZGQzMihU
cnVzdGVkSW1tMzIoMSksIGluZGV4R1BSLCByZXN1bHRHUFIpOwogICAgICAgICBpZiAobm9kZS0+
b3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxGcmFtZSkgewogICAgICAgICAgICAgc2xvd1BhdGgu
YXBwZW5kKAogICAgICAgICAgICAgICAgIG1faml0LmJyYW5jaDMyKAogICAgICAgICAgICAgICAg
ICAgICBKSVRDb21waWxlcjo6QWJvdmVPckVxdWFsLAogICAgICAgICAgICAgICAgICAgICByZXN1
bHRHUFIsCi0gICAgICAgICAgICAgICAgICAgIEltbTMyKG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5p
bmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCkpKSk7CisgICAgICAgICAgICAgICAgICAg
IEltbTMyKG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5z
aXplKCkgLSAxKSkpOwogICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbV9qaXQubG9hZDMy
KEpJVENvbXBpbGVyOjpwYXlsb2FkRm9yKEpTU3RhY2s6OkFyZ3VtZW50Q291bnQpLCByZXN1bHRH
UFIpOworICAgICAgICAgICAgbV9qaXQuc3ViMzIoVHJ1c3RlZEltbTMyKDEpLCByZXN1bHRHUFIp
OwogICAgICAgICAgICAgc2xvd1BhdGguYXBwZW5kKAotICAgICAgICAgICAgICAgIG1faml0LmJy
YW5jaDMyKAotICAgICAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6QWJvdmVPckVxdWFsLAot
ICAgICAgICAgICAgICAgICAgICByZXN1bHRHUFIsCi0gICAgICAgICAgICAgICAgICAgIEpJVENv
bXBpbGVyOjpwYXlsb2FkRm9yKEpTU3RhY2s6OkFyZ3VtZW50Q291bnQpKSk7CisgICAgICAgICAg
ICAgICAgbV9qaXQuYnJhbmNoMzIoSklUQ29tcGlsZXI6OkFib3ZlT3JFcXVhbCwgaW5kZXhHUFIs
IHJlc3VsdEdQUikpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBKSVRDb21waWxlcjo6
SnVtcExpc3Qgc2xvd0FyZ3VtZW50OwpAQCAtNDUwNSwxMSArNDQ5OSw5IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgfQogICAgICAgICBzbG93QXJn
dW1lbnRPdXRPZkJvdW5kcy5saW5rKCZtX2ppdCk7CiAKLSAgICAgICAgbV9qaXQuc2lnbkV4dGVu
ZDMyVG9QdHIocmVzdWx0R1BSLCByZXN1bHRHUFIpOwotICAgICAgICAKICAgICAgICAgbV9qaXQu
bG9hZDY0KAogICAgICAgICAgICAgSklUQ29tcGlsZXI6OkJhc2VJbmRleCgKLSAgICAgICAgICAg
ICAgICBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6
VGltZXNFaWdodCwgbV9qaXQub2Zmc2V0T2ZBcmd1bWVudHNJbmNsdWRpbmdUaGlzKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYykpLAorICAgICAgICAgICAgICAgIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lz
dGVyLCBpbmRleEdQUiwgSklUQ29tcGlsZXI6OlRpbWVzRWlnaHQsIG1faml0Lm9mZnNldE9mQXJn
dW1lbnRzKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLAogICAgICAgICAgICAgcmVzdWx0R1BSKTsK
ICAgICAgICAgCiAgICAgICAgIGlmIChub2RlLT5vcmlnaW4uc2VtYW50aWMuaW5saW5lQ2FsbEZy
YW1lKSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZN
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZH
VG9MTFZNLmNwcAkocmV2aXNpb24gMTc5NTMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExMb3dlckRGR1RvTExWTS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5OTcsMTYgKzE5OTcs
MTUgQEAgcHJpdmF0ZToKICAgICAgICAgCiAgICAgICAgIENvZGVPcmlnaW4gY29kZU9yaWdpbiA9
IG1fbm9kZS0+b3JpZ2luLnNlbWFudGljOwogICAgICAgICAKLSAgICAgICAgTFZhbHVlIHplcm9C
YXNlZEluZGV4ID0gbG93SW50MzIobV9ub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgIExWYWx1ZSBv
bmVCYXNlZEluZGV4ID0gbV9vdXQuYWRkKHplcm9CYXNlZEluZGV4LCBtX291dC5pbnQzMk9uZSk7
CisgICAgICAgIExWYWx1ZSBpbmRleCA9IGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQxKCkpOwogICAg
ICAgICAKICAgICAgICAgTFZhbHVlIGxpbWl0OwogICAgICAgICBpZiAoY29kZU9yaWdpbi5pbmxp
bmVDYWxsRnJhbWUpCi0gICAgICAgICAgICBsaW1pdCA9IG1fb3V0LmNvbnN0SW50MzIoY29kZU9y
aWdpbi5pbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCkpOworICAgICAgICAgICAgbGlt
aXQgPSBtX291dC5jb25zdEludDMyKGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVu
dHMuc2l6ZSgpIC0gMSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGxpbWl0ID0gbV9vdXQu
bG9hZDMyKHBheWxvYWRGb3IoSlNTdGFjazo6QXJndW1lbnRDb3VudCkpOworICAgICAgICAgICAg
bGltaXQgPSBtX291dC5zdWIobV9vdXQubG9hZDMyKHBheWxvYWRGb3IoSlNTdGFjazo6QXJndW1l
bnRDb3VudCkpLCBtX291dC5pbnQzMk9uZSk7CiAgICAgICAgIAotICAgICAgICBzcGVjdWxhdGUo
VW5jb3VudGFibGUsIG5vVmFsdWUoKSwgMCwgbV9vdXQuYWJvdmVPckVxdWFsKG9uZUJhc2VkSW5k
ZXgsIGxpbWl0KSk7CisgICAgICAgIHNwZWN1bGF0ZShVbmNvdW50YWJsZSwgbm9WYWx1ZSgpLCAw
LCBtX291dC5hYm92ZU9yRXF1YWwoaW5kZXgsIGxpbWl0KSk7CiAgICAgICAgIAogICAgICAgICBT
eW1ib2xUYWJsZSogc3ltYm9sVGFibGUgPSBtX2dyYXBoLmJhc2VsaW5lQ29kZUJsb2NrRm9yKGNv
ZGVPcmlnaW4pLT5zeW1ib2xUYWJsZSgpOwogICAgICAgICBpZiAoc3ltYm9sVGFibGUtPnNsb3dB
cmd1bWVudHMoKSkgewpAQCAtMjAzMiw3ICsyMDMxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
IGJhc2UgPSBhZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KDEpKTsKICAgICAg
ICAgCiAgICAgICAgIExWYWx1ZSBwb2ludGVyID0gbV9vdXQuYmFzZUluZGV4KAotICAgICAgICAg
ICAgYmFzZS52YWx1ZSgpLCBtX291dC56ZXJvRXh0KHplcm9CYXNlZEluZGV4LCBtX291dC5pbnRQ
dHIpLCBTY2FsZUVpZ2h0KTsKKyAgICAgICAgICAgIGJhc2UudmFsdWUoKSwgbV9vdXQuemVyb0V4
dChpbmRleCwgbV9vdXQuaW50UHRyKSwgU2NhbGVFaWdodCk7CiAgICAgICAgIHNldEpTVmFsdWUo
bV9vdXQubG9hZDY0KFR5cGVkUG9pbnRlcihtX2hlYXBzLnZhcmlhYmxlcy5hdEFueUluZGV4KCks
IHBvaW50ZXIpKSk7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fz
c2VtYmx5SGVscGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
QXNzZW1ibHlIZWxwZXJzLmgJKHJldmlzaW9uIDE3OTUzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTYwMywyMiArNjAz
LDIyIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1l
LT5zdGFja09mZnNldCAqIHNpemVvZihSZWdpc3Rlcik7CiAgICAgfQogCi0gICAgaW50IG9mZnNl
dE9mQXJndW1lbnRzSW5jbHVkaW5nVGhpcyhJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFt
ZSkKKyAgICBpbnQgb2Zmc2V0T2ZBcmd1bWVudHMoSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxs
RnJhbWUpCiAgICAgewogICAgICAgICBpZiAoIWlubGluZUNhbGxGcmFtZSkKLSAgICAgICAgICAg
IHJldHVybiBDYWxsRnJhbWU6OmFyZ3VtZW50T2Zmc2V0SW5jbHVkaW5nVGhpcygwKSAqIHNpemVv
ZihSZWdpc3Rlcik7CisgICAgICAgICAgICByZXR1cm4gQ2FsbEZyYW1lOjphcmd1bWVudE9mZnNl
dEluY2x1ZGluZ1RoaXMoMSkgKiBzaXplb2YoUmVnaXN0ZXIpOwogICAgICAgICBpZiAoaW5saW5l
Q2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgpIDw9IDEpCiAgICAgICAgICAgICByZXR1cm4gMDsK
ICAgICAgICAgVmFsdWVSZWNvdmVyeSByZWNvdmVyeSA9IGlubGluZUNhbGxGcmFtZS0+YXJndW1l
bnRzWzFdOwogICAgICAgICBSRUxFQVNFX0FTU0VSVChyZWNvdmVyeS50ZWNobmlxdWUoKSA9PSBE
aXNwbGFjZWRJbkpTU3RhY2spOwotICAgICAgICByZXR1cm4gKHJlY292ZXJ5LnZpcnR1YWxSZWdp
c3RlcigpLm9mZnNldCgpIC0gMSkgKiBzaXplb2YoUmVnaXN0ZXIpOworICAgICAgICByZXR1cm4g
cmVjb3ZlcnkudmlydHVhbFJlZ2lzdGVyKCkub2Zmc2V0KCkgKiBzaXplb2YoUmVnaXN0ZXIpOwog
ICAgIH0KICAgICAKLSAgICBpbnQgb2Zmc2V0T2ZBcmd1bWVudHNJbmNsdWRpbmdUaGlzKGNvbnN0
IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4pCisgICAgaW50IG9mZnNldE9mQXJndW1lbnRzKGNvbnN0
IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4pCiAgICAgewotICAgICAgICByZXR1cm4gb2Zmc2V0T2ZB
cmd1bWVudHNJbmNsdWRpbmdUaGlzKGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lKTsKKyAgICAg
ICAgcmV0dXJuIG9mZnNldE9mQXJndW1lbnRzKGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lKTsK
ICAgICB9Ci0KKyAgICAKICAgICB2b2lkIGVtaXRMb2FkU3RydWN0dXJlKFJlZ2lzdGVySUQgc291
cmNlLCBSZWdpc3RlcklEIGRlc3QsIFJlZ2lzdGVySUQgc2NyYXRjaCkKICAgICB7CiAjaWYgVVNF
KEpTVkFMVUU2NCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMy
XzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29k
ZXMzMl82NC5jcHAJKHJldmlzaW9uIDE3OTUzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3Bjb2RlczMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA0NCwxMyArMTA0NCwx
MyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYXJndW1lbnRfYnlfdmFsKEluCiAgICAgYWRkU2xv
d0Nhc2UoYnJhbmNoMzIoTm90RXF1YWwsIHRhZ0Zvcihhcmd1bWVudHNSZWdpc3RlciksIFRydXN0
ZWRJbW0zMihKU1ZhbHVlOjpFbXB0eVZhbHVlVGFnKSkpOwogICAgIGVtaXRMb2FkKHByb3BlcnR5
LCByZWdUMSwgcmVnVDIpOwogICAgIGFkZFNsb3dDYXNlKGJyYW5jaDMyKE5vdEVxdWFsLCByZWdU
MSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkludDMyVGFnKSkpOwotICAgIGFkZDMyKFRydXN0ZWRJ
bW0zMigxKSwgcmVnVDIpOwogICAgIC8vIHJlZ1QyIG5vdyBjb250YWlucyB0aGUgaW50ZWdlciBp
bmRleCBvZiB0aGUgYXJndW1lbnQgd2Ugd2FudCwgaW5jbHVkaW5nIHRoaXMKICAgICBsb2FkMzIo
cGF5bG9hZEZvcihKU1N0YWNrOjpBcmd1bWVudENvdW50KSwgcmVnVDMpOworICAgIHN1YjMyKFRy
dXN0ZWRJbW0zMigxKSwgcmVnVDMpOwogICAgIGFkZFNsb3dDYXNlKGJyYW5jaDMyKEFib3ZlT3JF
cXVhbCwgcmVnVDIsIHJlZ1QzKSk7CiAgICAgCi0gICAgbG9hZFB0cihCYXNlSW5kZXgoY2FsbEZy
YW1lUmVnaXN0ZXIsIHJlZ1QyLCBUaW1lc0VpZ2h0LCBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwg
dS5hc0JpdHMucGF5bG9hZCkgKyBDYWxsRnJhbWU6OnRoaXNBcmd1bWVudE9mZnNldCgpICogc3Rh
dGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSksIHJlZ1QwKTsKLSAgICBsb2FkUHRyKEJh
c2VJbmRleChjYWxsRnJhbWVSZWdpc3RlciwgcmVnVDIsIFRpbWVzRWlnaHQsIE9CSkVDVF9PRkZT
RVRPRihKU1ZhbHVlLCB1LmFzQml0cy50YWcpICsgQ2FsbEZyYW1lOjp0aGlzQXJndW1lbnRPZmZz
ZXQoKSAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkpLCByZWdUMSk7CisgICAg
bG9hZFB0cihCYXNlSW5kZXgoY2FsbEZyYW1lUmVnaXN0ZXIsIHJlZ1QyLCBUaW1lc0VpZ2h0LCBP
QkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMucGF5bG9hZCkgKyBDYWxsRnJhbWU6OmFy
Z3VtZW50T2Zmc2V0KDApICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSksIHJl
Z1QwKTsKKyAgICBsb2FkUHRyKEJhc2VJbmRleChjYWxsRnJhbWVSZWdpc3RlciwgcmVnVDIsIFRp
bWVzRWlnaHQsIE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy50YWcpICsgQ2FsbEZy
YW1lOjphcmd1bWVudE9mZnNldCgwKSAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVy
KSkpLCByZWdUMSk7CiAgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZSgpOwogICAgIGVtaXRTdG9y
ZShkc3QsIHJlZ1QxLCByZWdUMCk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wY29kZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3Bjb2Rlcy5jcHAJKHJldmlzaW9uIDE3OTUzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkyMCwxMyArOTIwLDEyIEBA
IHZvaWQgSklUOjplbWl0X29wX2dldF9hcmd1bWVudF9ieV92YWwoSW4KICAgICBhZGRTbG93Q2Fz
ZShicmFuY2hUZXN0NjQoTm9uWmVybywgYWRkcmVzc0Zvcihhcmd1bWVudHNSZWdpc3RlcikpKTsK
ICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHByb3BlcnR5LCByZWdUMSk7CiAgICAgYWRkU2xv
d0Nhc2UoZW1pdEp1bXBJZk5vdEltbWVkaWF0ZUludGVnZXIocmVnVDEpKTsKLSAgICBhZGQzMihU
cnVzdGVkSW1tMzIoMSksIHJlZ1QxKTsKLSAgICAvLyByZWdUMSBub3cgY29udGFpbnMgdGhlIGlu
dGVnZXIgaW5kZXggb2YgdGhlIGFyZ3VtZW50IHdlIHdhbnQsIGluY2x1ZGluZyB0aGlzCiAgICAg
ZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXIzMihKU1N0YWNrOjpBcmd1bWVudENvdW50LCByZWdU
Mik7CisgICAgc3ViMzIoVHJ1c3RlZEltbTMyKDEpLCByZWdUMik7CiAgICAgYWRkU2xvd0Nhc2Uo
YnJhbmNoMzIoQWJvdmVPckVxdWFsLCByZWdUMSwgcmVnVDIpKTsKIAogICAgIHNpZ25FeHRlbmQz
MlRvUHRyKHJlZ1QxLCByZWdUMSk7Ci0gICAgbG9hZDY0KEJhc2VJbmRleChjYWxsRnJhbWVSZWdp
c3RlciwgcmVnVDEsIFRpbWVzRWlnaHQsIENhbGxGcmFtZTo6dGhpc0FyZ3VtZW50T2Zmc2V0KCkg
KiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpKSwgcmVnVDApOworICAgIGxvYWQ2
NChCYXNlSW5kZXgoY2FsbEZyYW1lUmVnaXN0ZXIsIHJlZ1QxLCBUaW1lc0VpZ2h0LCBDYWxsRnJh
bWU6OmFyZ3VtZW50T2Zmc2V0KDApICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIp
KSksIHJlZ1QwKTsKICAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKCk7CiAgICAgZW1pdFB1dFZp
cnR1YWxSZWdpc3Rlcihkc3QsIHJlZ1QwKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCShyZXZp
c2lvbiAxNzk1MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlcjMyXzY0LmFzbQkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDQgQEAKLSMgQ29weXJp
Z2h0IChDKSAyMDExLCAyMDEyLCAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDExLTIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNjEzLDEyICsxNjEzLDEy
IEBAIF9sbGludF9vcF9nZXRfYXJndW1lbnRfYnlfdmFsOgogICAgIGxvYWRpIDEyW1BDXSwgdDEK
ICAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEVtcHR5VmFsdWVUYWcsIC5vcEdldEFy
Z3VtZW50QnlWYWxTbG93CiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDEsIElu
dDMyVGFnLCB0MiwgLm9wR2V0QXJndW1lbnRCeVZhbFNsb3cpCi0gICAgYWRkaSAxLCB0MgogICAg
IGxvYWRpIEFyZ3VtZW50Q291bnQgKyBQYXlsb2FkT2Zmc2V0W2Nmcl0sIHQxCisgICAgc3ViaSAx
LCB0MgogICAgIGJpYWVxIHQyLCB0MSwgLm9wR2V0QXJndW1lbnRCeVZhbFNsb3cKICAgICBsb2Fk
aSA0W1BDXSwgdDMKLSAgICBsb2FkaSBUaGlzQXJndW1lbnRPZmZzZXQgKyBUYWdPZmZzZXRbY2Zy
LCB0MiwgOF0sIHQwCi0gICAgbG9hZGkgVGhpc0FyZ3VtZW50T2Zmc2V0ICsgUGF5bG9hZE9mZnNl
dFtjZnIsIHQyLCA4XSwgdDEKKyAgICBsb2FkaSBGaXJzdEFyZ3VtZW50T2Zmc2V0ICsgVGFnT2Zm
c2V0W2NmciwgdDIsIDhdLCB0MAorICAgIGxvYWRpIEZpcnN0QXJndW1lbnRPZmZzZXQgKyBQYXls
b2FkT2Zmc2V0W2NmciwgdDIsIDhdLCB0MQogICAgIHN0b3JlaSB0MCwgVGFnT2Zmc2V0W2Nmciwg
dDMsIDhdCiAgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCiAgICAgdmFs
dWVQcm9maWxlKHQwLCB0MSwgMjQsIHQyKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20JKHJldmlzaW9uIDE3OTUz
MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQu
YXNtCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQgKzEsNCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTEs
IDIwMTIsIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5
cmlnaHQgKEMpIDIwMTEtMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAj
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE0NzEsMTIgKzE0NzEsMTMgQEAgX2xsaW50X29w
X2dldF9hcmd1bWVudF9ieV92YWw6CiAgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDMsIHQxKQog
ICAgIGJ0cW56IFtjZnIsIHQwLCA4XSwgLm9wR2V0QXJndW1lbnRCeVZhbFNsb3cKICAgICBsb2Fk
Q29uc3RhbnRPclZhcmlhYmxlSW50MzIodDEsIHQyLCAub3BHZXRBcmd1bWVudEJ5VmFsU2xvdykK
LSAgICBhZGRpIDEsIHQyCiAgICAgbG9hZGkgQXJndW1lbnRDb3VudCArIFBheWxvYWRPZmZzZXRb
Y2ZyXSwgdDEKKyAgICBzeGkycSB0MiwgdDIKKyAgICBzdWJpIDEsIHQxCiAgICAgYmlhZXEgdDIs
IHQxLCAub3BHZXRBcmd1bWVudEJ5VmFsU2xvdwogICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigx
LCB0MykKICAgICBsb2FkcEZyb21JbnN0cnVjdGlvbig2LCB0MSkKLSAgICBsb2FkcSBUaGlzQXJn
dW1lbnRPZmZzZXRbY2ZyLCB0MiwgOF0sIHQwCisgICAgbG9hZHEgRmlyc3RBcmd1bWVudE9mZnNl
dFtjZnIsIHQyLCA4XSwgdDAKICAgICBzdG9yZXEgdDAsIFtjZnIsIHQzLCA4XQogICAgIHZhbHVl
UHJvZmlsZSh0MCwgNiwgdDEpCiAgICAgZGlzcGF0Y2goNykKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20JKHJldmlzaW9u
IDE3OTUzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyLmFzbQkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0IChDKSAy
MDExLCAyMDEyLCAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMg
Q29weXJpZ2h0IChDKSAyMDExLTIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
IwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01Myw2ICs1Myw3IEBAIGNvbnN0IENvZGVC
bG9jayA9IFJldHVyblBDICsgUHRyU2l6ZQogY29uc3QgQ2FsbGVlID0gQ29kZUJsb2NrICsgU2xv
dFNpemUKIGNvbnN0IEFyZ3VtZW50Q291bnQgPSBDYWxsZWUgKyBTbG90U2l6ZQogY29uc3QgVGhp
c0FyZ3VtZW50T2Zmc2V0ID0gQXJndW1lbnRDb3VudCArIFNsb3RTaXplCitjb25zdCBGaXJzdEFy
Z3VtZW50T2Zmc2V0ID0gVGhpc0FyZ3VtZW50T2Zmc2V0ICsgU2xvdFNpemUKIGNvbnN0IENhbGxG
cmFtZUhlYWRlclNpemUgPSBUaGlzQXJndW1lbnRPZmZzZXQKIAogIyBTb21lIHZhbHVlIHJlcHJl
c2VudGF0aW9uIGNvbnN0YW50cy4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9z
dHJlc3MvZ2V0LW15LWFyZ3VtZW50LWJ5LXZhbC1vdXQtb2YtYm91bmRzLW5vLXdhcm0tdXAuanMK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZXQtbXkt
YXJndW1lbnQtYnktdmFsLW91dC1vZi1ib3VuZHMtbm8td2FybS11cC5qcwkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2V0LW15LWFyZ3VtZW50LWJ5
LXZhbC1vdXQtb2YtYm91bmRzLW5vLXdhcm0tdXAuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSw5IEBACitmdW5jdGlvbiBmb28oaW5kZXgpIHsKKyAgICByZXR1cm4gYXJndW1lbnRzW2luZGV4
XTsKK30KKworbm9JbmxpbmUoZm9vKTsKKwordmFyIHJlc3VsdCA9IGZvbygxKTsKK2lmIChyZXN1
bHQgIT09IHZvaWQgMCkKKyAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQgYXQgZW5kOiAiICsg
cmVzdWx0OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZXQtbXkt
YXJndW1lbnQtYnktdmFsLW91dC1vZi1ib3VuZHMuanMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZXQtbXktYXJndW1lbnQtYnktdmFsLW91dC1vZi1i
b3VuZHMuanMJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3Ry
ZXNzL2dldC1teS1hcmd1bWVudC1ieS12YWwtb3V0LW9mLWJvdW5kcy5qcwkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDE1IEBACitmdW5jdGlvbiBmb28oaW5kZXgpIHsKKyAgICByZXR1cm4gYXJn
dW1lbnRzW2luZGV4XTsKK30KKworbm9JbmxpbmUoZm9vKTsKKworZm9yICh2YXIgaSA9IDA7IGkg
PCAxMDAwMDA7ICsraSkgeworICAgIHZhciByZXN1bHQgPSBmb28oMSwgNDIpOworICAgIGlmIChy
ZXN1bHQgIT0gNDIpCisgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdCBpbiBsb29wOiAi
ICsgcmVzdWx0OworfQorCit2YXIgcmVzdWx0ID0gZm9vKDEpOworaWYgKHJlc3VsdCAhPT0gdm9p
ZCAwKQorICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdCBhdCBlbmQ6ICIgKyByZXN1bHQ7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dldC1teS1hcmd1bWVudC1i
eS12YWwtc2FmZS1vdXQtb2YtYm91bmRzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2V0LW15LWFyZ3VtZW50LWJ5LXZhbC1zYWZlLW91dC1vZi1i
b3VuZHMuanMJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3Ry
ZXNzL2dldC1teS1hcmd1bWVudC1ieS12YWwtc2FmZS1vdXQtb2YtYm91bmRzLmpzCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMTcgQEAKK2Z1bmN0aW9uIGZvbyhpbmRleCkgeworICAgIGlmIChp
bmRleCA+IDEwMDApCisgICAgICAgIGFyZ3VtZW50cyA9IFsxLCAyLCAzXTsKKyAgICByZXR1cm4g
YXJndW1lbnRzW2luZGV4XTsKK30KKworbm9JbmxpbmUoZm9vKTsKKworZm9yICh2YXIgaSA9IDA7
IGkgPCAxMDAwMDA7ICsraSkgeworICAgIHZhciByZXN1bHQgPSBmb28oMSwgNDIpOworICAgIGlm
IChyZXN1bHQgIT0gNDIpCisgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdCBpbiBsb29w
OiAiICsgcmVzdWx0OworfQorCit2YXIgcmVzdWx0ID0gZm9vKDEpOworaWYgKHJlc3VsdCAhPT0g
dm9pZCAwKQorICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdCBhdCBlbmQ6ICIgKyByZXN1bHQ7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dldC1teS1hcmd1bWVu
dC1ieS12YWwtc2FmZS13cmFwLWFyb3VuZC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvc3RyZXNzL2dldC1teS1hcmd1bWVudC1ieS12YWwtc2FmZS13cmFwLWFy
b3VuZC5qcwkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJl
c3MvZ2V0LW15LWFyZ3VtZW50LWJ5LXZhbC1zYWZlLXdyYXAtYXJvdW5kLmpzCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMTcgQEAKK2Z1bmN0aW9uIGZvbyhpbmRleCkgeworICAgIGlmIChpbmRl
eCA+IDEwMDApCisgICAgICAgIGFyZ3VtZW50cyA9IFsxLCAyLCAzXTsKKyAgICByZXR1cm4gYXJn
dW1lbnRzW2luZGV4XTsKK30KKworbm9JbmxpbmUoZm9vKTsKKworZm9yICh2YXIgaSA9IDA7IGkg
PCAxMDAwMDA7ICsraSkgeworICAgIHZhciByZXN1bHQgPSBmb28oMSwgNDIpOworICAgIGlmIChy
ZXN1bHQgIT0gNDIpCisgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdCBpbiBsb29wOiAi
ICsgcmVzdWx0OworfQorCit2YXIgcmVzdWx0ID0gZm9vKC0xKTsKK2lmIChyZXN1bHQgIT09IHZv
aWQgMCkKKyAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQgYXQgZW5kOiAiICsgcmVzdWx0OwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZXQtbXktYXJndW1lbnQt
YnktdmFsLXdyYXAtYXJvdW5kLW5vLXdhcm0tdXAuanMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZXQtbXktYXJndW1lbnQtYnktdmFsLXdyYXAtYXJv
dW5kLW5vLXdhcm0tdXAuanMJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
dGVzdHMvc3RyZXNzL2dldC1teS1hcmd1bWVudC1ieS12YWwtd3JhcC1hcm91bmQtbm8td2FybS11
cC5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDkgQEAKK2Z1bmN0aW9uIGZvbyhpbmRleCkg
eworICAgIHJldHVybiBhcmd1bWVudHNbaW5kZXhdOworfQorCitub0lubGluZShmb28pOworCit2
YXIgcmVzdWx0ID0gZm9vKC0xKTsKK2lmIChyZXN1bHQgIT09IHZvaWQgMCkKKyAgICB0aHJvdyAi
RXJyb3I6IGJhZCByZXN1bHQgYXQgZW5kOiAiICsgcmVzdWx0OwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZXQtbXktYXJndW1lbnQtYnktdmFsLXdyYXAtYXJvdW5k
LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2V0
LW15LWFyZ3VtZW50LWJ5LXZhbC13cmFwLWFyb3VuZC5qcwkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2V0LW15LWFyZ3VtZW50LWJ5LXZhbC13cmFw
LWFyb3VuZC5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE1IEBACitmdW5jdGlvbiBmb28o
aW5kZXgpIHsKKyAgICByZXR1cm4gYXJndW1lbnRzW2luZGV4XTsKK30KKworbm9JbmxpbmUoZm9v
KTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDA7ICsraSkgeworICAgIHZhciByZXN1bHQg
PSBmb28oMSwgNDIpOworICAgIGlmIChyZXN1bHQgIT0gNDIpCisgICAgICAgIHRocm93ICJFcnJv
cjogYmFkIHJlc3VsdCBpbiBsb29wOiAiICsgcmVzdWx0OworfQorCit2YXIgcmVzdWx0ID0gZm9v
KC0xKTsKK2lmIChyZXN1bHQgIT09IHZvaWQgMCkKKyAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1
bHQgYXQgZW5kOiAiICsgcmVzdWx0Owo=
</data>
<flag name="review"
          id="270846"
          type_id="1"
          status="+"
          setter="mark.lam"
    />
          </attachment>
      

    </bug>

</bugzilla>