<?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>150960</bug_id>
          
          <creation_ts>2015-11-05 15:11:36 -0800</creation_ts>
          <short_desc>B3 and Air should simplify CFGs</short_desc>
          <delta_ts>2015-11-06 15:36:20 -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>WebKit 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>
          
          <blocked>150456</blocked>
    
    <blocked>150507</blocked>
          <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>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>1139796</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-11-05 15:11:36 -0800</bug_when>
    <thetext>I&apos;ll try to do both phases as one using template magic.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1140059</commentid>
    <comment_count>1</comment_count>
      <attachid>264959</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-11-06 14:54:04 -0800</bug_when>
    <thetext>Created attachment 264959
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1140060</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-11-06 14:59:19 -0800</bug_when>
    <thetext>Attachment 264959 did not pass style-queue:


ERROR: Source/JavaScriptCore/b3/air/AirInst.cpp:41:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 1 in 16 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>1140068</commentid>
    <comment_count>3</comment_count>
      <attachid>264959</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-11-06 15:24:16 -0800</bug_when>
    <thetext>Comment on attachment 264959
the patch

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

r=me

&gt; Source/JavaScriptCore/b3/B3BasicBlockUtils.h:68
&gt; +    // We do it this way because to may already be a predecessor of block.

to =&gt; there</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1140070</commentid>
    <comment_count>4</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-11-06 15:30:09 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; Comment on attachment 264959 [details]
&gt; the patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=264959&amp;action=review
&gt; 
&gt; r=me
&gt; 
&gt; &gt; Source/JavaScriptCore/b3/B3BasicBlockUtils.h:68
&gt; &gt; +    // We do it this way because to may already be a predecessor of block.
&gt; 
&gt; to =&gt; there

to =&gt; &apos;to&apos;, block =&gt; &apos;block&apos;

The basic block referenced by the variable called &apos;to&apos; may already be a predecessor of the block referenced by the variable called &apos;block&apos;.

I&apos;ll clarify the comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1140075</commentid>
    <comment_count>5</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-11-06 15:36:20 -0800</bug_when>
    <thetext>Landed in https://trac.webkit.org/r192121</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264959</attachid>
            <date>2015-11-06 14:54:04 -0800</date>
            <delta_ts>2015-11-06 15:24:16 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>35500</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTkyMTE5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUwIEBA
CisyMDE1LTExLTA2ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
QjMgYW5kIEFpciBzaG91bGQgc2ltcGxpZnkgQ0ZHcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwOTYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBhZGRzIENGRyBzaW1wbGlmaWNhdGlvbiB0byBi
b3RoIEIzIGFuZCBBaXIuCisKKyAgICAgICAgSW4gQjMsIHRoZSBzaW1wbGlmaWNhdGlvbiBpcyBk
b25lIGluc2lkZSB0aGUgQjM6OnJlZHVjZVN0cmVuZ3RoKCkgZml4cG9pbnQgYmVjYXVzZSB3ZSBl
eHBlY3QKKyAgICAgICAgdGhhdCBpdCB3aWxsIGhlbHAgdG8gcmV2ZWFsIG1vcmUgb3B0aW1pemF0
aW9uIG9wcG9ydHVuaXRpZXMuIFRoaXMgaXMgZ29pbmcgdG8gYmUgcGFydGljdWxhcmx5CisgICAg
ICAgIHRydWUgd2hlbiB3ZSBhZGQgUGhpIGVsaW1pbmF0aW9uLgorCisgICAgICAgIEluIEFpciwg
dGhlIHNpbXBsaWZpY2F0aW9uIGlzIGl0cyBvd24gcGhhc2UuIFdlIGV4cGVjdCBpdCB0byBwcm9k
dWNlIG1vc3Qgb2YgaXRzIGJlbmVmaXRzIG9uY2UKKyAgICAgICAgd2UgaGF2ZSBjb2FsZXNjaW5n
LiBUaGVuLCBDRkcgc2ltcGxpZmljYXRpb24gaW4gQWlyIHdpbGwgdW5icmVhayBjcml0aWFsIGVk
Z2VzLgorCisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBhc3NlbWJsZXIvQWJvcnRSZWFzb24uaDoKKyAgICAgICAgKiBhc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXIuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXI6Om9vcHMp
OiBSZXZlYWwgdGhpcyBhcyBhIG1ldGhvZCBzbyB0aGF0IHdlIGNhbiBoYXZlIGFuIE9vcHMgaW5z
dHJ1Y3Rpb24uCisgICAgICAgICogYjMvQjNCYXNpY0Jsb2NrLmg6CisgICAgICAgIChKU0M6OkIz
OjpCYXNpY0Jsb2NrOjpwcmVkZWNlc3Nvcik6CisgICAgICAgIChKU0M6OkIzOjpCYXNpY0Jsb2Nr
OjpwcmVkZWNlc3NvcnMpOgorICAgICAgICAoSlNDOjpCMzo6QmFzaWNCbG9jazo6Y29udGFpbnNQ
cmVkZWNlc3Nvcik6CisgICAgICAgICogYjMvQjNCYXNpY0Jsb2NrVXRpbHMuaDogQnVuY2ggb2Yg
Zml4ZXMgZm9yIGJsb2NrcyBiZWluZyBraWxsZWQuCisgICAgICAgIChKU0M6OkIzOjpyZXBsYWNl
UHJlZGVjZXNzb3IpOgorICAgICAgICAoSlNDOjpCMzo6cmVzZXRSZWFjaGFiaWxpdHkpOgorICAg
ICAgICAqIGIzL0IzUmVkdWNlU3RyZW5ndGguY3BwOiBJbXBsZW1lbnQgQjMgQ0ZHIHNpbXBsaWZp
Y2F0aW9uLgorICAgICAgICAqIGIzL0IzUmVkdWNlU3RyZW5ndGguaDoKKyAgICAgICAgKiBiMy9h
aXIvQWlyQmFzaWNCbG9jay5oOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpCYXNpY0Jsb2NrOjpy
ZXNpemUpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpCYXNpY0Jsb2NrOjppbnN0cyk6CisgICAg
ICAgIChKU0M6OkIzOjpBaXI6OkJhc2ljQmxvY2s6OmFwcGVuZEluc3QpOgorICAgICAgICAoSlND
OjpCMzo6QWlyOjpCYXNpY0Jsb2NrOjpjb250YWluc1ByZWRlY2Vzc29yKToKKyAgICAgICAgKiBi
My9haXIvQWlyR2VuZXJhdGUuY3BwOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpnZW5lcmF0ZSk6
CisgICAgICAgICogYjMvYWlyL0Fpckluc3QuY3BwOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpJ
bnN0OjpoYXNBcmdFZmZlY3RzKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6SW5zdDo6ZHVtcCk6
CisgICAgICAgICogYjMvYWlyL0Fpckluc3QuaDoKKyAgICAgICAgKiBiMy9haXIvQWlyTGl2ZW5l
c3MuaDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TGl2ZW5lc3M6OkxpdmVuZXNzKTogRml4IGZv
ciB3aGVuIGJsb2NrcyB3ZXJlIGtpbGxlZC4KKyAgICAgICAgKiBiMy9haXIvQWlyT3Bjb2RlLm9w
Y29kZXM6CisgICAgICAgICogYjMvYWlyL0FpclNpbXBsaWZ5Q0ZHLmNwcDogQWRkZWQuCisgICAg
ICAgIChKU0M6OkIzOjpBaXI6OnNpbXBsaWZ5Q0ZHKToKKyAgICAgICAgKiBiMy9haXIvQWlyU2lt
cGxpZnlDRkcuaDogQWRkZWQuCisKIDIwMTUtMTEtMDUgIE5pa29zIEFuZHJvbmlrb3MgIDxuaWtv
cy5hbmRyb25pa29zLXdlYmtpdEBjaXNyYS5jYW5vbi5jb20uYXU+CiAKICAgICAgICAgQWRkIHJ1
bnRpbWUgYW5kIGNvbXBpbGUgdGltZSBmbGFncyBmb3IgZW5hYmxpbmcgV2ViIEFuaW1hdGlvbnMg
QVBJIGFuZCBtb2RlbC4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lv
biAxOTIxMTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjgwLDEyICsyODAsMTQgQEAK
IAkJMEYzMDBCN0MxOEFCMUIxNDAwQTZENzJFIC8qIERGR0ludGVnZXJDaGVja0NvbWJpbmluZ1Bo
YXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjMw
MEI3QTE4QUIxQjE0MDBBNkQ3MkUgLyogREZHSW50ZWdlckNoZWNrQ29tYmluaW5nUGhhc2UuaCAq
LzsgfTsKIAkJMEYzMkJEMTAxQkIzNEYxOTAwOTNBNTdGIC8qIEhlYXBIZWxwZXJQb29sLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMzJCRDBFMUJC
MzRGMTkwMDkzQTU3RiAvKiBIZWFwSGVscGVyUG9vbC5jcHAgKi87IH07CiAJCTBGMzJCRDExMUJC
MzRGMTkwMDkzQTU3RiAvKiBIZWFwSGVscGVyUG9vbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzMkJEMEYxQkIzNEYxOTAwOTNBNTdGIC8qIEhlYXBI
ZWxwZXJQb29sLmggKi87IH07Ci0JCTBGMzM4REY5MUJFOTZBQTgwMDEzQzg4RiAvKiBCM0NDYWxs
VmFsdWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEYzMzhERjcxQkU5NkFBODAwMTNDODhGIC8qIEIzQ0NhbGxWYWx1ZS5jcHAgKi87IH07Ci0JCTBG
MzM4REZBMUJFOTZBQTgwMDEzQzg4RiAvKiBCM0NDYWxsVmFsdWUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMzM4REY4MUJFOTZBQTgwMDEzQzg4RiAv
KiBCM0NDYWxsVmFsdWUuaCAqLzsgfTsKIAkJMEYzMzhERjExQkU5M0FEMTAwMTNDODhGIC8qIEIz
U3RhY2ttYXBWYWx1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjMzOERFRjFCRTkzQUQxMDAxM0M4OEYgLyogQjNTdGFja21hcFZhbHVlLmNwcCAq
LzsgfTsKIAkJMEYzMzhERjIxQkU5M0FEMTAwMTNDODhGIC8qIEIzU3RhY2ttYXBWYWx1ZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzMzhERjAxQkU5
M0FEMTAwMTNDODhGIC8qIEIzU3RhY2ttYXBWYWx1ZS5oICovOyB9OwogCQkwRjMzOERGNTFCRTkz
RDU1MDAxM0M4OEYgLyogQjNDb25zdHJhaW5lZFZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMzM4REYzMUJFOTNENTUwMDEzQzg4RiAvKiBC
M0NvbnN0cmFpbmVkVmFsdWUuY3BwICovOyB9OwogCQkwRjMzOERGNjFCRTkzRDU1MDAxM0M4OEYg
LyogQjNDb25zdHJhaW5lZFZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjMzOERGNDFCRTkzRDU1MDAxM0M4OEYgLyogQjNDb25zdHJhaW5lZFZh
bHVlLmggKi87IH07CisJCTBGMzM4REY5MUJFOTZBQTgwMDEzQzg4RiAvKiBCM0NDYWxsVmFsdWUu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzMzhE
RjcxQkU5NkFBODAwMTNDODhGIC8qIEIzQ0NhbGxWYWx1ZS5jcHAgKi87IH07CisJCTBGMzM4REZB
MUJFOTZBQTgwMDEzQzg4RiAvKiBCM0NDYWxsVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMzM4REY4MUJFOTZBQTgwMDEzQzg4RiAvKiBCM0ND
YWxsVmFsdWUuaCAqLzsgfTsKKwkJMEYzMzhERkQxQkVENTEyNzAwMTNDODhGIC8qIEFpclNpbXBs
aWZ5Q0ZHLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGMzM4REZCMUJFRDUxMjcwMDEzQzg4RiAvKiBBaXJTaW1wbGlmeUNGRy5jcHAgKi87IH07CisJ
CTBGMzM4REZFMUJFRDUxMjcwMDEzQzg4RiAvKiBBaXJTaW1wbGlmeUNGRy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzMzhERkMxQkVENTEyNzAwMTND
ODhGIC8qIEFpclNpbXBsaWZ5Q0ZHLmggKi87IH07CiAJCTBGMzRCMTQ5MTZENDIwMTAwMDFDREE1
QSAvKiBERkdVc2VLaW5kLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGMzRCMTQ3MTZENDIwMEUwMDFDREE1QSAvKiBERkdVc2VLaW5kLmNwcCAqLzsg
fTsKIAkJMEYzNEIxNEExNkQ0MjAxMzAwMUNEQTVBIC8qIERGR1VzZUtpbmQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMzRCMTQ4MTZENDIwMEUwMDFD
REE1QSAvKiBERkdVc2VLaW5kLmggKi87IH07CiAJCTBGMzhCMDExMTdDRjA3ODAwMEIxNDREMyAv
KiBMTEludEVudHJ5cG9pbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEYzOEIwMEYxN0NGMDc3RjAwQjE0NEQzIC8qIExMSW50RW50cnlwb2ludC5j
cHAgKi87IH07CkBAIC0yMzAzLDEyICsyMzA1LDE0IEBACiAJCTBGMzAwQjdBMThBQjFCMTQwMEE2
RDcyRSAvKiBERkdJbnRlZ2VyQ2hlY2tDb21iaW5pbmdQaGFzZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBERkdJbnRlZ2VyQ2hlY2tDb21iaW5pbmdQaGFzZS5oOyBwYXRoID0g
ZGZnL0RGR0ludGVnZXJDaGVja0NvbWJpbmluZ1BoYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTBGMzJCRDBFMUJCMzRGMTkwMDkzQTU3RiAvKiBIZWFwSGVscGVyUG9vbC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIZWFwSGVscGVyUG9vbC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMzJCRDBGMUJCMzRGMTkwMDkzQTU3RiAv
KiBIZWFwSGVscGVyUG9vbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIZWFw
SGVscGVyUG9vbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwRjMzOERGNzFCRTk2
QUE4MDAxM0M4OEYgLyogQjNDQ2FsbFZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IEIzQ0NhbGxWYWx1ZS5jcHA7IHBhdGggPSBiMy9CM0NDYWxsVmFsdWUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwRjMzOERGODFCRTk2QUE4MDAxM0M4OEYg
LyogQjNDQ2FsbFZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIzQ0Nh
bGxWYWx1ZS5oOyBwYXRoID0gYjMvQjNDQ2FsbFZhbHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTBGMzM4REVGMUJFOTNBRDEwMDEzQzg4RiAvKiBCM1N0YWNrbWFwVmFsdWUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQjNTdGFja21hcFZhbHVlLmNw
cDsgcGF0aCA9IGIzL0IzU3RhY2ttYXBWYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTBGMzM4REYwMUJFOTNBRDEwMDEzQzg4RiAvKiBCM1N0YWNrbWFwVmFsdWUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQjNTdGFja21hcFZhbHVlLmg7IHBhdGggPSBi
My9CM1N0YWNrbWFwVmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYzMzhE
RjMxQkU5M0Q1NTAwMTNDODhGIC8qIEIzQ29uc3RyYWluZWRWYWx1ZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBCM0NvbnN0cmFpbmVkVmFsdWUuY3BwOyBwYXRoID0g
YjMvQjNDb25zdHJhaW5lZFZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MEYzMzhERjQxQkU5M0Q1NTAwMTNDODhGIC8qIEIzQ29uc3RyYWluZWRWYWx1ZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBCM0NvbnN0cmFpbmVkVmFsdWUuaDsgcGF0aCA9IGIz
L0IzQ29uc3RyYWluZWRWYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjMz
OERGNzFCRTk2QUE4MDAxM0M4OEYgLyogQjNDQ2FsbFZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEIzQ0NhbGxWYWx1ZS5jcHA7IHBhdGggPSBiMy9CM0NDYWxs
VmFsdWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjMzOERGODFCRTk2QUE4
MDAxM0M4OEYgLyogQjNDQ2FsbFZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IEIzQ0NhbGxWYWx1ZS5oOyBwYXRoID0gYjMvQjNDQ2FsbFZhbHVlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTBGMzM4REZCMUJFRDUxMjcwMDEzQzg4RiAvKiBBaXJTaW1wbGlm
eUNGRy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBBaXJTaW1wbGlm
eUNGRy5jcHA7IHBhdGggPSBiMy9haXIvQWlyU2ltcGxpZnlDRkcuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkwRjMzOERGQzFCRUQ1MTI3MDAxM0M4OEYgLyogQWlyU2ltcGxpZnlD
RkcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQWlyU2ltcGxpZnlDRkcuaDsg
cGF0aCA9IGIzL2Fpci9BaXJTaW1wbGlmeUNGRy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwRjM0QjE0NzE2RDQyMDBFMDAxQ0RBNUEgLyogREZHVXNlS2luZC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdVc2VLaW5kLmNwcDsgcGF0aCA9IGRmZy9E
RkdVc2VLaW5kLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYzNEIxNDgxNkQ0
MjAwRTAwMUNEQTVBIC8qIERGR1VzZUtpbmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gREZHVXNlS2luZC5oOyBwYXRoID0gZGZnL0RGR1VzZUtpbmQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMEYzOEIwMEYxN0NGMDc3RjAwQjE0NEQzIC8qIExMSW50RW50cnlw
b2ludC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBMTEludEVudHJ5cG9pbnQuY3BwOyBwYXRoID0g
bGxpbnQvTExJbnRFbnRyeXBvaW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTQ1MjQsNiArNDUyOCw4IEBACiAJCQkJMEZFQzg1NjExQkRBQ0RDNzAwODBGRjc0IC8qIEFpclJl
Z2lzdGVyUHJpb3JpdHkuaCAqLywKIAkJCQkwRjQ1NzAzQTFCRTQ1RjBBMDA2MkE2MjkgLyogQWly
UmVwb3J0VXNlZFJlZ2lzdGVycy5jcHAgKi8sCiAJCQkJMEY0NTcwM0IxQkU0NUYwQTAwNjJBNjI5
IC8qIEFpclJlcG9ydFVzZWRSZWdpc3RlcnMuaCAqLywKKwkJCQkwRjMzOERGQjFCRUQ1MTI3MDAx
M0M4OEYgLyogQWlyU2ltcGxpZnlDRkcuY3BwICovLAorCQkJCTBGMzM4REZDMUJFRDUxMjcwMDEz
Qzg4RiAvKiBBaXJTaW1wbGlmeUNGRy5oICovLAogCQkJCTBGRUM4NTYyMUJEQUNEQzcwMDgwRkY3
NCAvKiBBaXJTcGVjaWFsLmNwcCAqLywKIAkJCQkwRkVDODU2MzFCREFDREM3MDA4MEZGNzQgLyog
QWlyU3BlY2lhbC5oICovLAogCQkJCTBGRUM4NTY0MUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJTcGls
bEV2ZXJ5dGhpbmcuY3BwICovLApAQCAtNjc2Nyw2ICs2NzczLDcgQEAKIAkJCQkwRkJEQjlBRDFB
QjBGQkM2MDAwQjU3RTUgLyogREZHQ2FsbENyZWF0ZURpcmVjdEFyZ3VtZW50c1Nsb3dQYXRoR2Vu
ZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjdCMjk0QjE0QzNDRDJGMDA3QzNEQjEgLyog
REZHQ2FwYWJpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkZGQzk1ODE0RUY5MEEyMDBD
NzI1MzIgLyogREZHQ0ZBUGhhc2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMzM4REZFMUJFRDUx
MjcwMDEzQzg4RiAvKiBBaXJTaW1wbGlmeUNGRy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYzQjNB
MjgxNTQ0Qzk5NzAwM0VEMEZGIC8qIERGR0NGR1NpbXBsaWZpY2F0aW9uUGhhc2UuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGOUQzNjk1MUFFOUNDMzMwMDBENERGQiAvKiBERkdDbGVhblVwUGhhc2Uu
aCBpbiBIZWFkZXJzICovLAogCQkJCUE3N0E0MjQwMTdBMEJCRkQwMEE4REI4MSAvKiBERkdDbG9i
YmVyaXplLmggaW4gSGVhZGVycyAqLywKQEAgLTg0ODYsNiArODQ5Myw3IEBACiAJCQkJMTQ3RjM5
Q0UxMDdFQzM3NjAwNDI3QTQ4IC8qIElkZW50aWZpZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QTVGRDAwNzUxODlCMDM4QzAwNjMzMjMxIC8qIElkZW50aWZpZXJzRmFjdG9yeS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlDMjVGOEJDRDE1NzU0NEE5MDAyNDVCNzEgLyogSW5jcmVtZW50YWxTd2Vl
cGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGMzM4REZEMUJFRDUxMjcwMDEzQzg4RiAvKiBB
aXJTaW1wbGlmeUNGRy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjEzRTA0RTE2MTY0QTFGMDBE
QzhERTcgLyogSW5kZXhpbmdUeXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMEE3NTIyMUI5
NEJGQTkwMDExMDY2MCAvKiBJbmZlcnJlZFR5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZG
QzkyMTExQjk0RDRERjAwNzFERDY2IC8qIEluZmVycmVkVHlwZVRhYmxlLmNwcCBpbiBTb3VyY2Vz
ICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYm9ydFJlYXNvbi5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJvcnRSZWFz
b24uaAkocmV2aXNpb24gMTkyMTE5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9BYm9ydFJlYXNvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw2ICs0OCw3IEBAIGVudW0gQWJv
cnRSZWFzb24gewogICAgIEFIVGFnVHlwZU51bWJlck5vdEluUGxhY2UgICAgICAgICAgICAgICAg
ICAgICAgICAgPSAxMzAsCiAgICAgQUhUeXBlSW5mb0lubGluZVR5cGVGbGFnc0FyZVZhbGlkICAg
ICAgICAgICAgICAgICA9IDE0MCwKICAgICBBSFR5cGVJbmZvSXNWYWxpZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gMTUwLAorICAgIEIzT29wcyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPSAxNTUsCiAgICAgREZHQmFpbGVkQXRUb3BPZkJsb2Nr
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDE2MSwKICAgICBERkdCYWlsZWRBdEVuZE9m
Tm9kZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMTYyLAogICAgIERGR0Jhc2ljU3Rv
cmFnZUFsbG9jYXRvclplcm9TaXplICAgICAgICAgICAgICAgICAgPSAxNzAsCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCShyZXZp
c2lvbiAxOTIxMTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3Miw2ICs0NzIsMTEgQEAgcHVibGljOgogICAg
ICAgICByZXR1cm4gY29uZGl0aW9uOwogICAgIH0KIAorICAgIHZvaWQgb29wcygpCisgICAgewor
ICAgICAgICBhYm9ydFdpdGhSZWFzb24oQjNPb3BzKTsKKyAgICB9CisKICAgICBzdGF0aWMgY29u
c3QgdW5zaWduZWQgQmxpbmRpbmdNb2R1bHVzID0gNjQ7CiAgICAgYm9vbCBzaG91bGRDb25zaWRl
ckJsaW5kaW5nKCkKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNCYXNp
Y0Jsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQmFzaWNC
bG9jay5oCShyZXZpc2lvbiAxOTIxMTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNC
YXNpY0Jsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTg4LDYgKzg4LDcgQEAgcHVibGljOgogICAg
IEJhc2ljQmxvY2sqJiBwcmVkZWNlc3Nvcih1bnNpZ25lZCBpbmRleCkgeyByZXR1cm4gbV9wcmVk
ZWNlc3NvcnNbaW5kZXhdOyB9CiAgICAgY29uc3QgUHJlZGVjZXNzb3JMaXN0JiBwcmVkZWNlc3Nv
cnMoKSBjb25zdCB7IHJldHVybiBtX3ByZWRlY2Vzc29yczsgfQogICAgIFByZWRlY2Vzc29yTGlz
dCYgcHJlZGVjZXNzb3JzKCkgeyByZXR1cm4gbV9wcmVkZWNlc3NvcnM7IH0KKyAgICBib29sIGNv
bnRhaW5zUHJlZGVjZXNzb3IoQmFzaWNCbG9jayogYmxvY2spIHsgcmV0dXJuIG1fcHJlZGVjZXNz
b3JzLmNvbnRhaW5zKGJsb2NrKTsgfQogCiAgICAgYm9vbCBhZGRQcmVkZWNlc3NvcihCYXNpY0Js
b2NrKik7CiAgICAgYm9vbCByZW1vdmVQcmVkZWNlc3NvcihCYXNpY0Jsb2NrKik7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNCYXNpY0Jsb2NrVXRpbHMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNCYXNpY0Jsb2NrVXRpbHMuaAkocmV2aXNpb24g
MTkyMTE5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQmFzaWNCbG9ja1V0aWxzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTY0LDE0ICs2NCwxMSBAQCBib29sIHJlbW92ZVByZWRlY2Vzc29y
KEJhc2ljQmxvY2sqIGJsb2NrCiB0ZW1wbGF0ZTx0eXBlbmFtZSBCYXNpY0Jsb2NrPgogYm9vbCBy
ZXBsYWNlUHJlZGVjZXNzb3IoQmFzaWNCbG9jayogYmxvY2ssIEJhc2ljQmxvY2sqIGZyb20sIEJh
c2ljQmxvY2sqIHRvKQogewotICAgIGF1dG8mIHByZWRlY2Vzc29ycyA9IGJsb2NrLT5wcmVkZWNl
c3NvcnMoKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcHJlZGVjZXNzb3JzLnNpemUo
KTsgKytpKSB7Ci0gICAgICAgIGlmIChwcmVkZWNlc3NvcnNbaV0gPT0gZnJvbSkgewotICAgICAg
ICAgICAgcHJlZGVjZXNzb3JzW2ldID0gdG87Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7CisgICAgYm9vbCBjaGFuZ2VkID0gZmFs
c2U7CisgICAgLy8gV2UgZG8gaXQgdGhpcyB3YXkgYmVjYXVzZSB0byBtYXkgYWxyZWFkeSBiZSBh
IHByZWRlY2Vzc29yIG9mIGJsb2NrLgorICAgIGNoYW5nZWQgfD0gcmVtb3ZlUHJlZGVjZXNzb3Io
YmxvY2ssIGZyb20pOworICAgIGNoYW5nZWQgfD0gYWRkUHJlZGVjZXNzb3IoYmxvY2ssIHRvKTsK
KyAgICByZXR1cm4gY2hhbmdlZDsKIH0KIAogLy8gVGhpcyByZWNvbXB1dGVzIHByZWRlY2Vzc29y
cyBhbmQgcmVtb3ZlcyBibG9ja3MgdGhhdCBhcmVuJ3QgcmVhY2hhYmxlLgpAQCAtODAsOCArNzcs
MTAgQEAgdm9pZCByZXNldFJlYWNoYWJpbGl0eSgKICAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRy
PEJhc2ljQmxvY2s+PiYgYmxvY2tzLCBjb25zdCBEZWxldGVGdW5jdG9yJiBkZWxldGVGdW5jdG9y
KQogewogICAgIC8vIENsZWFyIGFsbCBwcmVkZWNlc3NvciBsaXN0cyBmaXJzdC4KLSAgICBmb3Ig
KGF1dG8mIGJsb2NrIDogYmxvY2tzKQotICAgICAgICBibG9jay0+cHJlZGVjZXNzb3JzKCkucmVz
aXplKDApOworICAgIGZvciAoYXV0byYgYmxvY2sgOiBibG9ja3MpIHsKKyAgICAgICAgaWYgKGJs
b2NrKQorICAgICAgICAgICAgYmxvY2stPnByZWRlY2Vzc29ycygpLnJlc2l6ZSgwKTsKKyAgICB9
CiAKICAgICBHcmFwaE5vZGVXb3JrbGlzdDxCYXNpY0Jsb2NrKiwgSW5kZXhTZXQ8QmFzaWNCbG9j
az4+IHdvcmtsaXN0OwogICAgIHdvcmtsaXN0LnB1c2goYmxvY2tzWzBdLmdldCgpKTsKQEAgLTkz
LDYgKzkyLDggQEAgdm9pZCByZXNldFJlYWNoYWJpbGl0eSgKICAgICB9CiAKICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAxOyBpIDwgYmxvY2tzLnNpemUoKTsgKytpKSB7CisgICAgICAgIGlmICghYmxv
Y2tzW2ldKQorICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGlmIChibG9ja3NbaV0tPnBy
ZWRlY2Vzc29ycygpLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgZGVsZXRlRnVuY3RvcihibG9j
a3NbaV0uZ2V0KCkpOwogICAgICAgICAgICAgYmxvY2tzW2ldID0gbnVsbHB0cjsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZVN0cmVuZ3RoLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VTdHJlbmd0aC5jcHAJKHJldmlzaW9u
IDE5MjExOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZVN0cmVuZ3RoLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKEIzX0pJVCkK
IAorI2luY2x1ZGUgIkIzQmFzaWNCbG9ja0lubGluZXMuaCIKICNpbmNsdWRlICJCM0NvbnRyb2xW
YWx1ZS5oIgogI2luY2x1ZGUgIkIzSW5kZXhTZXQuaCIKICNpbmNsdWRlICJCM0luc2VydGlvblNl
dElubGluZXMuaCIKQEAgLTkwLDEzICs5MSwxNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBydW4oKQog
ICAgIHsKICAgICAgICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKKyAgICAgICAgYm9vbCBmaXJzdCA9
IHRydWU7CiAgICAgICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKICAgICAgICAgZG8gewogICAgICAg
ICAgICAgbV9jaGFuZ2VkID0gZmFsc2U7CiAgICAgICAgICAgICBtX2NoYW5nZWRDRkcgPSBmYWxz
ZTsKKyAgICAgICAgICAgICsraW5kZXg7CiAKLSAgICAgICAgICAgIGlmICh2ZXJib3NlKSB7Ci0g
ICAgICAgICAgICAgICAgZGF0YUxvZygiUmVkdWNlIHN0cmVuZ3RoIElSIGJlZm9yZSBpdGVyYXRp
b24gIyIsICsraW5kZXgsICJcbiIpOworICAgICAgICAgICAgaWYgKGZpcnN0KQorICAgICAgICAg
ICAgICAgIGZpcnN0ID0gZmFsc2U7CisgICAgICAgICAgICBlbHNlIGlmICh2ZXJib3NlKSB7Cisg
ICAgICAgICAgICAgICAgZGF0YUxvZygiQjMgYWZ0ZXIgaXRlcmF0aW9uICMiLCBpbmRleCAtIDEs
ICIgb2YgcmVkdWNlU3RyZW5ndGg6XG4iKTsKICAgICAgICAgICAgICAgICBkYXRhTG9nKG1fcHJv
Yyk7CiAgICAgICAgICAgICB9CiAKQEAgLTEwOCw2ICsxMTMsOCBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICAgICAgbV9pbnNlcnRpb25TZXQuZXhlY3V0ZShtX2Jsb2NrKTsKICAgICAgICAgICAgIH0K
IAorICAgICAgICAgICAgc2ltcGxpZnlDRkcoKTsKKwogICAgICAgICAgICAgaWYgKG1fY2hhbmdl
ZENGRykgewogICAgICAgICAgICAgICAgIG1fcHJvYy5yZXNldFJlYWNoYWJpbGl0eSgpOwogICAg
ICAgICAgICAgICAgIG1fY2hhbmdlZCA9IHRydWU7CkBAIC01NDUsNiArNTUyLDcgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgIC8vIFR1cm4gdGhpczogQnJhbmNoKDAsIHRoZW4sIGVsc2UpCiAgICAg
ICAgICAgICAvLyBJbnRvIHRoaXM6IEp1bXAoZWxzZSkKICAgICAgICAgICAgIGlmICh0cmlTdGF0
ZSA9PSBGYWxzZVRyaVN0YXRlKSB7CisgICAgICAgICAgICAgICAgYnJhbmNoLT50YWtlbigpLmJs
b2NrKCktPnJlbW92ZVByZWRlY2Vzc29yKG1fYmxvY2spOwogICAgICAgICAgICAgICAgIGJyYW5j
aC0+Y29udmVydFRvSnVtcChicmFuY2gtPm5vdFRha2VuKCkpOwogICAgICAgICAgICAgICAgIG1f
Y2hhbmdlZENGRyA9IHRydWU7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC01NTMsNiArNTYx
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIC8vIFR1cm4gdGhpczogQnJhbmNoKG5vdCAwLCB0
aGVuLCBlbHNlKQogICAgICAgICAgICAgLy8gSW50byB0aGlzOiBKdW1wKHRoZW4pCiAgICAgICAg
ICAgICBpZiAodHJpU3RhdGUgPT0gVHJ1ZVRyaVN0YXRlKSB7CisgICAgICAgICAgICAgICAgYnJh
bmNoLT5ub3RUYWtlbigpLmJsb2NrKCktPnJlbW92ZVByZWRlY2Vzc29yKG1fYmxvY2spOwogICAg
ICAgICAgICAgICAgIGJyYW5jaC0+Y29udmVydFRvSnVtcChicmFuY2gtPnRha2VuKCkpOwogICAg
ICAgICAgICAgICAgIG1fY2hhbmdlZENGRyA9IHRydWU7CiAgICAgICAgICAgICAgICAgYnJlYWs7
CkBAIC02MjAsNiArNjI5LDExOCBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQogCisgICAgdm9pZCBzaW1wbGlmeUNGRygpCisgICAgeworICAgICAgICAvLyBXZSBoYXZl
IHRocmVlIGVhc3kgc2ltcGxpZmljYXRpb24gcnVsZXM6CisgICAgICAgIC8vCisgICAgICAgIC8v
IDEpIElmIGEgc3VjY2Vzc29yIGlzIGEgYmxvY2sgdGhhdCBqdXN0IGp1bXBzIHRvIGFub3RoZXIg
YmxvY2ssIHRoZW4ganVtcCBkaXJlY3RseSB0bworICAgICAgICAvLyAgICB0aGF0IGJsb2NrLgor
ICAgICAgICAvLworICAgICAgICAvLyAyKSBJZiBhbGwgc3VjY2Vzc29ycyBhcmUgdGhlIHNhbWUg
YW5kIHRoZSBvcGVyYXRpb24gaGFzIG5vIGVmZmVjdHMsIHRoZW4gdXNlIGEganVtcAorICAgICAg
ICAvLyAgICBpbnN0ZWFkLgorICAgICAgICAvLworICAgICAgICAvLyAzKSBJZiB5b3UganVtcCB0
byBhIGJsb2NrIHRoYXQgaXMgbm90IHlvdSBhbmQgaGFzIG9uZSBwcmVkZWNlc3NvciwgdGhlbiBt
ZXJnZS4KKyAgICAgICAgLy8KKyAgICAgICAgLy8gTm90ZSB0aGF0IGJlY2F1c2Ugb2YgdGhlIGZp
cnN0IHJ1bGUsIHRoaXMgcGhhc2UgbWF5IGludHJvZHVjZSBjcml0aWNhbCBlZGdlcy4gVGhhdCdz
IGZpbmUuCisgICAgICAgIC8vIElmIHlvdSBuZWVkIGJyb2tlbiBjcml0aWNhbCBlZGdlcywgdGhl
biB5b3UgaGF2ZSB0byBicmVhayB0aGVtIHlvdXJzZWxmLgorCisgICAgICAgIC8vIE5vdGUgdGhh
dCB0aGlzIHJlbGllcyBvbiBwcmVkZWNlc3NvcnMgYmVpbmcgYXQgbGVhc3QgY29uc2VydmF0aXZl
bHkgY29ycmVjdC4gSXQncyBmaW5lIGZvcgorICAgICAgICAvLyBwcmVkZWNlc3NvcnMgdG8gbWVu
dGlvbiBhIGJsb2NrIHRoYXQgaXNuJ3QgYWN0dWFsbHkgYSBwcmVkZWNlc3Nvci4gSXQncyAqbm90
KiBmaW5lIGZvciBhCisgICAgICAgIC8vIHByZWRlY2Vzc29yIHRvIGJlIG9taXR0ZWQuIFdlIGFz
c2VydCBhcyBtdWNoIGluIHRoZSBsb29wLiBJbiBwcmFjdGljZSwgd2UgcHJlY2lzZWx5IHByZXNl
cnZlCisgICAgICAgIC8vIHByZWRlY2Vzc29ycyBkdXJpbmcgc3RyZW5ndGggcmVkdWN0aW9uIHNp
bmNlIHRoYXQgbWluaW1pemVzIHRoZSB0b3RhbCBudW1iZXIgb2YgZml4cG9pbnQKKyAgICAgICAg
Ly8gaXRlcmF0aW9ucyBuZWVkZWQgdG8ga2lsbCBhIGxvdCBvZiBjb2RlLgorCisgICAgICAgIGZv
ciAoQmFzaWNCbG9jayogYmxvY2sgOiBtX3Byb2MpIHsKKyAgICAgICAgICAgIGNoZWNrUHJlZGVj
ZXNzb3JWYWxpZGl0eSgpOworCisgICAgICAgICAgICAvLyBXZSBkb24ndCBjYXJlIGFib3V0IGJs
b2NrcyB0aGF0IGRvbid0IGhhdmUgc3VjY2Vzc29ycy4KKyAgICAgICAgICAgIGlmICghYmxvY2st
Pm51bVN1Y2Nlc3NvcnMoKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAg
ICAgLy8gRmlyc3QgY2hlY2sgaWYgYW55IG9mIHRoZSBzdWNjZXNzb3JzIG9mIHRoaXMgYmxvY2sg
Y2FuIGJlIGZvcndhcmRlZCBvdmVyLgorICAgICAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiYgc3Vj
Y2Vzc29yIDogYmxvY2stPnN1Y2Nlc3NvckJsb2NrcygpKSB7CisgICAgICAgICAgICAgICAgaWYg
KHN1Y2Nlc3NvciAhPSBibG9jaworICAgICAgICAgICAgICAgICAgICAmJiBzdWNjZXNzb3ItPnNp
emUoKSA9PSAxCisgICAgICAgICAgICAgICAgICAgICYmIHN1Y2Nlc3Nvci0+bGFzdCgpLT5vcGNv
ZGUoKSA9PSBKdW1wKSB7CisgICAgICAgICAgICAgICAgICAgIEJhc2ljQmxvY2sqIG5ld1N1Y2Nl
c3NvciA9IHN1Y2Nlc3Nvci0+c3VjY2Vzc29yQmxvY2soMCk7CisgICAgICAgICAgICAgICAgICAg
IGlmIChuZXdTdWNjZXNzb3IgIT0gc3VjY2Vzc29yKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICBuZXdTdWNjZXNzb3ItPnJlcGxhY2VQcmVkZWNlc3NvcihzdWNjZXNzb3IsIGJsb2NrKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3NvciA9IG5ld1N1Y2Nlc3NvcjsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIG1fY2hhbmdlZENGRyA9IHRydWU7CisgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIE5v
dyBjaGVjayBpZiB0aGUgYmxvY2sncyB0ZXJtaW5hbCBjYW4gYmUgcmVwbGFjZWQgd2l0aCBhIGp1
bXAuCisgICAgICAgICAgICBpZiAoYmxvY2stPm51bVN1Y2Nlc3NvcnMoKSA+IDEpIHsKKyAgICAg
ICAgICAgICAgICAvLyBUaGUgdGVybWluYWwgbXVzdCBub3QgaGF2ZSB3ZWlyZCBlZmZlY3RzLgor
ICAgICAgICAgICAgICAgIEVmZmVjdHMgZWZmZWN0cyA9IGJsb2NrLT5sYXN0KCktPmVmZmVjdHMo
KTsKKyAgICAgICAgICAgICAgICBlZmZlY3RzLnRlcm1pbmFsID0gZmFsc2U7CisgICAgICAgICAg
ICAgICAgaWYgKCFlZmZlY3RzLm11c3RFeGVjdXRlKCkpIHsKKyAgICAgICAgICAgICAgICAgICAg
Ly8gQWxsIG9mIHRoZSBzdWNjZXNzb3JzIG11c3QgYmUgdGhlIHNhbWUuCisgICAgICAgICAgICAg
ICAgICAgIGJvb2wgYWxsU2FtZSA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIEZyZXF1ZW50
ZWRCbG9jayBmaXJzdFN1Y2Nlc3NvciA9IGJsb2NrLT5zdWNjZXNzb3IoMCk7CisgICAgICAgICAg
ICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDE7IGkgPCBibG9jay0+bnVtU3VjY2Vzc29ycygp
OyArK2kpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChibG9jay0+c3VjY2Vzc29yQmxv
Y2soaSkgIT0gZmlyc3RTdWNjZXNzb3IuYmxvY2soKSkgeworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGFsbFNhbWUgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgICAgICBpZiAoYWxsU2FtZSkgeworICAgICAgICAgICAgICAgICAgICAgICAg
YmxvY2stPmxhc3QoKS0+YXM8Q29udHJvbFZhbHVlPigpLT5jb252ZXJ0VG9KdW1wKGZpcnN0U3Vj
Y2Vzc29yKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fY2hhbmdlZENGRyA9IHRydWU7Cisg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIC8vIEZpbmFsbHkgaGFuZGxlIGp1bXBzIHRvIGEgYmxvY2sgd2l0aCBvbmUg
cHJlZGVjZXNzb3IuCisgICAgICAgICAgICBpZiAoYmxvY2stPm51bVN1Y2Nlc3NvcnMoKSA9PSAx
KSB7CisgICAgICAgICAgICAgICAgQmFzaWNCbG9jayogc3VjY2Vzc29yID0gYmxvY2stPnN1Y2Nl
c3NvckJsb2NrKDApOworICAgICAgICAgICAgICAgIGlmIChzdWNjZXNzb3IgIT0gYmxvY2sgJiYg
c3VjY2Vzc29yLT5udW1QcmVkZWNlc3NvcnMoKSA9PSAxKSB7CisgICAgICAgICAgICAgICAgICAg
IFJFTEVBU0VfQVNTRVJUKHN1Y2Nlc3Nvci0+cHJlZGVjZXNzb3IoMCkgPT0gYmxvY2spOworICAg
ICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgLy8gV2UgY2FuIG1lcmdlIHRo
ZSB0d28gYmxvY2tzLCBiZWNhdXNlIHRoZSBwcmVkZWNlc3NvciBvbmx5IGp1bXBzIHRvIHRoZSBz
dWNjZXNzb3IKKyAgICAgICAgICAgICAgICAgICAgLy8gYW5kIHRoZSBzdWNjZXNzb3IgaXMgb25s
eSByZWFjaGFibGUgZnJvbSB0aGUgcHJlZGVjZXNzb3IuCisgICAgICAgICAgICAgICAgICAgIAor
ICAgICAgICAgICAgICAgICAgICAvLyBSZW1vdmUgdGhlIHRlcm1pbmFsLgorICAgICAgICAgICAg
ICAgICAgICBWYWx1ZSogdmFsdWUgPSBibG9jay0+dmFsdWVzKCkudGFrZUxhc3QoKTsKKyAgICAg
ICAgICAgICAgICAgICAgT3JpZ2luIGp1bXBPcmlnaW4gPSB2YWx1ZS0+b3JpZ2luKCk7CisgICAg
ICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHZhbHVlLT5hczxDb250cm9sVmFsdWU+KCkp
OworICAgICAgICAgICAgICAgICAgICBtX3Byb2MuZGVsZXRlVmFsdWUodmFsdWUpOworICAgICAg
ICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgLy8gQXBwZW5kIHRoZSBmdWxsIGNv
bnRlbnRzIG9mIHRoZSBzdWNjZXNzb3IgdG8gdGhlIHByZWRlY2Vzc29yLgorICAgICAgICAgICAg
ICAgICAgICBibG9jay0+dmFsdWVzKCkuYXBwZW5kVmVjdG9yKHN1Y2Nlc3Nvci0+dmFsdWVzKCkp
OworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgLy8gTWFrZSBzdXJl
IHRoYXQgdGhlIHN1Y2Nlc3NvciBoYXMgbm90aGluZyBsZWZ0IGluIGl0LiBNYWtlIHN1cmUgdGhh
dCB0aGUgYmxvY2sKKyAgICAgICAgICAgICAgICAgICAgLy8gaGFzIGEgdGVybWluYWwgc28gdGhh
dCBub2JvZHkgY2hva2VzIHdoZW4gdGhleSBsb29rIGF0IGl0LgorICAgICAgICAgICAgICAgICAg
ICBzdWNjZXNzb3ItPnZhbHVlcygpLnJlc2l6ZSgwKTsKKyAgICAgICAgICAgICAgICAgICAgc3Vj
Y2Vzc29yLT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPihtX3Byb2MsIE9vcHMsIGp1bXBPcmlnaW4p
OworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgLy8gRW5zdXJlIHRo
YXQgcHJlZGVjZXNzb3JzIG9mIGJsb2NrJ3MgbmV3IHN1Y2Nlc3NvcnMga25vdyB3aGF0J3MgdXAu
CisgICAgICAgICAgICAgICAgICAgIGZvciAoQmFzaWNCbG9jayogbmV3U3VjY2Vzc29yIDogYmxv
Y2stPnN1Y2Nlc3NvckJsb2NrcygpKQorICAgICAgICAgICAgICAgICAgICAgICAgbmV3U3VjY2Vz
c29yLT5yZXBsYWNlUHJlZGVjZXNzb3Ioc3VjY2Vzc29yLCBibG9jayk7CisgICAgICAgICAgICAg
ICAgICAgIG1fY2hhbmdlZENGRyA9IHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKG1fY2hhbmdlZENGRyAmJiB2ZXJib3NlKSB7
CisgICAgICAgICAgICBkYXRhTG9nKCJCMyBhZnRlciBzaW1wbGlmeUNGRzpcbiIpOworICAgICAg
ICAgICAgZGF0YUxvZyhtX3Byb2MpOworICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCBjaGVj
a1ByZWRlY2Vzc29yVmFsaWRpdHkoKQorICAgIHsKKyAgICAgICAgaWYgKCFzaG91bGRWYWxpZGF0
ZUlSQXRFYWNoUGhhc2UoKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBmb3IgKEJh
c2ljQmxvY2sqIGJsb2NrIDogbV9wcm9jKSB7CisgICAgICAgICAgICBmb3IgKEJhc2ljQmxvY2sq
IHN1Y2Nlc3NvciA6IGJsb2NrLT5zdWNjZXNzb3JCbG9ja3MoKSkKKyAgICAgICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVChzdWNjZXNzb3ItPmNvbnRhaW5zUHJlZGVjZXNzb3IoYmxvY2spKTsKKyAg
ICAgICAgfQorICAgIH0KKwogICAgIHZvaWQga2lsbERlYWRDb2RlKCkKICAgICB7CiAgICAgICAg
IEdyYXBoTm9kZVdvcmtsaXN0PFZhbHVlKiwgSW5kZXhTZXQ8VmFsdWU+PiB3b3JrbGlzdDsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZVN0cmVuZ3RoLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUmVkdWNlU3RyZW5ndGguaAkocmV2aXNp
b24gMTkyMTE5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUmVkdWNlU3RyZW5ndGgu
aAkod29ya2luZyBjb3B5KQpAQCAtMzIsOCArMzIsOCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNw
YWNlIEIzIHsKIAogY2xhc3MgUHJvY2VkdXJlOwogCi0vLyBEb2VzIHN0cmVuZ3RoIHJlZHVjdGlv
biwgY29uc3RhbnQgZm9sZGluZywgYW5kIGNhbm9uaWNhbGl6YXRpb24uIEluIHRoZSBmdXR1cmUg
d2UgbWF5IGFsc28gaGF2ZSBpdAotLy8gZG8gQ1NFLgorLy8gRG9lcyBzdHJlbmd0aCByZWR1Y3Rp
b24sIGNvbnN0YW50IGZvbGRpbmcsIGNhbm9uaWNhbGl6YXRpb24sIENGRyBzaW1wbGlmaWNhdGlv
biwgYW5kIERDRS4gSW4gdGhlCisvLyBmdXR1cmUgd2UgbWF5IGFsc28gaGF2ZSBpdCBkbyBDU0Uu
CiAKIGJvb2wgcmVkdWNlU3RyZW5ndGgoUHJvY2VkdXJlJik7CiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9haXIvQWlyQmFzaWNCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQmFzaWNCbG9jay5oCShyZXZpc2lvbiAxOTIxMTkpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckJhc2ljQmxvY2suaAkod29ya2luZyBj
b3B5KQpAQCAtNjUsNiArNjUsOSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJlc2l6ZSh1bnNpZ25l
ZCBzaXplKSB7IG1faW5zdHMucmVzaXplKHNpemUpOyB9CiAKKyAgICBjb25zdCBJbnN0TGlzdCYg
aW5zdHMoKSBjb25zdCB7IHJldHVybiBtX2luc3RzOyB9CisgICAgSW5zdExpc3QmIGluc3RzKCkg
eyByZXR1cm4gbV9pbnN0czsgfQorCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSW5zdD4KICAgICB2
b2lkIGFwcGVuZEluc3QoSW5zdCYmIGluc3QpCiAgICAgewpAQCAtMTA1LDYgKzEwOCw3IEBAIHB1
YmxpYzoKICAgICBib29sIGFkZFByZWRlY2Vzc29yKEJhc2ljQmxvY2sqKTsKICAgICBib29sIHJl
bW92ZVByZWRlY2Vzc29yKEJhc2ljQmxvY2sqKTsKICAgICBib29sIHJlcGxhY2VQcmVkZWNlc3Nv
cihCYXNpY0Jsb2NrKiBmcm9tLCBCYXNpY0Jsb2NrKiB0byk7CisgICAgYm9vbCBjb250YWluc1By
ZWRlY2Vzc29yKEJhc2ljQmxvY2sqIHByZWRlY2Vzc29yKSBjb25zdCB7IHJldHVybiBtX3ByZWRl
Y2Vzc29ycy5jb250YWlucyhwcmVkZWNlc3Nvcik7IH0KIAogICAgIHZvaWQgZHVtcChQcmludFN0
cmVhbSYpIGNvbnN0OwogICAgIHZvaWQgZGVlcER1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyR2VuZXJhdGUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyR2VuZXJhdGUuY3BwCShyZXZp
c2lvbiAxOTIxMTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckdlbmVyYXRl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkFpckdlbmVy
YXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSAiQWlySGFuZGxlQ2FsbGVlU2F2ZXMuaCIKICNpbmNs
dWRlICJBaXJSZXBvcnRVc2VkUmVnaXN0ZXJzLmgiCisjaW5jbHVkZSAiQWlyU2ltcGxpZnlDRkcu
aCIKICNpbmNsdWRlICJBaXJTcGlsbEV2ZXJ5dGhpbmcuaCIKICNpbmNsdWRlICJBaXJWYWxpZGF0
ZS5oIgogI2luY2x1ZGUgIkIzQ29tbW9uLmgiCkBAIC03OSw2ICs4MCwxMCBAQCB2b2lkIGdlbmVy
YXRlKENvZGUmIGNvZGUsIENDYWxsSGVscGVycyYgCiAgICAgLy8gc2hvdWxkbid0IGhhdmUgdG8g
d29ycnkgYWJvdXQgdGhpcyB2ZXJ5IG11Y2guCiAgICAgYWxsb2NhdGVTdGFjayhjb2RlKTsKIAor
ICAgIC8vIElmIHdlIGNvYWxlc2NlZCBtb3ZlcyB0aGVuIHdlIGNhbiB1bmJyZWFrIGNyaXRpY2Fs
IGVkZ2VzLiBUaGlzIGlzIHRoZSBtYWluIHJlYXNvbiBmb3IgdGhpcworICAgIC8vIHBoYXNlLgor
ICAgIHNpbXBsaWZ5Q0ZHKGNvZGUpOworCiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCByZWFsbHkg
aGF2ZSBhIGNvZGUgbGF5b3V0IG9wdGltaXphdGlvbiBoZXJlLgogICAgIC8vIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTA0NzgKIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL2Fpci9BaXJJbnN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvYWlyL0Fpckluc3QuY3BwCShyZXZpc2lvbiAxOTIxMTkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpckluc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCwx
MSArMjgsMjMgQEAKIAogI2lmIEVOQUJMRShCM19KSVQpCiAKKyNpbmNsdWRlICJBaXJJbnN0SW5s
aW5lcy5oIgogI2luY2x1ZGUgIkIzVmFsdWUuaCIKICNpbmNsdWRlIDx3dGYvTGlzdER1bXAuaD4K
IAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7IG5hbWVzcGFjZSBBaXIgewogCitib29s
IEluc3Q6Omhhc0FyZ0VmZmVjdHMoKQoreworICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7CisgICAg
Zm9yRWFjaEFyZygKKyAgICAgICAgWyZdIChBcmcmLCBBcmc6OlJvbGUgcm9sZSwgQXJnOjpUeXBl
KSB7CisgICAgICAgICAgICBpZiAoQXJnOjppc0RlZihyb2xlKSkKKyAgICAgICAgICAgICAgICBy
ZXN1bHQgPSB0cnVlOworICAgICAgICB9KTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCiB2b2lk
IEluc3Q6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIHsKICAgICBvdXQucHJpbnQob3Bj
b2RlLCAiICIsIGxpc3REdW1wKGFyZ3MpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9haXIvQWlySW5zdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9h
aXIvQWlySW5zdC5oCShyZXZpc2lvbiAxOTIxMTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvYWlyL0Fpckluc3QuaAkod29ya2luZyBjb3B5KQpAQCAtMTUxLDYgKzE1MSw5IEBAIHB1Ymxp
YzoKICAgICAvLyBpbXBsaWVkIGJ5IHRoZSBzZWNvbmQgYXJndW1lbnQuCiAgICAgYm9vbCBoYXNO
b25BcmdFZmZlY3RzKCk7CiAKKyAgICAvLyBUZWxscyB5b3UgaWYgdGhpcyBvcGVyYXRpb24gaGFz
IGFyZyBlZmZlY3RzLgorICAgIGJvb2wgaGFzQXJnRWZmZWN0cygpOworCiAgICAgLy8gR2VuZXJh
dGUgc29tZSBjb2RlIGZvciB0aGlzIGluc3RydWN0aW9uLiBUaGlzIGlzLCBsaWtlLCBsaXRlcmFs
bHkgb3VyIGJhY2tlbmQuIElmIHRoaXMgaXMgdGhlCiAgICAgLy8gdGVybWluYWwsIGl0IHJldHVy
bnMgdGhlIGp1bXAgdGhhdCBuZWVkcyB0byBiZSBsaW5rZWQgZm9yIHRoZSAidGhlbiIgY2FzZSwg
d2l0aCB0aGUgImVsc2UiCiAgICAgLy8gY2FzZSBiZWluZyBmYWxsLXRocm91Z2guIFRoaXMgZnVu
Y3Rpb24gaXMgYXV0by1nZW5lcmF0ZWQgYnkgb3Bjb2RlX2dlbmVyYXRvci5yYi4KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyTGl2ZW5lc3MuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckxpdmVuZXNzLmgJKHJldmlzaW9uIDE5MjEx
OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyTGl2ZW5lc3MuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNTcsNiArNTcsOCBAQCBwdWJsaWM6CiAKICAgICAgICAgICAgIGZvciAoc2l6
ZV90IGJsb2NrSW5kZXggPSBjb2RlLnNpemUoKTsgYmxvY2tJbmRleC0tOykgewogICAgICAgICAg
ICAgICAgIEJhc2ljQmxvY2sqIGJsb2NrID0gY29kZS5hdChibG9ja0luZGV4KTsKKyAgICAgICAg
ICAgICAgICBpZiAoIWJsb2NrKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAg
ICAgICAgICAgICBMb2NhbENhbGMgbG9jYWxDYWxjKCp0aGlzLCBibG9jayk7CiAgICAgICAgICAg
ICAgICAgZm9yIChzaXplX3QgaW5zdEluZGV4ID0gYmxvY2stPnNpemUoKTsgaW5zdEluZGV4LS07
KQogICAgICAgICAgICAgICAgICAgICBsb2NhbENhbGMuZXhlY3V0ZShibG9jay0+YXQoaW5zdElu
ZGV4KSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wY29kZS5vcGNv
ZGVzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyT3Bjb2Rl
Lm9wY29kZXMJKHJldmlzaW9uIDE5MjExOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9h
aXIvQWlyT3Bjb2RlLm9wY29kZXMJKHdvcmtpbmcgY29weSkKQEAgLTI5NCw3ICsyOTQsNyBAQCBK
dW1wIC9icmFuY2gKIAogUmV0IC90ZXJtaW5hbAogCi1CcmVha3BvaW50IC9lZmZlY3RzCitPb3Bz
IC90ZXJtaW5hbAogCiAjIEFpciBhbGxvd3MgZm9yIGV4b3RpYyBiZWhhdmlvci4gQSBQYXRjaCdz
IGJlaGF2aW9yIGlzIGRldGVybWluZWQgZW50aXJlbHkgYnkgdGhlIFNwZWNpYWwgb3BlcmFuZCwK
ICMgd2hpY2ggbXVzdCBiZSB0aGUgZmlyc3Qgb3BlcmFuZC4KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9haXIvQWlyU2ltcGxpZnlDRkcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyU2ltcGxpZnlDRkcuY3BwCShyZXZpc2lvbiAwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJTaW1wbGlmeUNGRy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSwxNjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFpclNpbXBsaWZ5
Q0ZHLmgiCisKKyNpZiBFTkFCTEUoQjNfSklUKQorCisjaW5jbHVkZSAiQWlyQ29kZS5oIgorI2lu
Y2x1ZGUgIkFpckluc3RJbmxpbmVzLmgiCisjaW5jbHVkZSAiQWlyUGhhc2VTY29wZS5oIgorCitu
YW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsgbmFtZXNwYWNlIEFpciB7CisKK2Jvb2wgc2lt
cGxpZnlDRkcoQ29kZSYgY29kZSkKK3sKKyAgICBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsK
KyAgICAKKyAgICBQaGFzZVNjb3BlIHBoYXNlU2NvcGUoY29kZSwgInNpbXBsaWZ5Q0ZHIik7Cisg
ICAgCisgICAgLy8gV2UgaGF2ZSB0aHJlZSBlYXN5IHNpbXBsaWZpY2F0aW9uIHJ1bGVzOgorICAg
IC8vCisgICAgLy8gMSkgSWYgYSBzdWNjZXNzb3IgaXMgYSBibG9jayB0aGF0IGp1c3QganVtcHMg
dG8gYW5vdGhlciBibG9jaywgdGhlbiBqdW1wIGRpcmVjdGx5IHRvCisgICAgLy8gICAgdGhhdCBi
bG9jay4KKyAgICAvLworICAgIC8vIDIpIElmIGFsbCBzdWNjZXNzb3JzIGFyZSB0aGUgc2FtZSBh
bmQgdGhlIG9wZXJhdGlvbiBoYXMgbm8gZWZmZWN0cywgdGhlbiB1c2UgYSBqdW1wCisgICAgLy8g
ICAgaW5zdGVhZC4KKyAgICAvLworICAgIC8vIDMpIElmIHlvdSBqdW1wIHRvIGEgYmxvY2sgdGhh
dCBpcyBub3QgeW91IGFuZCBoYXMgb25lIHByZWRlY2Vzc29yLCB0aGVuIG1lcmdlLgorICAgIC8v
CisgICAgLy8gTm90ZSB0aGF0IGJlY2F1c2Ugb2YgdGhlIGZpcnN0IHJ1bGUsIHRoaXMgcGhhc2Ug
bWF5IGludHJvZHVjZSBjcml0aWNhbCBlZGdlcy4gVGhhdCdzIGZpbmUuCisgICAgLy8gSWYgeW91
IG5lZWQgYnJva2VuIGNyaXRpY2FsIGVkZ2VzLCB0aGVuIHlvdSBoYXZlIHRvIGJyZWFrIHRoZW0g
eW91cnNlbGYuCisKKyAgICBib29sIHJlc3VsdCA9IGZhbHNlOworICAgIGZvciAoOzspIHsKKyAg
ICAgICAgaWYgKHZlcmJvc2UpIHsKKyAgICAgICAgICAgIGRhdGFMb2coIkFpciBiZWZvcmUgYW4g
aXRlcmF0aW9uIG9mIHNpbXBsaWZ5Q0ZHOlxuIik7CisgICAgICAgICAgICBkYXRhTG9nKGNvZGUp
OworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBib29sIGNoYW5nZWQgPSBmYWxzZTsKKyAg
ICAgICAgZm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IGNvZGUpIHsKKyAgICAgICAgICAgIC8vIFdl
IHJlbHkgb24gcHJlZGVjZXNzb3JzIGJlaW5nIGNvbnNlcnZhdGl2ZWx5IGNvcnJlY3QuIFZlcmlm
eSB0aGlzIGhlcmUuCisgICAgICAgICAgICBpZiAoc2hvdWxkVmFsaWRhdGVJUkF0RWFjaFBoYXNl
KCkpIHsKKyAgICAgICAgICAgICAgICBmb3IgKEJhc2ljQmxvY2sqIGJsb2NrIDogY29kZSkgewor
ICAgICAgICAgICAgICAgICAgICBmb3IgKEJhc2ljQmxvY2sqIHN1Y2Nlc3NvciA6IGJsb2NrLT5z
dWNjZXNzb3JCbG9ja3MoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
KHN1Y2Nlc3Nvci0+Y29udGFpbnNQcmVkZWNlc3NvcihibG9jaykpOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gV2UgZG9uJ3QgY2FyZSBhYm91dCBi
bG9ja3MgdGhhdCBkb24ndCBoYXZlIHN1Y2Nlc3NvcnMuCisgICAgICAgICAgICBpZiAoIWJsb2Nr
LT5udW1TdWNjZXNzb3JzKCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAg
ICAgIC8vIEZpcnN0IGNoZWNrIGlmIGFueSBvZiB0aGUgc3VjY2Vzc29ycyBvZiB0aGlzIGJsb2Nr
IGNhbiBiZSBmb3J3YXJkZWQgb3Zlci4KKyAgICAgICAgICAgIGZvciAoQmFzaWNCbG9jayomIHN1
Y2Nlc3NvciA6IGJsb2NrLT5zdWNjZXNzb3JCbG9ja3MoKSkgeworICAgICAgICAgICAgICAgIGlm
IChzdWNjZXNzb3IgIT0gYmxvY2sKKyAgICAgICAgICAgICAgICAgICAgJiYgc3VjY2Vzc29yLT5z
aXplKCkgPT0gMQorICAgICAgICAgICAgICAgICAgICAmJiBzdWNjZXNzb3ItPmxhc3QoKS5vcGNv
ZGUgPT0gSnVtcCkgeworICAgICAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBuZXdTdWNjZXNz
b3IgPSBzdWNjZXNzb3ItPnN1Y2Nlc3NvckJsb2NrKDApOworICAgICAgICAgICAgICAgICAgICBp
ZiAobmV3U3VjY2Vzc29yICE9IHN1Y2Nlc3NvcikgeworICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKHZlcmJvc2UpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUmVwbGFjaW5nICIsIHBvaW50ZXJEdW1wKGJs
b2NrKSwgIi0+IiwgcG9pbnRlckR1bXAoc3VjY2Vzc29yKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIiB3aXRoICIsIHBvaW50ZXJEdW1wKGJsb2NrKSwgIi0+IiwgcG9pbnRlckR1
bXAobmV3U3VjY2Vzc29yKSwgIlxuIik7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgICAgICAgICBuZXdTdWNjZXNzb3ItPnJlcGxhY2VQcmVkZWNlc3NvcihzdWNj
ZXNzb3IsIGJsb2NrKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3NvciA9IG5ld1N1
Y2Nlc3NvcjsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlOworICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAvLyBOb3cgY2hlY2sgaWYgdGhlIGJsb2NrJ3MgdGVybWluYWwgY2FuIGJlIHJlcGxh
Y2VkIHdpdGggYSBqdW1wLgorICAgICAgICAgICAgaWYgKGJsb2NrLT5udW1TdWNjZXNzb3JzKCkg
PiAxKSB7CisgICAgICAgICAgICAgICAgLy8gVGhlIHRlcm1pbmFsIG11c3Qgbm90IGhhdmUgd2Vp
cmQgZWZmZWN0cy4KKyAgICAgICAgICAgICAgICBpZiAoIWJsb2NrLT5sYXN0KCkuaGFzQXJnRWZm
ZWN0cygpCisgICAgICAgICAgICAgICAgICAgICYmICFibG9jay0+bGFzdCgpLmhhc05vbkFyZ05v
bkNvbnRyb2xFZmZlY3RzKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gQWxsIG9mIHRoZSBz
dWNjZXNzb3JzIG11c3QgYmUgdGhlIHNhbWUuCisgICAgICAgICAgICAgICAgICAgIGJvb2wgYWxs
U2FtZSA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIEJhc2ljQmxvY2sqIGZpcnN0U3VjY2Vz
c29yID0gYmxvY2stPnN1Y2Nlc3NvckJsb2NrKDApOworICAgICAgICAgICAgICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAxOyBpIDwgYmxvY2stPm51bVN1Y2Nlc3NvcnMoKTsgKytpKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoYmxvY2stPnN1Y2Nlc3NvckJsb2NrKGkpICE9IGZpcnN0
U3VjY2Vzc29yKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsU2FtZSA9IGZhbHNl
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmIChh
bGxTYW1lKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJDaGFuZ2luZyAiLCBwb2ludGVyRHVtcChibG9j
ayksICIncyB0ZXJtaW5hbCB0byBhIEp1bXAuXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGJsb2NrLT5sYXN0KCkgPSBJbnN0KEp1bXAsIGJsb2NrLT5sYXN0KCkub3JpZ2luKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGJsb2NrLT5zdWNjZXNzb3JzKCkucmVzaXplKDEpOworICAgICAg
ICAgICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIEZpbmFs
bHkgaGFuZGxlIGp1bXBzIHRvIGEgYmxvY2sgd2l0aCBvbmUgcHJlZGVjZXNzb3IuCisgICAgICAg
ICAgICBpZiAoYmxvY2stPm51bVN1Y2Nlc3NvcnMoKSA9PSAxKSB7CisgICAgICAgICAgICAgICAg
QmFzaWNCbG9jayogc3VjY2Vzc29yID0gYmxvY2stPnN1Y2Nlc3NvckJsb2NrKDApOworICAgICAg
ICAgICAgICAgIGlmIChzdWNjZXNzb3IgIT0gYmxvY2sgJiYgc3VjY2Vzc29yLT5udW1QcmVkZWNl
c3NvcnMoKSA9PSAxKSB7CisgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHN1Y2Nl
c3Nvci0+cHJlZGVjZXNzb3IoMCkgPT0gYmxvY2spOworCisgICAgICAgICAgICAgICAgICAgIC8v
IFdlIGNhbiBtZXJnZSB0aGUgdHdvIGJsb2NrcyBiZWNhdXNlIHRoZSBwcmVkZWNlc3NvciBvbmx5
IGp1bXBzIHRvIHRoZSBzdWNjZXNzb3IKKyAgICAgICAgICAgICAgICAgICAgLy8gYW5kIHRoZSBz
dWNjZXNzb3IgaXMgb25seSByZWFjaGFibGUgZnJvbSB0aGUgcHJlZGVjZXNzb3IuCisKKyAgICAg
ICAgICAgICAgICAgICAgLy8gUmVtb3ZlIHRoZSB0ZXJtaW5hbC4KKyAgICAgICAgICAgICAgICAg
ICAgVmFsdWUqIG9yaWdpbiA9IGJsb2NrLT5pbnN0cygpLnRha2VMYXN0KCkub3JpZ2luOworCisg
ICAgICAgICAgICAgICAgICAgIC8vIEFwcGVuZCB0aGUgZnVsbCBjb250ZW50cyBvZiB0aGUgc3Vj
Y2Vzc29yIHRvIHRoZSBwcmVkZWNlc3Nvci4KKyAgICAgICAgICAgICAgICAgICAgYmxvY2stPmlu
c3RzKCkucmVzZXJ2ZUNhcGFjaXR5KGJsb2NrLT5zaXplKCkgKyBzdWNjZXNzb3ItPnNpemUoKSk7
CisgICAgICAgICAgICAgICAgICAgIGZvciAoSW5zdCYgaW5zdCA6ICpzdWNjZXNzb3IpCisgICAg
ICAgICAgICAgICAgICAgICAgICBibG9jay0+YXBwZW5kSW5zdChXVEY6Om1vdmUoaW5zdCkpOwor
CisgICAgICAgICAgICAgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGF0IG91ciBzdWNjZXNzb3JzIGFy
ZSB0aGUgc3VjY2Vzc29yJ3Mgc3VjY2Vzc29ycy4KKyAgICAgICAgICAgICAgICAgICAgYmxvY2st
PnN1Y2Nlc3NvcnMoKSA9IFdURjo6bW92ZShzdWNjZXNzb3ItPnN1Y2Nlc3NvcnMoKSk7CisKKyAg
ICAgICAgICAgICAgICAgICAgLy8gTWFrZSBzdXJlIHRoYXQgdGhlIHN1Y2Nlc3NvciBoYXMgbm90
aGluZyBsZWZ0IGluIGl0IGV4Y2VwdCBhbiBvb3BzLgorICAgICAgICAgICAgICAgICAgICBzdWNj
ZXNzb3ItPnJlc2l6ZSgxKTsKKyAgICAgICAgICAgICAgICAgICAgc3VjY2Vzc29yLT5sYXN0KCkg
PSBJbnN0KE9vcHMsIG9yaWdpbik7CisgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3Nvci0+c3Vj
Y2Vzc29ycygpLmNsZWFyKCk7CisKKyAgICAgICAgICAgICAgICAgICAgLy8gRW5zdXJlIHRoYXQg
dGhlIHByZWRlY2Vzc29ycyBvZiBibG9jaydzIG5ldyBzdWNjZXNzb3JzIGtub3cgd2hhdCdzIHVw
LgorICAgICAgICAgICAgICAgICAgICBmb3IgKEJhc2ljQmxvY2sqIG5ld1N1Y2Nlc3NvciA6IGJs
b2NrLT5zdWNjZXNzb3JCbG9ja3MoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ld1N1Y2Nl
c3Nvci0+cmVwbGFjZVByZWRlY2Vzc29yKHN1Y2Nlc3NvciwgYmxvY2spOworCisgICAgICAgICAg
ICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygi
TWVyZ2VkICIsIHBvaW50ZXJEdW1wKGJsb2NrKSwgIi0+IiwgcG9pbnRlckR1bXAoc3VjY2Vzc29y
KSwgIlxuIik7CisgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmICghY2hhbmdl
ZCkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICByZXN1bHQgPSB0cnVlOworICAgICAgICBj
b2RlLnJlc2V0UmVhY2hhYmlsaXR5KCk7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30K
KworfSB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjM6OkFpcgorCisjZW5kaWYgLy8gRU5BQkxFKEIz
X0pJVCkKKworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclNpbXBsaWZ5
Q0ZHLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJTaW1w
bGlmeUNGRy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9B
aXJTaW1wbGlmeUNGRy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBBaXJTaW1wbGlm
eUNGR19oCisjZGVmaW5lIEFpclNpbXBsaWZ5Q0ZHX2gKKworI2lmIEVOQUJMRShCM19KSVQpCisK
K25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeyBuYW1lc3BhY2UgQWlyIHsKKworY2xhc3Mg
Q29kZTsKKworLy8gU2ltcGxpZmllcyB0aGUgY29udHJvbCBmbG93IGdyYXBoIGJ5IHJlbW92aW5n
IGp1bXAtb25seSBibG9ja3MgYW5kIG1lcmdpbmcganVtcHMuCisKK2Jvb2wgc2ltcGxpZnlDRkco
Q29kZSYpOworCit9IH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMzo6QWlyCisKKyNlbmRpZiAvLyBF
TkFCTEUoQjNfSklUKQorCisjZW5kaWYgLy8gQWlyU2ltcGxpZnlDRkdfaAorCg==
</data>
<flag name="review"
          id="290061"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>