<?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>77532</bug_id>
          
          <creation_ts>2012-02-01 01:47:40 -0800</creation_ts>
          <short_desc>DFG should fold double-to-int conversions</short_desc>
          <delta_ts>2012-02-06 17:34:38 -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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>546913</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-02-01 01:47:40 -0800</bug_when>
    <thetext>If a double-to-int conversion is using a constant, then don&apos;t emit code to convert the constant to an int.  Just convert it in the compiler.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>546917</commentid>
    <comment_count>1</comment_count>
      <attachid>124908</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-02-01 01:50:44 -0800</bug_when>
    <thetext>Created attachment 124908
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>546919</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-01 01:52:44 -0800</bug_when>
    <thetext>Attachment 124908 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source...&quot; exit_code: 1

Source/JavaScriptCore/bytecode/CodeBlock.h:728:  The parameter name &quot;v&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 1 in 12 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>546922</commentid>
    <comment_count>3</comment_count>
      <attachid>124909</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-02-01 01:55:21 -0800</bug_when>
    <thetext>Created attachment 124909
the patch

Fixed style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>547435</commentid>
    <comment_count>4</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-02-01 15:30:12 -0800</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/106502</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550458</commentid>
    <comment_count>5</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-02-06 17:34:38 -0800</bug_when>
    <thetext>&lt;rdar://problem/10817150&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124908</attachid>
            <date>2012-02-01 01:50:44 -0800</date>
            <delta_ts>2012-02-01 01:55:21 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>foldconvert_patch_1.diff</filename>
            <type>text/plain</type>
            <size>33292</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA2NDQ5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ4IEBA
CisyMDEyLTAyLTAxICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
REZHIHNob3VsZCBmb2xkIGRvdWJsZS10by1pbnQgY29udmVyc2lvbnMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3NTMyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBQZXJmb3JtYW5jZSBuZXV0
cmFsIG9uIG1ham9yIGJlbmNobWFya3MuIEJ1dCBpdCBtYWtlcyBjYWxsaW5nIFY4J3MKKyAgICAg
ICAgTWF0aC5yYW5kb20oKSA0eCBmYXN0ZXIuCisKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxv
Y2suY3BwOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjphZGRPckZp
bmRDb25zdGFudCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAgIChK
U0M6OkNvZGVCbG9jazo6YWRkQ29uc3RhbnQpOgorICAgICAgICAoQ29kZUJsb2NrKToKKyAgICAg
ICAgKiBkZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJh
Y3RTdGF0ZTo6ZXhlY3V0ZSk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6dG9JbnQzMik6CisgICAgICAgIChC
eXRlQ29kZVBhcnNlcik6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmdldEpT
Q29uc3RhbnRGb3JWYWx1ZSk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6Omlz
SW50MzJDb25zdGFudCk6CisgICAgICAgICogZGZnL0RGR0dyYXBoLmg6CisgICAgICAgIChKU0M6
OkRGRzo6R3JhcGg6OmFkZFNob3VsZFNwZWN1bGF0ZUludGVnZXIpOgorICAgICAgICAoR3JhcGgp
OgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjphZGRJbW1lZGlhdGVTaG91bGRTcGVjdWxhdGVJ
bnRlZ2VyKToKKyAgICAgICAgKiBkZmcvREZHUHJvcGFnYXRvci5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6UHJvcGFnYXRvcjo6cHJvcGFnYXRlTm9kZVByZWRpY3Rpb25zKToKKyAgICAgICAgKEpT
Qzo6REZHOjpQcm9wYWdhdG9yOjpkb1JvdW5kT2ZEb3VibGVWb3RpbmcpOgorICAgICAgICAoSlND
OjpERkc6OlByb3BhZ2F0b3I6OmZpeHVwTm9kZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0
aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFk
ZCk6CisgICAgICAgIChERkcpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpj
b21waWxlQXJpdGhTdWIpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjp2YWx1ZU9mTnVtYmVyQ29uc3RhbnRBc0lu
dDMyKToKKyAgICAgICAgKFNwZWN1bGF0aXZlSklUKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3Vs
YXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogcnVudGltZS9K
U1ZhbHVlSW5saW5lTWV0aG9kcy5oOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjphc0RvdWJsZSk6
CisKIDIwMTItMDEtMzEgIEhhamltZSBNb3JyaXRhICA8bW9ycml0YUBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgQWRkIG1pc3NpbmcgSlNfUFJJVkFURV9FWFBPUlRzCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkocmV2aXNpb24gMTA2MzM3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTIwNjIsNiArMjA2MiwxNiBAQCB2b2lkIENvZGVCbG9jazo6Y3JlYXRlQWN0aXZh
dGlvbihDYWxsRnJhCiAgICAgY2FsbEZyYW1lLT51bmNoZWNrZWRSKGFjdGl2YXRpb25SZWdpc3Rl
cigpKSA9IEpTVmFsdWUoYWN0aXZhdGlvbik7CiAgICAgY2FsbEZyYW1lLT5zZXRTY29wZUNoYWlu
KGNhbGxGcmFtZS0+c2NvcGVDaGFpbigpLT5wdXNoKGFjdGl2YXRpb24pKTsKIH0KKwordW5zaWdu
ZWQgQ29kZUJsb2NrOjphZGRPckZpbmRDb25zdGFudChKU1ZhbHVlIHYpCit7CisgICAgdW5zaWdu
ZWQgbnVtYmVyT2ZDb25zdGFudHMgPSBudW1iZXJPZkNvbnN0YW50UmVnaXN0ZXJzKCk7CisgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mQ29uc3RhbnRzOyArK2kpIHsKKyAgICAg
ICAgaWYgKGdldENvbnN0YW50KEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4ICsgaSkgPT0gdikK
KyAgICAgICAgICAgIHJldHVybiBpOworICAgIH0KKyAgICByZXR1cm4gYWRkQ29uc3RhbnQodik7
Cit9CiAgICAgCiAjaWYgRU5BQkxFKEpJVCkKIHZvaWQgQ29kZUJsb2NrOjp1bmxpbmtDYWxscygp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCShyZXZp
c2lvbiAxMDYzMzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmgJKHdvcmtpbmcgY29weSkKQEAgLTcxOCwxMSArNzE4LDE0IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICBJZGVudGlmaWVyJiBpZGVudGlmaWVyKGludCBpbmRleCkgeyByZXR1cm4gbV9pZGVu
dGlmaWVyc1tpbmRleF07IH0KIAogICAgICAgICBzaXplX3QgbnVtYmVyT2ZDb25zdGFudFJlZ2lz
dGVycygpIGNvbnN0IHsgcmV0dXJuIG1fY29uc3RhbnRSZWdpc3RlcnMuc2l6ZSgpOyB9Ci0gICAg
ICAgIHZvaWQgYWRkQ29uc3RhbnQoSlNWYWx1ZSB2KQorICAgICAgICB1bnNpZ25lZCBhZGRDb25z
dGFudChKU1ZhbHVlIHYpCiAgICAgICAgIHsKKyAgICAgICAgICAgIHVuc2lnbmVkIHJlc3VsdCA9
IG1fY29uc3RhbnRSZWdpc3RlcnMuc2l6ZSgpOwogICAgICAgICAgICAgbV9jb25zdGFudFJlZ2lz
dGVycy5hcHBlbmQoV3JpdGVCYXJyaWVyPFVua25vd24+KCkpOwogICAgICAgICAgICAgbV9jb25z
dGFudFJlZ2lzdGVycy5sYXN0KCkuc2V0KG1fZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCksIG1f
b3duZXJFeGVjdXRhYmxlLmdldCgpLCB2KTsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAg
ICAgICAgIH0KKyAgICAgICAgdW5zaWduZWQgYWRkT3JGaW5kQ29uc3RhbnQoSlNWYWx1ZSB2KTsK
ICAgICAgICAgV3JpdGVCYXJyaWVyPFVua25vd24+JiBjb25zdGFudFJlZ2lzdGVyKGludCBpbmRl
eCkgeyByZXR1cm4gbV9jb25zdGFudFJlZ2lzdGVyc1tpbmRleCAtIEZpcnN0Q29uc3RhbnRSZWdp
c3RlckluZGV4XTsgfQogICAgICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNDb25zdGFudFJlZ2lz
dGVySW5kZXgoaW50IGluZGV4KSBjb25zdCB7IHJldHVybiBpbmRleCA+PSBGaXJzdENvbnN0YW50
UmVnaXN0ZXJJbmRleDsgfQogICAgICAgICBBTFdBWVNfSU5MSU5FIEpTVmFsdWUgZ2V0Q29uc3Rh
bnQoaW50IGluZGV4KSBjb25zdCB7IHJldHVybiBtX2NvbnN0YW50UmVnaXN0ZXJzW2luZGV4IC0g
Rmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXhdLmdldCgpOyB9CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0U3RhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHAJKHJldmlzaW9uIDEwNjMzNykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI4MCw3ICsyODAsNyBAQCBib29sIEFic3RyYWN0U3RhdGU6OmV4ZWN1dGUo
Tm9kZUluZGV4IG5vCiAgICAgICAgICAgICAKICAgICBjYXNlIFZhbHVlQWRkOgogICAgIGNhc2Ug
QXJpdGhBZGQ6IHsKLSAgICAgICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZUludGVnZXIobV9n
cmFwaFtub2RlLmNoaWxkMSgpXSwgbV9ncmFwaFtub2RlLmNoaWxkMigpXSkgJiYgbm9kZS5jYW5T
cGVjdWxhdGVJbnRlZ2VyKCkpIHsKKyAgICAgICAgaWYgKG1fZ3JhcGguYWRkU2hvdWxkU3BlY3Vs
YXRlSW50ZWdlcihub2RlLCBtX2NvZGVCbG9jaykpIHsKICAgICAgICAgICAgIGZvck5vZGUobm9k
ZS5jaGlsZDEoKSkuZmlsdGVyKFByZWRpY3RJbnQzMik7CiAgICAgICAgICAgICBmb3JOb2RlKG5v
ZGUuY2hpbGQyKCkpLmZpbHRlcihQcmVkaWN0SW50MzIpOwogICAgICAgICAgICAgZm9yTm9kZShu
b2RlSW5kZXgpLnNldChQcmVkaWN0SW50MzIpOwpAQCAtMjk4LDcgKzI5OCwxOSBAQCBib29sIEFi
c3RyYWN0U3RhdGU6OmV4ZWN1dGUoTm9kZUluZGV4IG5vCiAgICAgICAgIGJyZWFrOwogICAgIH0K
ICAgICAgICAgICAgIAotICAgIGNhc2UgQXJpdGhTdWI6CisgICAgY2FzZSBBcml0aFN1Yjogewor
ICAgICAgICBpZiAobV9ncmFwaC5hZGRTaG91bGRTcGVjdWxhdGVJbnRlZ2VyKG5vZGUsIG1fY29k
ZUJsb2NrKSkgeworICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoUHJl
ZGljdEludDMyKTsKKyAgICAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDIoKSkuZmlsdGVyKFBy
ZWRpY3RJbnQzMik7CisgICAgICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0KFByZWRpY3RJ
bnQzMik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBmb3JOb2RlKG5v
ZGUuY2hpbGQxKCkpLmZpbHRlcihQcmVkaWN0TnVtYmVyKTsKKyAgICAgICAgZm9yTm9kZShub2Rl
LmNoaWxkMigpKS5maWx0ZXIoUHJlZGljdE51bWJlcik7CisgICAgICAgIGZvck5vZGUobm9kZUlu
ZGV4KS5zZXQoUHJlZGljdERvdWJsZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICAgICAg
CiAgICAgY2FzZSBBcml0aE11bDoKICAgICBjYXNlIEFyaXRoRGl2OgogICAgIGNhc2UgQXJpdGhN
aW46CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFy
c2VyLmNwcAkocmV2aXNpb24gMTA2MzM3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdCeXRlQ29kZVBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzNCw3ICszMzQsOCBAQCBw
cml2YXRlOgogICAgICAgICAgICAgSlNWYWx1ZSB2ID0gdmFsdWVPZkpTQ29uc3RhbnQoaW5kZXgp
OwogICAgICAgICAgICAgaWYgKHYuaXNJbnQzMigpKQogICAgICAgICAgICAgICAgIHJldHVybiBn
ZXRKU0NvbnN0YW50KG5vZGUuY29uc3RhbnROdW1iZXIoKSk7Ci0gICAgICAgICAgICAvLyBGSVhN
RTogV2UgY291bGQgY29udmVydCB0aGUgZG91YmxlIFRvSW50ZWdlciBhdCB0aGlzIHBvaW50Lgor
ICAgICAgICAgICAgaWYgKHYuaXNOdW1iZXIoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2V0
SlNDb25zdGFudEZvclZhbHVlKEpTVmFsdWUoSlNDOjp0b0ludDMyKHYuYXNOdW1iZXIoKSkpKTsK
ICAgICAgICAgfQogCiAgICAgICAgIHJldHVybiBhZGRUb0dyYXBoKFZhbHVlVG9JbnQzMiwgaW5k
ZXgpOwpAQCAtMzU2LDYgKzM1NywxNyBAQCBwcml2YXRlOgogCiAgICAgICAgIHJldHVybiBhZGRU
b0dyYXBoKFZhbHVlVG9OdW1iZXIsIE9wSW5mbyhOb2RlVXNlQm90dG9tKSwgaW5kZXgpOwogICAg
IH0KKyAgICAKKyAgICBOb2RlSW5kZXggZ2V0SlNDb25zdGFudEZvclZhbHVlKEpTVmFsdWUgY29u
c3RhbnRWYWx1ZSkKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIGNvbnN0YW50SW5kZXggPSBtX2Nv
ZGVCbG9jay0+YWRkT3JGaW5kQ29uc3RhbnQoY29uc3RhbnRWYWx1ZSk7CisgICAgICAgIGlmIChj
b25zdGFudEluZGV4ID49IG1fY29uc3RhbnRzLnNpemUoKSkKKyAgICAgICAgICAgIG1fY29uc3Rh
bnRzLmFwcGVuZChDb25zdGFudFJlY29yZCgpKTsKKyAgICAgICAgCisgICAgICAgIEFTU0VSVCht
X2NvbnN0YW50cy5zaXplKCkgPT0gbV9jb2RlQmxvY2stPm51bWJlck9mQ29uc3RhbnRSZWdpc3Rl
cnMoKSk7CisgICAgICAgIAorICAgICAgICByZXR1cm4gZ2V0SlNDb25zdGFudChjb25zdGFudElu
ZGV4KTsKKyAgICB9CiAKICAgICBOb2RlSW5kZXggZ2V0SlNDb25zdGFudCh1bnNpZ25lZCBjb25z
dGFudCkKICAgICB7CkBAIC0zODcsMTYgKzM5OSw2IEBAIHByaXZhdGU6CiAgICAgewogICAgICAg
ICByZXR1cm4gaXNKU0NvbnN0YW50KG5vZGVJbmRleCkgJiYgdmFsdWVPZkpTQ29uc3RhbnQobm9k
ZUluZGV4KS5pc0ludDMyKCk7CiAgICAgfQotICAgIGJvb2wgaXNTbWFsbEludDMyQ29uc3RhbnQo
Tm9kZUluZGV4IG5vZGVJbmRleCkKLSAgICB7Ci0gICAgICAgIGlmICghaXNKU0NvbnN0YW50KG5v
ZGVJbmRleCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIEpTVmFsdWUgdmFs
dWUgPSB2YWx1ZU9mSlNDb25zdGFudChub2RlSW5kZXgpOwotICAgICAgICBpZiAoIXZhbHVlLmlz
SW50MzIoKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgaW50MzJfdCBpbnRW
YWx1ZSA9IHZhbHVlLmFzSW50MzIoKTsKLSAgICAgICAgcmV0dXJuIGludFZhbHVlID49IC01ICYm
IGludFZhbHVlIDw9IDU7Ci0gICAgfQogICAgIC8vIENvbnZlbmllbmNlIG1ldGhvZHMgZm9yIGdl
dHRpbmcgY29uc3RhbnQgdmFsdWVzLgogICAgIEpTVmFsdWUgdmFsdWVPZkpTQ29uc3RhbnQoTm9k
ZUluZGV4IGluZGV4KQogICAgIHsKQEAgLTQwOCw3ICs0MTAsNyBAQCBwcml2YXRlOgogICAgICAg
ICBBU1NFUlQoaXNJbnQzMkNvbnN0YW50KG5vZGVJbmRleCkpOwogICAgICAgICByZXR1cm4gdmFs
dWVPZkpTQ29uc3RhbnQobm9kZUluZGV4KS5hc0ludDMyKCk7CiAgICAgfQotCisgICAgCiAgICAg
Ly8gVGhpcyBtZXRob2QgcmV0dXJucyBhIEpTQ29uc3RhbnQgd2l0aCB0aGUgdmFsdWUgJ3VuZGVm
aW5lZCcuCiAgICAgTm9kZUluZGV4IGNvbnN0YW50VW5kZWZpbmVkKCkKICAgICB7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCShyZXZpc2lvbiAxMDYzMzcpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzNyw2
ICsxMzcsMjYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gcHJlZGljdGlvbkZyb21WYWx1ZShu
b2RlLnZhbHVlT2ZKU0NvbnN0YW50KGNvZGVCbG9jaykpOwogICAgIH0KICAgICAKKyAgICBib29s
IGFkZFNob3VsZFNwZWN1bGF0ZUludGVnZXIoTm9kZSYgYWRkLCBDb2RlQmxvY2sqIGNvZGVCbG9j
aykKKyAgICB7CisgICAgICAgIEFTU0VSVChhZGQub3AgPT0gVmFsdWVBZGQgfHwgYWRkLm9wID09
IEFyaXRoQWRkIHx8IGFkZC5vcCA9PSBBcml0aFN1Yik7CisgICAgICAgIAorICAgICAgICBOb2Rl
JiBsZWZ0ID0gYXQoYWRkLmNoaWxkMSgpKTsKKyAgICAgICAgTm9kZSYgcmlnaHQgPSBhdChhZGQu
Y2hpbGQyKCkpOworICAgICAgICAKKyAgICAgICAgaWYgKGxlZnQuaGFzQ29uc3RhbnQoKSkKKyAg
ICAgICAgICAgIHJldHVybiBhZGRJbW1lZGlhdGVTaG91bGRTcGVjdWxhdGVJbnRlZ2VyKGNvZGVC
bG9jaywgYWRkLCByaWdodCwgbGVmdCk7CisgICAgICAgIGlmIChyaWdodC5oYXNDb25zdGFudCgp
KQorICAgICAgICAgICAgcmV0dXJuIGFkZEltbWVkaWF0ZVNob3VsZFNwZWN1bGF0ZUludGVnZXIo
Y29kZUJsb2NrLCBhZGQsIGxlZnQsIHJpZ2h0KTsKKyAgICAgICAgCisgICAgICAgIHJldHVybiBO
b2RlOjpzaG91bGRTcGVjdWxhdGVJbnRlZ2VyKGxlZnQsIHJpZ2h0KSAmJiBhZGQuY2FuU3BlY3Vs
YXRlSW50ZWdlcigpOworICAgIH0KKyAgICAKKyAgICBib29sIGFkZFNob3VsZFNwZWN1bGF0ZUlu
dGVnZXIoTm9kZUluZGV4IG5vZGVJbmRleCwgQ29kZUJsb2NrKiBjb2RlQmxvY2spCisgICAgewor
ICAgICAgICByZXR1cm4gYWRkU2hvdWxkU3BlY3VsYXRlSW50ZWdlcihhdChub2RlSW5kZXgpLCBj
b2RlQmxvY2spOworICAgIH0KKyAgICAKICAgICAvLyBIZWxwZXIgbWV0aG9kcyB0byBjaGVjayBu
b2RlcyBmb3IgY29uc3RhbnRzLgogICAgIGJvb2wgaXNDb25zdGFudChOb2RlSW5kZXggbm9kZUlu
ZGV4KQogICAgIHsKQEAgLTI1MSw2ICsyNzEsMjggQEAgcHVibGljOgogICAgIHVuc2lnbmVkIG1f
cGFyYW1ldGVyU2xvdHM7CiBwcml2YXRlOgogICAgIAorICAgIGJvb2wgYWRkSW1tZWRpYXRlU2hv
dWxkU3BlY3VsYXRlSW50ZWdlcihDb2RlQmxvY2sqIGNvZGVCbG9jaywgTm9kZSYgYWRkLCBOb2Rl
JiB2YXJpYWJsZSwgTm9kZSYgaW1tZWRpYXRlKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGltbWVk
aWF0ZS5oYXNDb25zdGFudCgpKTsKKyAgICAgICAgCisgICAgICAgIEpTVmFsdWUgaW1tZWRpYXRl
VmFsdWUgPSBpbW1lZGlhdGUudmFsdWVPZkpTQ29uc3RhbnQoY29kZUJsb2NrKTsKKyAgICAgICAg
aWYgKCFpbW1lZGlhdGVWYWx1ZS5pc051bWJlcigpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICAKKyAgICAgICAgaWYgKCF2YXJpYWJsZS5zaG91bGRTcGVjdWxhdGVJbnRlZ2Vy
KCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIAorICAgICAgICBpZiAoaW1t
ZWRpYXRlVmFsdWUuaXNJbnQzMigpKQorICAgICAgICAgICAgcmV0dXJuIGFkZC5jYW5TcGVjdWxh
dGVJbnRlZ2VyKCk7CisgICAgICAgIAorICAgICAgICBkb3VibGUgZG91YmxlSW1tZWRpYXRlID0g
aW1tZWRpYXRlVmFsdWUuYXNEb3VibGUoKTsKKyAgICAgICAgY29uc3QgZG91YmxlIHR3b1RvVGhl
NDggPSAyODE0NzQ5NzY3MTA2NTYuMDsKKyAgICAgICAgaWYgKGRvdWJsZUltbWVkaWF0ZSA8IC10
d29Ub1RoZTQ4IHx8IGRvdWJsZUltbWVkaWF0ZSA+IHR3b1RvVGhlNDgpCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIAorICAgICAgICByZXR1cm4gbm9kZUNhblRydW5jYXRlSW50
ZWdlcihhZGQuYXJpdGhOb2RlRmxhZ3MoKSk7CisgICAgfQorICAgIAogICAgIC8vIFdoZW4gYSBu
b2RlJ3MgcmVmQ291bnQgZ29lcyBmcm9tIDAgdG8gMSwgaXQgbXVzdCAobG9naWNhbGx5KSByZWN1
cnNpdmVseSByZWYgYWxsIG9mIGl0cyBjaGlsZHJlbiwgYW5kIHZpY2UgdmVyc2EuCiAgICAgdm9p
ZCByZWZDaGlsZHJlbihOb2RlSW5kZXgpOwogICAgIHZvaWQgZGVyZWZDaGlsZHJlbihOb2RlSW5k
ZXgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9wYWdhdG9yLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Byb3BhZ2F0b3IuY3Bw
CShyZXZpc2lvbiAxMDYzMzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Byb3Bh
Z2F0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zODIsNyArMzgyLDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgIAogICAgICAgICAgICAgaWYgKGxlZnQgJiYgcmlnaHQpIHsKICAgICAgICAgICAg
ICAgICBpZiAoaXNOdW1iZXJQcmVkaWN0aW9uKGxlZnQpICYmIGlzTnVtYmVyUHJlZGljdGlvbihy
aWdodCkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGlzSW50MzJQcmVkaWN0aW9uKG1lcmdl
UHJlZGljdGlvbnMobGVmdCwgcmlnaHQpKSAmJiBub2RlQ2FuU3BlY3VsYXRlSW50ZWdlcihub2Rl
LmFyaXRoTm9kZUZsYWdzKCkpKQorICAgICAgICAgICAgICAgICAgICBpZiAobV9ncmFwaC5hZGRT
aG91bGRTcGVjdWxhdGVJbnRlZ2VyKG5vZGUsIG1fY29kZUJsb2NrKSkKICAgICAgICAgICAgICAg
ICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFByZWRpY3RJbnQzMik7CiAgICAg
ICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0g
bWVyZ2VQcmVkaWN0aW9uKFByZWRpY3REb3VibGUpOwpAQCAtMzk2LDcgKzM5NiwxOSBAQCBwcml2
YXRlOgogICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBBcml0aEFkZDoKLSAg
ICAgICAgY2FzZSBBcml0aFN1YjoKKyAgICAgICAgY2FzZSBBcml0aFN1YjogeworICAgICAgICAg
ICAgUHJlZGljdGVkVHlwZSBsZWZ0ID0gbV9ncmFwaFtub2RlLmNoaWxkMSgpXS5wcmVkaWN0aW9u
KCk7CisgICAgICAgICAgICBQcmVkaWN0ZWRUeXBlIHJpZ2h0ID0gbV9ncmFwaFtub2RlLmNoaWxk
MigpXS5wcmVkaWN0aW9uKCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChsZWZ0ICYm
IHJpZ2h0KSB7CisgICAgICAgICAgICAgICAgaWYgKG1fZ3JhcGguYWRkU2hvdWxkU3BlY3VsYXRl
SW50ZWdlcihub2RlLCBtX2NvZGVCbG9jaykpCisgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQg
fD0gbWVyZ2VQcmVkaWN0aW9uKFByZWRpY3RJbnQzMik7CisgICAgICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihQcmVkaWN0RG91
YmxlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAg
ICAgICAgICAKICAgICAgICAgY2FzZSBBcml0aE11bDoKICAgICAgICAgY2FzZSBBcml0aE1pbjoK
ICAgICAgICAgY2FzZSBBcml0aE1heDoKQEAgLTcxMiw3ICs3MjQsMjMgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgIHN3aXRjaCAobm9kZS5vcCkgewogICAgICAgICAgICAgY2FzZSBWYWx1ZUFkZDoK
ICAgICAgICAgICAgIGNhc2UgQXJpdGhBZGQ6Ci0gICAgICAgICAgICBjYXNlIEFyaXRoU3ViOgor
ICAgICAgICAgICAgY2FzZSBBcml0aFN1YjogeworICAgICAgICAgICAgICAgIFByZWRpY3RlZFR5
cGUgbGVmdCA9IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0ucHJlZGljdGlvbigpOworICAgICAgICAg
ICAgICAgIFByZWRpY3RlZFR5cGUgcmlnaHQgPSBtX2dyYXBoW25vZGUuY2hpbGQyKCldLnByZWRp
Y3Rpb24oKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBWYXJpYWJsZUFjY2Vz
c0RhdGE6OkJhbGxvdCBiYWxsb3Q7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAg
aWYgKGlzTnVtYmVyUHJlZGljdGlvbihsZWZ0KSAmJiBpc051bWJlclByZWRpY3Rpb24ocmlnaHQp
CisgICAgICAgICAgICAgICAgICAgICYmICFtX2dyYXBoLmFkZFNob3VsZFNwZWN1bGF0ZUludGVn
ZXIobm9kZSwgbV9jb2RlQmxvY2spKQorICAgICAgICAgICAgICAgICAgICBiYWxsb3QgPSBWYXJp
YWJsZUFjY2Vzc0RhdGE6OlZvdGVEb3VibGU7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgICAgICAgICBiYWxsb3QgPSBWYXJpYWJsZUFjY2Vzc0RhdGE6OlZvdGVWYWx1ZTsKKyAg
ICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICB2b3RlKG5vZGUuY2hpbGQxKCksIGJhbGxv
dCk7CisgICAgICAgICAgICAgICAgdm90ZShub2RlLmNoaWxkMigpLCBiYWxsb3QpOworICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAogICAgICAg
ICAgICAgY2FzZSBBcml0aE11bDoKICAgICAgICAgICAgIGNhc2UgQXJpdGhNaW46CiAgICAgICAg
ICAgICBjYXNlIEFyaXRoTWF4OgpAQCAtODI5LDI3ICs4NTcsMjEgQEAgcHJpdmF0ZToKICNlbmRp
ZgogICAgICAgICAKICAgICAgICAgc3dpdGNoIChvcCkgewotICAgICAgICBjYXNlIFZhbHVlQWRk
OiB7Ci0gICAgICAgICAgICBpZiAoIW5vZGVDYW5TcGVjdWxhdGVJbnRlZ2VyKG5vZGUuYXJpdGhO
b2RlRmxhZ3MoKSkpIHsKLSAgICAgICAgICAgICAgICB0b0RvdWJsZShub2RlLmNoaWxkMSgpKTsK
LSAgICAgICAgICAgICAgICB0b0RvdWJsZShub2RlLmNoaWxkMigpKTsKLSAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAorICAgICAgICBjYXNlIFZhbHVl
QWRkOgorICAgICAgICBjYXNlIEFyaXRoQWRkOgorICAgICAgICBjYXNlIEFyaXRoU3ViOiB7CiAg
ICAgICAgICAgICBQcmVkaWN0ZWRUeXBlIGxlZnQgPSBtX2dyYXBoW25vZGUuY2hpbGQxKCldLnBy
ZWRpY3Rpb24oKTsKICAgICAgICAgICAgIFByZWRpY3RlZFR5cGUgcmlnaHQgPSBtX2dyYXBoW25v
ZGUuY2hpbGQyKCldLnByZWRpY3Rpb24oKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYg
KGxlZnQgJiYgcmlnaHQKICAgICAgICAgICAgICAgICAmJiBpc051bWJlclByZWRpY3Rpb24obGVm
dCkgJiYgaXNOdW1iZXJQcmVkaWN0aW9uKHJpZ2h0KQotICAgICAgICAgICAgICAgICYmICgobGVm
dCAmIFByZWRpY3REb3VibGUpIHx8IChyaWdodCAmIFByZWRpY3REb3VibGUpKSkgeworICAgICAg
ICAgICAgICAgICYmICFtX2dyYXBoLmFkZFNob3VsZFNwZWN1bGF0ZUludGVnZXIobm9kZSwgbV9j
b2RlQmxvY2spKSB7CiAgICAgICAgICAgICAgICAgdG9Eb3VibGUobm9kZS5jaGlsZDEoKSk7CiAg
ICAgICAgICAgICAgICAgdG9Eb3VibGUobm9kZS5jaGlsZDIoKSk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAgICAgCi0gICAgICAgIGNhc2Ug
QXJpdGhBZGQ6Ci0gICAgICAgIGNhc2UgQXJpdGhTdWI6CiAgICAgICAgIGNhc2UgQXJpdGhNdWw6
CiAgICAgICAgIGNhc2UgQXJpdGhNaW46CiAgICAgICAgIGNhc2UgQXJpdGhNYXg6CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82
NC5jcHAJKHJldmlzaW9uIDEwNjMzNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4ODYsMTMzICsxODg2
LDE3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICB9CiAK
ICAgICBjYXNlIFZhbHVlQWRkOgotICAgIGNhc2UgQXJpdGhBZGQ6IHsKLSAgICAgICAgaWYgKE5v
ZGU6OnNob3VsZFNwZWN1bGF0ZUludGVnZXIoYXQobm9kZS5jaGlsZDEoKSksIGF0KG5vZGUuY2hp
bGQyKCkpKSAmJiBub2RlLmNhblNwZWN1bGF0ZUludGVnZXIoKSkgewotICAgICAgICAgICAgaWYg
KGlzSW50MzJDb25zdGFudChub2RlLmNoaWxkMSgpKSkgewotICAgICAgICAgICAgICAgIGludDMy
X3QgaW1tMSA9IHZhbHVlT2ZJbnQzMkNvbnN0YW50KG5vZGUuY2hpbGQxKCkpOwotICAgICAgICAg
ICAgICAgIFNwZWN1bGF0ZUludGVnZXJPcGVyYW5kIG9wMih0aGlzLCBub2RlLmNoaWxkMigpKTsK
LSAgICAgICAgICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwotCi0gICAgICAgICAg
ICAgICAgaWYgKG5vZGVDYW5UcnVuY2F0ZUludGVnZXIobm9kZS5hcml0aE5vZGVGbGFncygpKSkg
ewotICAgICAgICAgICAgICAgICAgICBtX2ppdC5tb3ZlKG9wMi5ncHIoKSwgcmVzdWx0Lmdwcigp
KTsKLSAgICAgICAgICAgICAgICAgICAgbV9qaXQuYWRkMzIoSW1tMzIoaW1tMSksIHJlc3VsdC5n
cHIoKSk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHNwZWN1
bGF0aW9uQ2hlY2soT3ZlcmZsb3csIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNo
QWRkMzIoTWFjcm9Bc3NlbWJsZXI6Ok92ZXJmbG93LCBvcDIuZ3ByKCksIEltbTMyKGltbTEpLCBy
ZXN1bHQuZ3ByKCkpKTsKLQotICAgICAgICAgICAgICAgIGludGVnZXJSZXN1bHQocmVzdWx0Lmdw
cigpLCBtX2NvbXBpbGVJbmRleCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAoaXNJbnQzMkNvbnN0YW50KG5v
ZGUuY2hpbGQyKCkpKSB7Ci0gICAgICAgICAgICAgICAgU3BlY3VsYXRlSW50ZWdlck9wZXJhbmQg
b3AxKHRoaXMsIG5vZGUuY2hpbGQxKCkpOwotICAgICAgICAgICAgICAgIGludDMyX3QgaW1tMiA9
IHZhbHVlT2ZJbnQzMkNvbnN0YW50KG5vZGUuY2hpbGQyKCkpOwotICAgICAgICAgICAgICAgIEdQ
UlRlbXBvcmFyeSByZXN1bHQodGhpcyk7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAg
ICAgaWYgKG5vZGVDYW5UcnVuY2F0ZUludGVnZXIobm9kZS5hcml0aE5vZGVGbGFncygpKSkgewot
ICAgICAgICAgICAgICAgICAgICBtX2ppdC5tb3ZlKG9wMS5ncHIoKSwgcmVzdWx0LmdwcigpKTsK
LSAgICAgICAgICAgICAgICAgICAgbV9qaXQuYWRkMzIoSW1tMzIoaW1tMiksIHJlc3VsdC5ncHIo
KSk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHNwZWN1bGF0
aW9uQ2hlY2soT3ZlcmZsb3csIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoQWRk
MzIoTWFjcm9Bc3NlbWJsZXI6Ok92ZXJmbG93LCBvcDEuZ3ByKCksIEltbTMyKGltbTIpLCByZXN1
bHQuZ3ByKCkpKTsKLQotICAgICAgICAgICAgICAgIGludGVnZXJSZXN1bHQocmVzdWx0Lmdwcigp
LCBtX2NvbXBpbGVJbmRleCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICBTcGVjdWxhdGVJbnRlZ2VyT3BlcmFuZCBv
cDEodGhpcywgbm9kZS5jaGlsZDEoKSk7Ci0gICAgICAgICAgICBTcGVjdWxhdGVJbnRlZ2VyT3Bl
cmFuZCBvcDIodGhpcywgbm9kZS5jaGlsZDIoKSk7Ci0gICAgICAgICAgICBHUFJUZW1wb3Jhcnkg
cmVzdWx0KHRoaXMsIG9wMSwgb3AyKTsKLQotICAgICAgICAgICAgR1BSUmVnIGdwcjEgPSBvcDEu
Z3ByKCk7Ci0gICAgICAgICAgICBHUFJSZWcgZ3ByMiA9IG9wMi5ncHIoKTsKLSAgICAgICAgICAg
IEdQUlJlZyBncHJSZXN1bHQgPSByZXN1bHQuZ3ByKCk7Ci0KLSAgICAgICAgICAgIGlmIChub2Rl
Q2FuVHJ1bmNhdGVJbnRlZ2VyKG5vZGUuYXJpdGhOb2RlRmxhZ3MoKSkpIHsKLSAgICAgICAgICAg
ICAgICBpZiAoZ3ByMSA9PSBncHJSZXN1bHQpCi0gICAgICAgICAgICAgICAgICAgIG1faml0LmFk
ZDMyKGdwcjIsIGdwclJlc3VsdCk7Ci0gICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAg
ICAgICAgICAgIG1faml0Lm1vdmUoZ3ByMiwgZ3ByUmVzdWx0KTsKLSAgICAgICAgICAgICAgICAg
ICAgbV9qaXQuYWRkMzIoZ3ByMSwgZ3ByUmVzdWx0KTsKLSAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGNo
ZWNrID0gbV9qaXQuYnJhbmNoQWRkMzIoTWFjcm9Bc3NlbWJsZXI6Ok92ZXJmbG93LCBncHIxLCBn
cHIyLCBncHJSZXN1bHQpOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGlmIChn
cHIxID09IGdwclJlc3VsdCkKLSAgICAgICAgICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhP
dmVyZmxvdywgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBjaGVjaywgU3BlY3VsYXRpb25SZWNvdmVy
eShTcGVjdWxhdGl2ZUFkZCwgZ3ByUmVzdWx0LCBncHIyKSk7Ci0gICAgICAgICAgICAgICAgZWxz
ZSBpZiAoZ3ByMiA9PSBncHJSZXN1bHQpCi0gICAgICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9u
Q2hlY2soT3ZlcmZsb3csIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgY2hlY2ssIFNwZWN1bGF0aW9u
UmVjb3ZlcnkoU3BlY3VsYXRpdmVBZGQsIGdwclJlc3VsdCwgZ3ByMSkpOwotICAgICAgICAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhPdmVyZmxvdywg
SlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBjaGVjayk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAg
ICAgIGludGVnZXJSZXN1bHQoZ3ByUmVzdWx0LCBtX2NvbXBpbGVJbmRleCk7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgaWYgKE5vZGU6OnNob3VsZFNw
ZWN1bGF0ZU51bWJlcihhdChub2RlLmNoaWxkMSgpKSwgYXQobm9kZS5jaGlsZDIoKSkpKSB7Ci0g
ICAgICAgICAgICBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIG9wMSh0aGlzLCBub2RlLmNoaWxkMSgp
KTsKLSAgICAgICAgICAgIFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQgb3AyKHRoaXMsIG5vZGUuY2hp
bGQyKCkpOwotICAgICAgICAgICAgRlBSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBvcDEsIG9wMik7
Ci0KLSAgICAgICAgICAgIEZQUlJlZyByZWcxID0gb3AxLmZwcigpOwotICAgICAgICAgICAgRlBS
UmVnIHJlZzIgPSBvcDIuZnByKCk7Ci0gICAgICAgICAgICBtX2ppdC5hZGREb3VibGUocmVnMSwg
cmVnMiwgcmVzdWx0LmZwcigpKTsKLQotICAgICAgICAgICAgZG91YmxlUmVzdWx0KHJlc3VsdC5m
cHIoKSwgbV9jb21waWxlSW5kZXgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLQot
ICAgICAgICBBU1NFUlQob3AgPT0gVmFsdWVBZGQpOwotICAgICAgICBjb21waWxlVmFsdWVBZGQo
bm9kZSk7CisgICAgY2FzZSBBcml0aEFkZDoKKyAgICAgICAgY29tcGlsZUFkZChub2RlKTsKICAg
ICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgY2FzZSBBcml0aFN1YjogewotICAgICAgICBpZiAo
Tm9kZTo6c2hvdWxkU3BlY3VsYXRlSW50ZWdlcihhdChub2RlLmNoaWxkMSgpKSwgYXQobm9kZS5j
aGlsZDIoKSkpICYmIG5vZGUuY2FuU3BlY3VsYXRlSW50ZWdlcigpKSB7Ci0gICAgICAgICAgICBp
ZiAoaXNJbnQzMkNvbnN0YW50KG5vZGUuY2hpbGQyKCkpKSB7Ci0gICAgICAgICAgICAgICAgU3Bl
Y3VsYXRlSW50ZWdlck9wZXJhbmQgb3AxKHRoaXMsIG5vZGUuY2hpbGQxKCkpOwotICAgICAgICAg
ICAgICAgIGludDMyX3QgaW1tMiA9IHZhbHVlT2ZJbnQzMkNvbnN0YW50KG5vZGUuY2hpbGQyKCkp
OwotICAgICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7Ci0KLSAgICAgICAg
ICAgICAgICBpZiAobm9kZUNhblRydW5jYXRlSW50ZWdlcihub2RlLmFyaXRoTm9kZUZsYWdzKCkp
KSB7Ci0gICAgICAgICAgICAgICAgICAgIG1faml0Lm1vdmUob3AxLmdwcigpLCByZXN1bHQuZ3By
KCkpOwotICAgICAgICAgICAgICAgICAgICBtX2ppdC5zdWIzMihJbW0zMihpbW0yKSwgcmVzdWx0
LmdwcigpKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgc3Bl
Y3VsYXRpb25DaGVjayhPdmVyZmxvdywgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFu
Y2hTdWIzMihNYWNyb0Fzc2VtYmxlcjo6T3ZlcmZsb3csIG9wMS5ncHIoKSwgSW1tMzIoaW1tMiks
IHJlc3VsdC5ncHIoKSkpOwotCi0gICAgICAgICAgICAgICAgaW50ZWdlclJlc3VsdChyZXN1bHQu
Z3ByKCksIG1fY29tcGlsZUluZGV4KTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgIFNwZWN1bGF0ZUludGVnZXJPcGVy
YW5kIG9wMSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKLSAgICAgICAgICAgIFNwZWN1bGF0ZUludGVn
ZXJPcGVyYW5kIG9wMih0aGlzLCBub2RlLmNoaWxkMigpKTsKLSAgICAgICAgICAgIEdQUlRlbXBv
cmFyeSByZXN1bHQodGhpcyk7CiAKLSAgICAgICAgICAgIGlmIChub2RlQ2FuVHJ1bmNhdGVJbnRl
Z2VyKG5vZGUuYXJpdGhOb2RlRmxhZ3MoKSkpIHsKLSAgICAgICAgICAgICAgICBtX2ppdC5tb3Zl
KG9wMS5ncHIoKSwgcmVzdWx0LmdwcigpKTsKLSAgICAgICAgICAgICAgICBtX2ppdC5zdWIzMihv
cDIuZ3ByKCksIHJlc3VsdC5ncHIoKSk7Ci0gICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAg
ICAgICBzcGVjdWxhdGlvbkNoZWNrKE92ZXJmbG93LCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1f
aml0LmJyYW5jaFN1YjMyKE1hY3JvQXNzZW1ibGVyOjpPdmVyZmxvdywgb3AxLmdwcigpLCBvcDIu
Z3ByKCksIHJlc3VsdC5ncHIoKSkpOwotCi0gICAgICAgICAgICBpbnRlZ2VyUmVzdWx0KHJlc3Vs
dC5ncHIoKSwgbV9jb21waWxlSW5kZXgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0K
LSAgICAgICAgCi0gICAgICAgIFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQgb3AxKHRoaXMsIG5vZGUu
Y2hpbGQxKCkpOwotICAgICAgICBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIG9wMih0aGlzLCBub2Rl
LmNoaWxkMigpKTsKLSAgICAgICAgRlBSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBvcDEpOwotCi0g
ICAgICAgIEZQUlJlZyByZWcxID0gb3AxLmZwcigpOwotICAgICAgICBGUFJSZWcgcmVnMiA9IG9w
Mi5mcHIoKTsKLSAgICAgICAgbV9qaXQuc3ViRG91YmxlKHJlZzEsIHJlZzIsIHJlc3VsdC5mcHIo
KSk7Ci0KLSAgICAgICAgZG91YmxlUmVzdWx0KHJlc3VsdC5mcHIoKSwgbV9jb21waWxlSW5kZXgp
OworICAgIGNhc2UgQXJpdGhTdWI6CisgICAgICAgIGNvbXBpbGVBcml0aFN1Yihub2RlKTsKICAg
ICAgICAgYnJlYWs7Ci0gICAgfQogCi0gICAgY2FzZSBBcml0aE11bDogeworICAgIGNhc2UgQXJp
dGhNdWw6CiAgICAgICAgIGNvbXBpbGVBcml0aE11bChub2RlKTsKICAgICAgICAgYnJlYWs7Ci0g
ICAgfQogCiAgICAgY2FzZSBBcml0aERpdjogewogICAgICAgICBpZiAoTm9kZTo6c2hvdWxkU3Bl
Y3VsYXRlSW50ZWdlcihhdChub2RlLmNoaWxkMSgpKSwgYXQobm9kZS5jaGlsZDIoKSkpICYmIG5v
ZGUuY2FuU3BlY3VsYXRlSW50ZWdlcigpKSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHJldmlzaW9uIDEwNjMzNykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE5NjUsMTMzICsxOTY1LDE3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGUoTm9kZSYgbm9kZSkKICAgICB9CiAKICAgICBjYXNlIFZhbHVlQWRkOgotICAgIGNhc2Ug
QXJpdGhBZGQ6IHsKLSAgICAgICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZUludGVnZXIoYXQo
bm9kZS5jaGlsZDEoKSksIGF0KG5vZGUuY2hpbGQyKCkpKSAmJiBub2RlLmNhblNwZWN1bGF0ZUlu
dGVnZXIoKSkgewotICAgICAgICAgICAgaWYgKGlzSW50MzJDb25zdGFudChub2RlLmNoaWxkMSgp
KSkgewotICAgICAgICAgICAgICAgIGludDMyX3QgaW1tMSA9IHZhbHVlT2ZJbnQzMkNvbnN0YW50
KG5vZGUuY2hpbGQxKCkpOwotICAgICAgICAgICAgICAgIFNwZWN1bGF0ZUludGVnZXJPcGVyYW5k
IG9wMih0aGlzLCBub2RlLmNoaWxkMigpKTsKLSAgICAgICAgICAgICAgICBHUFJUZW1wb3Jhcnkg
cmVzdWx0KHRoaXMpOwotCi0gICAgICAgICAgICAgICAgaWYgKG5vZGVDYW5UcnVuY2F0ZUludGVn
ZXIobm9kZS5hcml0aE5vZGVGbGFncygpKSkgewotICAgICAgICAgICAgICAgICAgICBtX2ppdC5t
b3ZlKG9wMi5ncHIoKSwgcmVzdWx0LmdwcigpKTsKLSAgICAgICAgICAgICAgICAgICAgbV9qaXQu
YWRkMzIoSW1tMzIoaW1tMSksIHJlc3VsdC5ncHIoKSk7Ci0gICAgICAgICAgICAgICAgfSBlbHNl
Ci0gICAgICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soT3ZlcmZsb3csIEpTVmFsdWVS
ZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoQWRkMzIoTWFjcm9Bc3NlbWJsZXI6Ok92ZXJmbG93
LCBvcDIuZ3ByKCksIEltbTMyKGltbTEpLCByZXN1bHQuZ3ByKCkpKTsKLQotICAgICAgICAgICAg
ICAgIGludGVnZXJSZXN1bHQocmVzdWx0LmdwcigpLCBtX2NvbXBpbGVJbmRleCk7Ci0gICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgCi0gICAgICAg
ICAgICBpZiAoaXNJbnQzMkNvbnN0YW50KG5vZGUuY2hpbGQyKCkpKSB7Ci0gICAgICAgICAgICAg
ICAgU3BlY3VsYXRlSW50ZWdlck9wZXJhbmQgb3AxKHRoaXMsIG5vZGUuY2hpbGQxKCkpOwotICAg
ICAgICAgICAgICAgIGludDMyX3QgaW1tMiA9IHZhbHVlT2ZJbnQzMkNvbnN0YW50KG5vZGUuY2hp
bGQyKCkpOwotICAgICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7Ci0gICAg
ICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgaWYgKG5vZGVDYW5UcnVuY2F0ZUludGVnZXIo
bm9kZS5hcml0aE5vZGVGbGFncygpKSkgewotICAgICAgICAgICAgICAgICAgICBtX2ppdC5tb3Zl
KG9wMS5ncHIoKSwgcmVzdWx0LmdwcigpKTsKLSAgICAgICAgICAgICAgICAgICAgbV9qaXQuYWRk
MzIoSW1tMzIoaW1tMiksIHJlc3VsdC5ncHIoKSk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlCi0g
ICAgICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soT3ZlcmZsb3csIEpTVmFsdWVSZWdz
KCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoQWRkMzIoTWFjcm9Bc3NlbWJsZXI6Ok92ZXJmbG93LCBv
cDEuZ3ByKCksIEltbTMyKGltbTIpLCByZXN1bHQuZ3ByKCkpKTsKLQotICAgICAgICAgICAgICAg
IGludGVnZXJSZXN1bHQocmVzdWx0LmdwcigpLCBtX2NvbXBpbGVJbmRleCk7Ci0gICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAg
ICBTcGVjdWxhdGVJbnRlZ2VyT3BlcmFuZCBvcDEodGhpcywgbm9kZS5jaGlsZDEoKSk7Ci0gICAg
ICAgICAgICBTcGVjdWxhdGVJbnRlZ2VyT3BlcmFuZCBvcDIodGhpcywgbm9kZS5jaGlsZDIoKSk7
Ci0gICAgICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIG9wMSwgb3AyKTsKLQotICAg
ICAgICAgICAgR1BSUmVnIGdwcjEgPSBvcDEuZ3ByKCk7Ci0gICAgICAgICAgICBHUFJSZWcgZ3By
MiA9IG9wMi5ncHIoKTsKLSAgICAgICAgICAgIEdQUlJlZyBncHJSZXN1bHQgPSByZXN1bHQuZ3By
KCk7Ci0KLSAgICAgICAgICAgIGlmIChub2RlQ2FuVHJ1bmNhdGVJbnRlZ2VyKG5vZGUuYXJpdGhO
b2RlRmxhZ3MoKSkpIHsKLSAgICAgICAgICAgICAgICBpZiAoZ3ByMSA9PSBncHJSZXN1bHQpCi0g
ICAgICAgICAgICAgICAgICAgIG1faml0LmFkZDMyKGdwcjIsIGdwclJlc3VsdCk7Ci0gICAgICAg
ICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIG1faml0Lm1vdmUoZ3ByMiwgZ3By
UmVzdWx0KTsKLSAgICAgICAgICAgICAgICAgICAgbV9qaXQuYWRkMzIoZ3ByMSwgZ3ByUmVzdWx0
KTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGNoZWNrID0gbV9qaXQuYnJhbmNoQWRkMzIoTWFjcm9B
c3NlbWJsZXI6Ok92ZXJmbG93LCBncHIxLCBncHIyLCBncHJSZXN1bHQpOwotICAgICAgICAgICAg
ICAgIAotICAgICAgICAgICAgICAgIGlmIChncHIxID09IGdwclJlc3VsdCkKLSAgICAgICAgICAg
ICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhPdmVyZmxvdywgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2Rl
LCBjaGVjaywgU3BlY3VsYXRpb25SZWNvdmVyeShTcGVjdWxhdGl2ZUFkZCwgZ3ByUmVzdWx0LCBn
cHIyKSk7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoZ3ByMiA9PSBncHJSZXN1bHQpCi0gICAg
ICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soT3ZlcmZsb3csIEpTVmFsdWVSZWdzKCks
IE5vTm9kZSwgY2hlY2ssIFNwZWN1bGF0aW9uUmVjb3ZlcnkoU3BlY3VsYXRpdmVBZGQsIGdwclJl
c3VsdCwgZ3ByMSkpOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAg
c3BlY3VsYXRpb25DaGVjayhPdmVyZmxvdywgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBjaGVjayk7
Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGludGVnZXJSZXN1bHQoZ3ByUmVzdWx0LCBt
X2NvbXBpbGVJbmRleCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICAK
LSAgICAgICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZU51bWJlcihhdChub2RlLmNoaWxkMSgp
KSwgYXQobm9kZS5jaGlsZDIoKSkpKSB7Ci0gICAgICAgICAgICBTcGVjdWxhdGVEb3VibGVPcGVy
YW5kIG9wMSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKLSAgICAgICAgICAgIFNwZWN1bGF0ZURvdWJs
ZU9wZXJhbmQgb3AyKHRoaXMsIG5vZGUuY2hpbGQyKCkpOwotICAgICAgICAgICAgRlBSVGVtcG9y
YXJ5IHJlc3VsdCh0aGlzLCBvcDEsIG9wMik7Ci0KLSAgICAgICAgICAgIEZQUlJlZyByZWcxID0g
b3AxLmZwcigpOwotICAgICAgICAgICAgRlBSUmVnIHJlZzIgPSBvcDIuZnByKCk7Ci0gICAgICAg
ICAgICBtX2ppdC5hZGREb3VibGUocmVnMSwgcmVnMiwgcmVzdWx0LmZwcigpKTsKLQotICAgICAg
ICAgICAgZG91YmxlUmVzdWx0KHJlc3VsdC5mcHIoKSwgbV9jb21waWxlSW5kZXgpOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLQotICAgICAgICBBU1NFUlQob3AgPT0gVmFsdWVBZGQp
OwotICAgICAgICBjb21waWxlVmFsdWVBZGQobm9kZSk7CisgICAgY2FzZSBBcml0aEFkZDoKKyAg
ICAgICAgY29tcGlsZUFkZChub2RlKTsKICAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgY2Fz
ZSBBcml0aFN1YjogewotICAgICAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlSW50ZWdlcihh
dChub2RlLmNoaWxkMSgpKSwgYXQobm9kZS5jaGlsZDIoKSkpICYmIG5vZGUuY2FuU3BlY3VsYXRl
SW50ZWdlcigpKSB7Ci0gICAgICAgICAgICBpZiAoaXNJbnQzMkNvbnN0YW50KG5vZGUuY2hpbGQy
KCkpKSB7Ci0gICAgICAgICAgICAgICAgU3BlY3VsYXRlSW50ZWdlck9wZXJhbmQgb3AxKHRoaXMs
IG5vZGUuY2hpbGQxKCkpOwotICAgICAgICAgICAgICAgIGludDMyX3QgaW1tMiA9IHZhbHVlT2ZJ
bnQzMkNvbnN0YW50KG5vZGUuY2hpbGQyKCkpOwotICAgICAgICAgICAgICAgIEdQUlRlbXBvcmFy
eSByZXN1bHQodGhpcyk7Ci0KLSAgICAgICAgICAgICAgICBpZiAobm9kZUNhblRydW5jYXRlSW50
ZWdlcihub2RlLmFyaXRoTm9kZUZsYWdzKCkpKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1faml0
Lm1vdmUob3AxLmdwcigpLCByZXN1bHQuZ3ByKCkpOwotICAgICAgICAgICAgICAgICAgICBtX2pp
dC5zdWIzMihJbW0zMihpbW0yKSwgcmVzdWx0LmdwcigpKTsKLSAgICAgICAgICAgICAgICB9IGVs
c2UKLSAgICAgICAgICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhPdmVyZmxvdywgSlNWYWx1
ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hTdWIzMihNYWNyb0Fzc2VtYmxlcjo6T3ZlcmZs
b3csIG9wMS5ncHIoKSwgSW1tMzIoaW1tMiksIHJlc3VsdC5ncHIoKSkpOwogCi0gICAgICAgICAg
ICAgICAgaW50ZWdlclJlc3VsdChyZXN1bHQuZ3ByKCksIG1fY29tcGlsZUluZGV4KTsKLSAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAKLSAgICAg
ICAgICAgIFNwZWN1bGF0ZUludGVnZXJPcGVyYW5kIG9wMSh0aGlzLCBub2RlLmNoaWxkMSgpKTsK
LSAgICAgICAgICAgIFNwZWN1bGF0ZUludGVnZXJPcGVyYW5kIG9wMih0aGlzLCBub2RlLmNoaWxk
MigpKTsKLSAgICAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7Ci0KLSAgICAgICAg
ICAgIGlmIChub2RlQ2FuVHJ1bmNhdGVJbnRlZ2VyKG5vZGUuYXJpdGhOb2RlRmxhZ3MoKSkpIHsK
LSAgICAgICAgICAgICAgICBtX2ppdC5tb3ZlKG9wMS5ncHIoKSwgcmVzdWx0LmdwcigpKTsKLSAg
ICAgICAgICAgICAgICBtX2ppdC5zdWIzMihvcDIuZ3ByKCksIHJlc3VsdC5ncHIoKSk7Ci0gICAg
ICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKE92ZXJmbG93
LCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaFN1YjMyKE1hY3JvQXNzZW1ibGVy
OjpPdmVyZmxvdywgb3AxLmdwcigpLCBvcDIuZ3ByKCksIHJlc3VsdC5ncHIoKSkpOwotCi0gICAg
ICAgICAgICBpbnRlZ2VyUmVzdWx0KHJlc3VsdC5ncHIoKSwgbV9jb21waWxlSW5kZXgpOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIFNwZWN1bGF0ZURv
dWJsZU9wZXJhbmQgb3AxKHRoaXMsIG5vZGUuY2hpbGQxKCkpOwotICAgICAgICBTcGVjdWxhdGVE
b3VibGVPcGVyYW5kIG9wMih0aGlzLCBub2RlLmNoaWxkMigpKTsKLSAgICAgICAgRlBSVGVtcG9y
YXJ5IHJlc3VsdCh0aGlzLCBvcDEpOwotCi0gICAgICAgIEZQUlJlZyByZWcxID0gb3AxLmZwcigp
OwotICAgICAgICBGUFJSZWcgcmVnMiA9IG9wMi5mcHIoKTsKLSAgICAgICAgbV9qaXQuc3ViRG91
YmxlKHJlZzEsIHJlZzIsIHJlc3VsdC5mcHIoKSk7Ci0KLSAgICAgICAgZG91YmxlUmVzdWx0KHJl
c3VsdC5mcHIoKSwgbV9jb21waWxlSW5kZXgpOworICAgIGNhc2UgQXJpdGhTdWI6CisgICAgICAg
IGNvbXBpbGVBcml0aFN1Yihub2RlKTsKICAgICAgICAgYnJlYWs7Ci0gICAgfQogCi0gICAgY2Fz
ZSBBcml0aE11bDogeworICAgIGNhc2UgQXJpdGhNdWw6CiAgICAgICAgIGNvbXBpbGVBcml0aE11
bChub2RlKTsKICAgICAgICAgYnJlYWs7Ci0gICAgfQogCiAgICAgY2FzZSBBcml0aERpdjogewog
ICAgICAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlSW50ZWdlcihhdChub2RlLmNoaWxkMSgp
KSwgYXQobm9kZS5jaGlsZDIoKSkpICYmIG5vZGUuY2FuU3BlY3VsYXRlSW50ZWdlcigpKSB7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNw
cAkocmV2aXNpb24gMTA2MzM3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxOTYsNiArMjE5NiwxNDQgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVNvZnRNb2R1bG8oTgogI2VuZGlmCiB9CiAKK3ZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBZGQoTm9kZSYgbm9kZSkKK3sKKyAgICBpZiAobV9qaXQu
Z3JhcGgoKS5hZGRTaG91bGRTcGVjdWxhdGVJbnRlZ2VyKG5vZGUsIG1faml0LmNvZGVCbG9jaygp
KSkgeworICAgICAgICBpZiAoaXNOdW1iZXJDb25zdGFudChub2RlLmNoaWxkMSgpKSkgeworICAg
ICAgICAgICAgaW50MzJfdCBpbW0xID0gdmFsdWVPZk51bWJlckNvbnN0YW50QXNJbnQzMihub2Rl
LmNoaWxkMSgpKTsKKyAgICAgICAgICAgIFNwZWN1bGF0ZUludGVnZXJPcGVyYW5kIG9wMih0aGlz
LCBub2RlLmNoaWxkMigpKTsKKyAgICAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7
CisKKyAgICAgICAgICAgIGlmIChub2RlQ2FuVHJ1bmNhdGVJbnRlZ2VyKG5vZGUuYXJpdGhOb2Rl
RmxhZ3MoKSkpIHsKKyAgICAgICAgICAgICAgICBtX2ppdC5tb3ZlKG9wMi5ncHIoKSwgcmVzdWx0
LmdwcigpKTsKKyAgICAgICAgICAgICAgICBtX2ppdC5hZGQzMihJbW0zMihpbW0xKSwgcmVzdWx0
LmdwcigpKTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9u
Q2hlY2soT3ZlcmZsb3csIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoQWRkMzIo
TWFjcm9Bc3NlbWJsZXI6Ok92ZXJmbG93LCBvcDIuZ3ByKCksIEltbTMyKGltbTEpLCByZXN1bHQu
Z3ByKCkpKTsKKworICAgICAgICAgICAgaW50ZWdlclJlc3VsdChyZXN1bHQuZ3ByKCksIG1fY29t
cGlsZUluZGV4KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAgICAg
ICAgIAorICAgICAgICBpZiAoaXNOdW1iZXJDb25zdGFudChub2RlLmNoaWxkMigpKSkgeworICAg
ICAgICAgICAgU3BlY3VsYXRlSW50ZWdlck9wZXJhbmQgb3AxKHRoaXMsIG5vZGUuY2hpbGQxKCkp
OworICAgICAgICAgICAgaW50MzJfdCBpbW0yID0gdmFsdWVPZk51bWJlckNvbnN0YW50QXNJbnQz
Mihub2RlLmNoaWxkMigpKTsKKyAgICAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7
CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAobm9kZUNhblRydW5jYXRlSW50ZWdl
cihub2RlLmFyaXRoTm9kZUZsYWdzKCkpKSB7CisgICAgICAgICAgICAgICAgbV9qaXQubW92ZShv
cDEuZ3ByKCksIHJlc3VsdC5ncHIoKSk7CisgICAgICAgICAgICAgICAgbV9qaXQuYWRkMzIoSW1t
MzIoaW1tMiksIHJlc3VsdC5ncHIoKSk7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAg
ICAgICBzcGVjdWxhdGlvbkNoZWNrKE92ZXJmbG93LCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1f
aml0LmJyYW5jaEFkZDMyKE1hY3JvQXNzZW1ibGVyOjpPdmVyZmxvdywgb3AxLmdwcigpLCBJbW0z
MihpbW0yKSwgcmVzdWx0LmdwcigpKSk7CisKKyAgICAgICAgICAgIGludGVnZXJSZXN1bHQocmVz
dWx0LmdwcigpLCBtX2NvbXBpbGVJbmRleCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgU3BlY3VsYXRlSW50ZWdlck9wZXJhbmQgb3Ax
KHRoaXMsIG5vZGUuY2hpbGQxKCkpOworICAgICAgICBTcGVjdWxhdGVJbnRlZ2VyT3BlcmFuZCBv
cDIodGhpcywgbm9kZS5jaGlsZDIoKSk7CisgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhp
cywgb3AxLCBvcDIpOworCisgICAgICAgIEdQUlJlZyBncHIxID0gb3AxLmdwcigpOworICAgICAg
ICBHUFJSZWcgZ3ByMiA9IG9wMi5ncHIoKTsKKyAgICAgICAgR1BSUmVnIGdwclJlc3VsdCA9IHJl
c3VsdC5ncHIoKTsKKworICAgICAgICBpZiAobm9kZUNhblRydW5jYXRlSW50ZWdlcihub2RlLmFy
aXRoTm9kZUZsYWdzKCkpKSB7CisgICAgICAgICAgICBpZiAoZ3ByMSA9PSBncHJSZXN1bHQpCisg
ICAgICAgICAgICAgICAgbV9qaXQuYWRkMzIoZ3ByMiwgZ3ByUmVzdWx0KTsKKyAgICAgICAgICAg
IGVsc2UgeworICAgICAgICAgICAgICAgIG1faml0Lm1vdmUoZ3ByMiwgZ3ByUmVzdWx0KTsKKyAg
ICAgICAgICAgICAgICBtX2ppdC5hZGQzMihncHIxLCBncHJSZXN1bHQpOworICAgICAgICAgICAg
fQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgY2hl
Y2sgPSBtX2ppdC5icmFuY2hBZGQzMihNYWNyb0Fzc2VtYmxlcjo6T3ZlcmZsb3csIGdwcjEsIGdw
cjIsIGdwclJlc3VsdCk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoZ3ByMSA9
PSBncHJSZXN1bHQpCisgICAgICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhPdmVyZmxvdywg
SlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBjaGVjaywgU3BlY3VsYXRpb25SZWNvdmVyeShTcGVjdWxh
dGl2ZUFkZCwgZ3ByUmVzdWx0LCBncHIyKSk7CisgICAgICAgICAgICBlbHNlIGlmIChncHIyID09
IGdwclJlc3VsdCkKKyAgICAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKE92ZXJmbG93LCBK
U1ZhbHVlUmVncygpLCBOb05vZGUsIGNoZWNrLCBTcGVjdWxhdGlvblJlY292ZXJ5KFNwZWN1bGF0
aXZlQWRkLCBncHJSZXN1bHQsIGdwcjEpKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICBzcGVjdWxhdGlvbkNoZWNrKE92ZXJmbG93LCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIGNo
ZWNrKTsKKyAgICAgICAgfQorCisgICAgICAgIGludGVnZXJSZXN1bHQoZ3ByUmVzdWx0LCBtX2Nv
bXBpbGVJbmRleCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgICAgIAorICAgIGlmIChO
b2RlOjpzaG91bGRTcGVjdWxhdGVOdW1iZXIoYXQobm9kZS5jaGlsZDEoKSksIGF0KG5vZGUuY2hp
bGQyKCkpKSkgeworICAgICAgICBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIG9wMSh0aGlzLCBub2Rl
LmNoaWxkMSgpKTsKKyAgICAgICAgU3BlY3VsYXRlRG91YmxlT3BlcmFuZCBvcDIodGhpcywgbm9k
ZS5jaGlsZDIoKSk7CisgICAgICAgIEZQUlRlbXBvcmFyeSByZXN1bHQodGhpcywgb3AxLCBvcDIp
OworCisgICAgICAgIEZQUlJlZyByZWcxID0gb3AxLmZwcigpOworICAgICAgICBGUFJSZWcgcmVn
MiA9IG9wMi5mcHIoKTsKKyAgICAgICAgbV9qaXQuYWRkRG91YmxlKHJlZzEsIHJlZzIsIHJlc3Vs
dC5mcHIoKSk7CisKKyAgICAgICAgZG91YmxlUmVzdWx0KHJlc3VsdC5mcHIoKSwgbV9jb21waWxl
SW5kZXgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQVNTRVJUKG5vZGUub3AgPT0g
VmFsdWVBZGQpOworICAgIGNvbXBpbGVWYWx1ZUFkZChub2RlKTsKK30KKwordm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZUFyaXRoU3ViKE5vZGUmIG5vZGUpCit7CisgICAgaWYgKG1faml0Lmdy
YXBoKCkuYWRkU2hvdWxkU3BlY3VsYXRlSW50ZWdlcihub2RlLCBtX2ppdC5jb2RlQmxvY2soKSkp
IHsKKyAgICAgICAgaWYgKGlzTnVtYmVyQ29uc3RhbnQobm9kZS5jaGlsZDIoKSkpIHsKKyAgICAg
ICAgICAgIFNwZWN1bGF0ZUludGVnZXJPcGVyYW5kIG9wMSh0aGlzLCBub2RlLmNoaWxkMSgpKTsK
KyAgICAgICAgICAgIGludDMyX3QgaW1tMiA9IHZhbHVlT2ZOdW1iZXJDb25zdGFudEFzSW50MzIo
bm9kZS5jaGlsZDIoKSk7CisgICAgICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwor
CisgICAgICAgICAgICBpZiAobm9kZUNhblRydW5jYXRlSW50ZWdlcihub2RlLmFyaXRoTm9kZUZs
YWdzKCkpKSB7CisgICAgICAgICAgICAgICAgbV9qaXQubW92ZShvcDEuZ3ByKCksIHJlc3VsdC5n
cHIoKSk7CisgICAgICAgICAgICAgICAgbV9qaXQuc3ViMzIoSW1tMzIoaW1tMiksIHJlc3VsdC5n
cHIoKSk7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBzcGVjdWxhdGlvbkNo
ZWNrKE92ZXJmbG93LCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaFN1YjMyKE1h
Y3JvQXNzZW1ibGVyOjpPdmVyZmxvdywgb3AxLmdwcigpLCBJbW0zMihpbW0yKSwgcmVzdWx0Lmdw
cigpKSk7CisKKyAgICAgICAgICAgIGludGVnZXJSZXN1bHQocmVzdWx0LmdwcigpLCBtX2NvbXBp
bGVJbmRleCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgICAgIAor
ICAgICAgICBpZiAoaXNOdW1iZXJDb25zdGFudChub2RlLmNoaWxkMSgpKSkgeworICAgICAgICAg
ICAgaW50MzJfdCBpbW0xID0gdmFsdWVPZk51bWJlckNvbnN0YW50QXNJbnQzMihub2RlLmNoaWxk
MSgpKTsKKyAgICAgICAgICAgIFNwZWN1bGF0ZUludGVnZXJPcGVyYW5kIG9wMih0aGlzLCBub2Rl
LmNoaWxkMigpKTsKKyAgICAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CisgICAg
ICAgICAgICAgICAgCisgICAgICAgICAgICBtX2ppdC5tb3ZlKEltbTMyKGltbTEpLCByZXN1bHQu
Z3ByKCkpOworICAgICAgICAgICAgaWYgKG5vZGVDYW5UcnVuY2F0ZUludGVnZXIobm9kZS5hcml0
aE5vZGVGbGFncygpKSkKKyAgICAgICAgICAgICAgICBtX2ppdC5zdWIzMihvcDIuZ3ByKCksIHJl
c3VsdC5ncHIoKSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgc3BlY3VsYXRp
b25DaGVjayhPdmVyZmxvdywgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hTdWIz
MihNYWNyb0Fzc2VtYmxlcjo6T3ZlcmZsb3csIG9wMi5ncHIoKSwgcmVzdWx0LmdwcigpKSk7Cisg
ICAgICAgICAgICAgICAgCisgICAgICAgICAgICBpbnRlZ2VyUmVzdWx0KHJlc3VsdC5ncHIoKSwg
bV9jb21waWxlSW5kZXgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAg
ICAgICAKKyAgICAgICAgU3BlY3VsYXRlSW50ZWdlck9wZXJhbmQgb3AxKHRoaXMsIG5vZGUuY2hp
bGQxKCkpOworICAgICAgICBTcGVjdWxhdGVJbnRlZ2VyT3BlcmFuZCBvcDIodGhpcywgbm9kZS5j
aGlsZDIoKSk7CisgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CisKKyAgICAgICAg
aWYgKG5vZGVDYW5UcnVuY2F0ZUludGVnZXIobm9kZS5hcml0aE5vZGVGbGFncygpKSkgeworICAg
ICAgICAgICAgbV9qaXQubW92ZShvcDEuZ3ByKCksIHJlc3VsdC5ncHIoKSk7CisgICAgICAgICAg
ICBtX2ppdC5zdWIzMihvcDIuZ3ByKCksIHJlc3VsdC5ncHIoKSk7CisgICAgICAgIH0gZWxzZQor
ICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhPdmVyZmxvdywgSlNWYWx1ZVJlZ3MoKSwgTm9O
b2RlLCBtX2ppdC5icmFuY2hTdWIzMihNYWNyb0Fzc2VtYmxlcjo6T3ZlcmZsb3csIG9wMS5ncHIo
KSwgb3AyLmdwcigpLCByZXN1bHQuZ3ByKCkpKTsKKworICAgICAgICBpbnRlZ2VyUmVzdWx0KHJl
c3VsdC5ncHIoKSwgbV9jb21waWxlSW5kZXgpOworICAgICAgICByZXR1cm47CisgICAgfQorICAg
ICAgICAKKyAgICBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIG9wMSh0aGlzLCBub2RlLmNoaWxkMSgp
KTsKKyAgICBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIG9wMih0aGlzLCBub2RlLmNoaWxkMigpKTsK
KyAgICBGUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIG9wMSk7CisKKyAgICBGUFJSZWcgcmVnMSA9
IG9wMS5mcHIoKTsKKyAgICBGUFJSZWcgcmVnMiA9IG9wMi5mcHIoKTsKKyAgICBtX2ppdC5zdWJE
b3VibGUocmVnMSwgcmVnMiwgcmVzdWx0LmZwcigpKTsKKworICAgIGRvdWJsZVJlc3VsdChyZXN1
bHQuZnByKCksIG1fY29tcGlsZUluZGV4KTsKK30KKwogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZUFyaXRoTXVsKE5vZGUmIG5vZGUpCiB7CiAgICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0
ZUludGVnZXIoYXQobm9kZS5jaGlsZDEoKSksIGF0KG5vZGUuY2hpbGQyKCkpKSAmJiBub2RlLmNh
blNwZWN1bGF0ZUludGVnZXIoKSkgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkocmV2aXNpb24gMTA2MzM3KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC03MzAs
NiArNzMwLDEyIEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc0Z1bmN0aW9uQ29uc3RhbnQoTm9kZUlu
ZGV4IG5vZGVJbmRleCkgeyByZXR1cm4gbV9qaXQuaXNGdW5jdGlvbkNvbnN0YW50KG5vZGVJbmRl
eCk7IH0KICAgICBpbnQzMl90IHZhbHVlT2ZJbnQzMkNvbnN0YW50KE5vZGVJbmRleCBub2RlSW5k
ZXgpIHsgcmV0dXJuIG1faml0LnZhbHVlT2ZJbnQzMkNvbnN0YW50KG5vZGVJbmRleCk7IH0KICAg
ICBkb3VibGUgdmFsdWVPZk51bWJlckNvbnN0YW50KE5vZGVJbmRleCBub2RlSW5kZXgpIHsgcmV0
dXJuIG1faml0LnZhbHVlT2ZOdW1iZXJDb25zdGFudChub2RlSW5kZXgpOyB9CisgICAgaW50MzJf
dCB2YWx1ZU9mTnVtYmVyQ29uc3RhbnRBc0ludDMyKE5vZGVJbmRleCBub2RlSW5kZXgpCisgICAg
eworICAgICAgICBpZiAoaXNJbnQzMkNvbnN0YW50KG5vZGVJbmRleCkpCisgICAgICAgICAgICBy
ZXR1cm4gdmFsdWVPZkludDMyQ29uc3RhbnQobm9kZUluZGV4KTsKKyAgICAgICAgcmV0dXJuIEpT
Qzo6dG9JbnQzMih2YWx1ZU9mTnVtYmVyQ29uc3RhbnQobm9kZUluZGV4KSk7CisgICAgfQogI2lm
IFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgdm9pZCogYWRkcmVzc09mRG91YmxlQ29uc3RhbnQoTm9k
ZUluZGV4IG5vZGVJbmRleCkgeyByZXR1cm4gbV9qaXQuYWRkcmVzc09mRG91YmxlQ29uc3RhbnQo
bm9kZUluZGV4KTsgfQogI2VuZGlmCkBAIC0xNTE2LDYgKzE1MjIsOCBAQCBwcml2YXRlOgogICAg
IHZvaWQgY29tcGlsZVVJbnQzMlRvTnVtYmVyKE5vZGUmKTsKICAgICB2b2lkIGNvbXBpbGVHZXRC
eVZhbE9uQnl0ZUFycmF5KE5vZGUmKTsKICAgICB2b2lkIGNvbXBpbGVQdXRCeVZhbEZvckJ5dGVB
cnJheShHUFJSZWcgYmFzZSwgR1BSUmVnIHByb3BlcnR5LCBOb2RlJik7CisgICAgdm9pZCBjb21w
aWxlQWRkKE5vZGUmKTsKKyAgICB2b2lkIGNvbXBpbGVBcml0aFN1YihOb2RlJik7CiAgICAgdm9p
ZCBjb21waWxlQXJpdGhNdWwoTm9kZSYpOwogICAgIHZvaWQgY29tcGlsZUFyaXRoTW9kKE5vZGUm
KTsKICAgICB2b2lkIGNvbXBpbGVTb2Z0TW9kdWxvKE5vZGUmKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWVJbmxpbmVNZXRob2RzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZUlubGluZU1ldGhvZHMuaAkocmV2
aXNpb24gMTA2MzM3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZUlu
bGluZU1ldGhvZHMuaAkod29ya2luZyBjb3B5KQpAQCAtNDc3LDYgKzQ3Nyw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogCiAgICAgaW5saW5lIGRvdWJsZSBKU1ZhbHVlOjphc0RvdWJsZSgpIGNvbnN0CiAg
ICAgeworICAgICAgICBBU1NFUlQoaXNEb3VibGUoKSk7CiAgICAgICAgIHJldHVybiByZWludGVy
cHJldEludHB0clRvRG91YmxlKHUuYXNJbnQ2NCAtIERvdWJsZUVuY29kZU9mZnNldCk7CiAgICAg
fQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124909</attachid>
            <date>2012-02-01 01:55:21 -0800</date>
            <delta_ts>2012-02-01 10:55:53 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>foldconvert_patch_2.diff</filename>
            <type>text/plain</type>
            <size>33290</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA2NDQ5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ4IEBA
CisyMDEyLTAyLTAxICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
REZHIHNob3VsZCBmb2xkIGRvdWJsZS10by1pbnQgY29udmVyc2lvbnMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3NTMyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBQZXJmb3JtYW5jZSBuZXV0
cmFsIG9uIG1ham9yIGJlbmNobWFya3MuIEJ1dCBpdCBtYWtlcyBjYWxsaW5nIFY4J3MKKyAgICAg
ICAgTWF0aC5yYW5kb20oKSA0eCBmYXN0ZXIuCisKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxv
Y2suY3BwOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjphZGRPckZp
bmRDb25zdGFudCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAgIChK
U0M6OkNvZGVCbG9jazo6YWRkQ29uc3RhbnQpOgorICAgICAgICAoQ29kZUJsb2NrKToKKyAgICAg
ICAgKiBkZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJh
Y3RTdGF0ZTo6ZXhlY3V0ZSk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6dG9JbnQzMik6CisgICAgICAgIChC
eXRlQ29kZVBhcnNlcik6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmdldEpT
Q29uc3RhbnRGb3JWYWx1ZSk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6Omlz
SW50MzJDb25zdGFudCk6CisgICAgICAgICogZGZnL0RGR0dyYXBoLmg6CisgICAgICAgIChKU0M6
OkRGRzo6R3JhcGg6OmFkZFNob3VsZFNwZWN1bGF0ZUludGVnZXIpOgorICAgICAgICAoR3JhcGgp
OgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjphZGRJbW1lZGlhdGVTaG91bGRTcGVjdWxhdGVJ
bnRlZ2VyKToKKyAgICAgICAgKiBkZmcvREZHUHJvcGFnYXRvci5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6UHJvcGFnYXRvcjo6cHJvcGFnYXRlTm9kZVByZWRpY3Rpb25zKToKKyAgICAgICAgKEpT
Qzo6REZHOjpQcm9wYWdhdG9yOjpkb1JvdW5kT2ZEb3VibGVWb3RpbmcpOgorICAgICAgICAoSlND
OjpERkc6OlByb3BhZ2F0b3I6OmZpeHVwTm9kZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0
aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFk
ZCk6CisgICAgICAgIChERkcpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpj
b21waWxlQXJpdGhTdWIpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjp2YWx1ZU9mTnVtYmVyQ29uc3RhbnRBc0lu
dDMyKToKKyAgICAgICAgKFNwZWN1bGF0aXZlSklUKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3Vs
YXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogcnVudGltZS9K
U1ZhbHVlSW5saW5lTWV0aG9kcy5oOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjphc0RvdWJsZSk6
CisKIDIwMTItMDEtMzEgIEhhamltZSBNb3JyaXRhICA8bW9ycml0YUBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgQWRkIG1pc3NpbmcgSlNfUFJJVkFURV9FWFBPUlRzCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkocmV2aXNpb24gMTA2MzM3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTIwNjIsNiArMjA2MiwxNiBAQCB2b2lkIENvZGVCbG9jazo6Y3JlYXRlQWN0aXZh
dGlvbihDYWxsRnJhCiAgICAgY2FsbEZyYW1lLT51bmNoZWNrZWRSKGFjdGl2YXRpb25SZWdpc3Rl
cigpKSA9IEpTVmFsdWUoYWN0aXZhdGlvbik7CiAgICAgY2FsbEZyYW1lLT5zZXRTY29wZUNoYWlu
KGNhbGxGcmFtZS0+c2NvcGVDaGFpbigpLT5wdXNoKGFjdGl2YXRpb24pKTsKIH0KKwordW5zaWdu
ZWQgQ29kZUJsb2NrOjphZGRPckZpbmRDb25zdGFudChKU1ZhbHVlIHYpCit7CisgICAgdW5zaWdu
ZWQgbnVtYmVyT2ZDb25zdGFudHMgPSBudW1iZXJPZkNvbnN0YW50UmVnaXN0ZXJzKCk7CisgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mQ29uc3RhbnRzOyArK2kpIHsKKyAgICAg
ICAgaWYgKGdldENvbnN0YW50KEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4ICsgaSkgPT0gdikK
KyAgICAgICAgICAgIHJldHVybiBpOworICAgIH0KKyAgICByZXR1cm4gYWRkQ29uc3RhbnQodik7
Cit9CiAgICAgCiAjaWYgRU5BQkxFKEpJVCkKIHZvaWQgQ29kZUJsb2NrOjp1bmxpbmtDYWxscygp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCShyZXZp
c2lvbiAxMDYzMzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmgJKHdvcmtpbmcgY29weSkKQEAgLTcxOCwxMSArNzE4LDE0IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICBJZGVudGlmaWVyJiBpZGVudGlmaWVyKGludCBpbmRleCkgeyByZXR1cm4gbV9pZGVu
dGlmaWVyc1tpbmRleF07IH0KIAogICAgICAgICBzaXplX3QgbnVtYmVyT2ZDb25zdGFudFJlZ2lz
dGVycygpIGNvbnN0IHsgcmV0dXJuIG1fY29uc3RhbnRSZWdpc3RlcnMuc2l6ZSgpOyB9Ci0gICAg
ICAgIHZvaWQgYWRkQ29uc3RhbnQoSlNWYWx1ZSB2KQorICAgICAgICB1bnNpZ25lZCBhZGRDb25z
dGFudChKU1ZhbHVlIHYpCiAgICAgICAgIHsKKyAgICAgICAgICAgIHVuc2lnbmVkIHJlc3VsdCA9
IG1fY29uc3RhbnRSZWdpc3RlcnMuc2l6ZSgpOwogICAgICAgICAgICAgbV9jb25zdGFudFJlZ2lz
dGVycy5hcHBlbmQoV3JpdGVCYXJyaWVyPFVua25vd24+KCkpOwogICAgICAgICAgICAgbV9jb25z
dGFudFJlZ2lzdGVycy5sYXN0KCkuc2V0KG1fZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCksIG1f
b3duZXJFeGVjdXRhYmxlLmdldCgpLCB2KTsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAg
ICAgICAgIH0KKyAgICAgICAgdW5zaWduZWQgYWRkT3JGaW5kQ29uc3RhbnQoSlNWYWx1ZSk7CiAg
ICAgICAgIFdyaXRlQmFycmllcjxVbmtub3duPiYgY29uc3RhbnRSZWdpc3RlcihpbnQgaW5kZXgp
IHsgcmV0dXJuIG1fY29uc3RhbnRSZWdpc3RlcnNbaW5kZXggLSBGaXJzdENvbnN0YW50UmVnaXN0
ZXJJbmRleF07IH0KICAgICAgICAgQUxXQVlTX0lOTElORSBib29sIGlzQ29uc3RhbnRSZWdpc3Rl
ckluZGV4KGludCBpbmRleCkgY29uc3QgeyByZXR1cm4gaW5kZXggPj0gRmlyc3RDb25zdGFudFJl
Z2lzdGVySW5kZXg7IH0KICAgICAgICAgQUxXQVlTX0lOTElORSBKU1ZhbHVlIGdldENvbnN0YW50
KGludCBpbmRleCkgY29uc3QgeyByZXR1cm4gbV9jb25zdGFudFJlZ2lzdGVyc1tpbmRleCAtIEZp
cnN0Q29uc3RhbnRSZWdpc3RlckluZGV4XS5nZXQoKTsgfQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0U3RhdGUuY3BwCShyZXZpc2lvbiAxMDYzMzcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0U3RhdGUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yODAsNyArMjgwLDcgQEAgYm9vbCBBYnN0cmFjdFN0YXRlOjpleGVjdXRlKE5v
ZGVJbmRleCBubwogICAgICAgICAgICAgCiAgICAgY2FzZSBWYWx1ZUFkZDoKICAgICBjYXNlIEFy
aXRoQWRkOiB7Ci0gICAgICAgIGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVJbnRlZ2VyKG1fZ3Jh
cGhbbm9kZS5jaGlsZDEoKV0sIG1fZ3JhcGhbbm9kZS5jaGlsZDIoKV0pICYmIG5vZGUuY2FuU3Bl
Y3VsYXRlSW50ZWdlcigpKSB7CisgICAgICAgIGlmIChtX2dyYXBoLmFkZFNob3VsZFNwZWN1bGF0
ZUludGVnZXIobm9kZSwgbV9jb2RlQmxvY2spKSB7CiAgICAgICAgICAgICBmb3JOb2RlKG5vZGUu
Y2hpbGQxKCkpLmZpbHRlcihQcmVkaWN0SW50MzIpOwogICAgICAgICAgICAgZm9yTm9kZShub2Rl
LmNoaWxkMigpKS5maWx0ZXIoUHJlZGljdEludDMyKTsKICAgICAgICAgICAgIGZvck5vZGUobm9k
ZUluZGV4KS5zZXQoUHJlZGljdEludDMyKTsKQEAgLTI5OCw3ICsyOTgsMTkgQEAgYm9vbCBBYnN0
cmFjdFN0YXRlOjpleGVjdXRlKE5vZGVJbmRleCBubwogICAgICAgICBicmVhazsKICAgICB9CiAg
ICAgICAgICAgICAKLSAgICBjYXNlIEFyaXRoU3ViOgorICAgIGNhc2UgQXJpdGhTdWI6IHsKKyAg
ICAgICAgaWYgKG1fZ3JhcGguYWRkU2hvdWxkU3BlY3VsYXRlSW50ZWdlcihub2RlLCBtX2NvZGVC
bG9jaykpIHsKKyAgICAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDEoKSkuZmlsdGVyKFByZWRp
Y3RJbnQzMik7CisgICAgICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQyKCkpLmZpbHRlcihQcmVk
aWN0SW50MzIpOworICAgICAgICAgICAgZm9yTm9kZShub2RlSW5kZXgpLnNldChQcmVkaWN0SW50
MzIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgZm9yTm9kZShub2Rl
LmNoaWxkMSgpKS5maWx0ZXIoUHJlZGljdE51bWJlcik7CisgICAgICAgIGZvck5vZGUobm9kZS5j
aGlsZDIoKSkuZmlsdGVyKFByZWRpY3ROdW1iZXIpOworICAgICAgICBmb3JOb2RlKG5vZGVJbmRl
eCkuc2V0KFByZWRpY3REb3VibGUpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgICAgIAog
ICAgIGNhc2UgQXJpdGhNdWw6CiAgICAgY2FzZSBBcml0aERpdjoKICAgICBjYXNlIEFyaXRoTWlu
OgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNl
ci5jcHAJKHJldmlzaW9uIDEwNjMzNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Qnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMzQsNyArMzM0LDggQEAgcHJp
dmF0ZToKICAgICAgICAgICAgIEpTVmFsdWUgdiA9IHZhbHVlT2ZKU0NvbnN0YW50KGluZGV4KTsK
ICAgICAgICAgICAgIGlmICh2LmlzSW50MzIoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZ2V0
SlNDb25zdGFudChub2RlLmNvbnN0YW50TnVtYmVyKCkpOwotICAgICAgICAgICAgLy8gRklYTUU6
IFdlIGNvdWxkIGNvbnZlcnQgdGhlIGRvdWJsZSBUb0ludGVnZXIgYXQgdGhpcyBwb2ludC4KKyAg
ICAgICAgICAgIGlmICh2LmlzTnVtYmVyKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGdldEpT
Q29uc3RhbnRGb3JWYWx1ZShKU1ZhbHVlKEpTQzo6dG9JbnQzMih2LmFzTnVtYmVyKCkpKSk7CiAg
ICAgICAgIH0KIAogICAgICAgICByZXR1cm4gYWRkVG9HcmFwaChWYWx1ZVRvSW50MzIsIGluZGV4
KTsKQEAgLTM1Niw2ICszNTcsMTcgQEAgcHJpdmF0ZToKIAogICAgICAgICByZXR1cm4gYWRkVG9H
cmFwaChWYWx1ZVRvTnVtYmVyLCBPcEluZm8oTm9kZVVzZUJvdHRvbSksIGluZGV4KTsKICAgICB9
CisgICAgCisgICAgTm9kZUluZGV4IGdldEpTQ29uc3RhbnRGb3JWYWx1ZShKU1ZhbHVlIGNvbnN0
YW50VmFsdWUpCisgICAgeworICAgICAgICB1bnNpZ25lZCBjb25zdGFudEluZGV4ID0gbV9jb2Rl
QmxvY2stPmFkZE9yRmluZENvbnN0YW50KGNvbnN0YW50VmFsdWUpOworICAgICAgICBpZiAoY29u
c3RhbnRJbmRleCA+PSBtX2NvbnN0YW50cy5zaXplKCkpCisgICAgICAgICAgICBtX2NvbnN0YW50
cy5hcHBlbmQoQ29uc3RhbnRSZWNvcmQoKSk7CisgICAgICAgIAorICAgICAgICBBU1NFUlQobV9j
b25zdGFudHMuc2l6ZSgpID09IG1fY29kZUJsb2NrLT5udW1iZXJPZkNvbnN0YW50UmVnaXN0ZXJz
KCkpOworICAgICAgICAKKyAgICAgICAgcmV0dXJuIGdldEpTQ29uc3RhbnQoY29uc3RhbnRJbmRl
eCk7CisgICAgfQogCiAgICAgTm9kZUluZGV4IGdldEpTQ29uc3RhbnQodW5zaWduZWQgY29uc3Rh
bnQpCiAgICAgewpAQCAtMzg3LDE2ICszOTksNiBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAg
cmV0dXJuIGlzSlNDb25zdGFudChub2RlSW5kZXgpICYmIHZhbHVlT2ZKU0NvbnN0YW50KG5vZGVJ
bmRleCkuaXNJbnQzMigpOwogICAgIH0KLSAgICBib29sIGlzU21hbGxJbnQzMkNvbnN0YW50KE5v
ZGVJbmRleCBub2RlSW5kZXgpCi0gICAgewotICAgICAgICBpZiAoIWlzSlNDb25zdGFudChub2Rl
SW5kZXgpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBKU1ZhbHVlIHZhbHVl
ID0gdmFsdWVPZkpTQ29uc3RhbnQobm9kZUluZGV4KTsKLSAgICAgICAgaWYgKCF2YWx1ZS5pc0lu
dDMyKCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGludDMyX3QgaW50VmFs
dWUgPSB2YWx1ZS5hc0ludDMyKCk7Ci0gICAgICAgIHJldHVybiBpbnRWYWx1ZSA+PSAtNSAmJiBp
bnRWYWx1ZSA8PSA1OwotICAgIH0KICAgICAvLyBDb252ZW5pZW5jZSBtZXRob2RzIGZvciBnZXR0
aW5nIGNvbnN0YW50IHZhbHVlcy4KICAgICBKU1ZhbHVlIHZhbHVlT2ZKU0NvbnN0YW50KE5vZGVJ
bmRleCBpbmRleCkKICAgICB7CkBAIC00MDgsNyArNDEwLDcgQEAgcHJpdmF0ZToKICAgICAgICAg
QVNTRVJUKGlzSW50MzJDb25zdGFudChub2RlSW5kZXgpKTsKICAgICAgICAgcmV0dXJuIHZhbHVl
T2ZKU0NvbnN0YW50KG5vZGVJbmRleCkuYXNJbnQzMigpOwogICAgIH0KLQorICAgIAogICAgIC8v
IFRoaXMgbWV0aG9kIHJldHVybnMgYSBKU0NvbnN0YW50IHdpdGggdGhlIHZhbHVlICd1bmRlZmlu
ZWQnLgogICAgIE5vZGVJbmRleCBjb25zdGFudFVuZGVmaW5lZCgpCiAgICAgewpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAkocmV2aXNpb24gMTA2MzM3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzcsNiAr
MTM3LDI2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHByZWRpY3Rpb25Gcm9tVmFsdWUobm9k
ZS52YWx1ZU9mSlNDb25zdGFudChjb2RlQmxvY2spKTsKICAgICB9CiAgICAgCisgICAgYm9vbCBh
ZGRTaG91bGRTcGVjdWxhdGVJbnRlZ2VyKE5vZGUmIGFkZCwgQ29kZUJsb2NrKiBjb2RlQmxvY2sp
CisgICAgeworICAgICAgICBBU1NFUlQoYWRkLm9wID09IFZhbHVlQWRkIHx8IGFkZC5vcCA9PSBB
cml0aEFkZCB8fCBhZGQub3AgPT0gQXJpdGhTdWIpOworICAgICAgICAKKyAgICAgICAgTm9kZSYg
bGVmdCA9IGF0KGFkZC5jaGlsZDEoKSk7CisgICAgICAgIE5vZGUmIHJpZ2h0ID0gYXQoYWRkLmNo
aWxkMigpKTsKKyAgICAgICAgCisgICAgICAgIGlmIChsZWZ0Lmhhc0NvbnN0YW50KCkpCisgICAg
ICAgICAgICByZXR1cm4gYWRkSW1tZWRpYXRlU2hvdWxkU3BlY3VsYXRlSW50ZWdlcihjb2RlQmxv
Y2ssIGFkZCwgcmlnaHQsIGxlZnQpOworICAgICAgICBpZiAocmlnaHQuaGFzQ29uc3RhbnQoKSkK
KyAgICAgICAgICAgIHJldHVybiBhZGRJbW1lZGlhdGVTaG91bGRTcGVjdWxhdGVJbnRlZ2VyKGNv
ZGVCbG9jaywgYWRkLCBsZWZ0LCByaWdodCk7CisgICAgICAgIAorICAgICAgICByZXR1cm4gTm9k
ZTo6c2hvdWxkU3BlY3VsYXRlSW50ZWdlcihsZWZ0LCByaWdodCkgJiYgYWRkLmNhblNwZWN1bGF0
ZUludGVnZXIoKTsKKyAgICB9CisgICAgCisgICAgYm9vbCBhZGRTaG91bGRTcGVjdWxhdGVJbnRl
Z2VyKE5vZGVJbmRleCBub2RlSW5kZXgsIENvZGVCbG9jayogY29kZUJsb2NrKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGFkZFNob3VsZFNwZWN1bGF0ZUludGVnZXIoYXQobm9kZUluZGV4KSwgY29k
ZUJsb2NrKTsKKyAgICB9CisgICAgCiAgICAgLy8gSGVscGVyIG1ldGhvZHMgdG8gY2hlY2sgbm9k
ZXMgZm9yIGNvbnN0YW50cy4KICAgICBib29sIGlzQ29uc3RhbnQoTm9kZUluZGV4IG5vZGVJbmRl
eCkKICAgICB7CkBAIC0yNTEsNiArMjcxLDI4IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBtX3Bh
cmFtZXRlclNsb3RzOwogcHJpdmF0ZToKICAgICAKKyAgICBib29sIGFkZEltbWVkaWF0ZVNob3Vs
ZFNwZWN1bGF0ZUludGVnZXIoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIE5vZGUmIGFkZCwgTm9kZSYg
dmFyaWFibGUsIE5vZGUmIGltbWVkaWF0ZSkKKyAgICB7CisgICAgICAgIEFTU0VSVChpbW1lZGlh
dGUuaGFzQ29uc3RhbnQoKSk7CisgICAgICAgIAorICAgICAgICBKU1ZhbHVlIGltbWVkaWF0ZVZh
bHVlID0gaW1tZWRpYXRlLnZhbHVlT2ZKU0NvbnN0YW50KGNvZGVCbG9jayk7CisgICAgICAgIGlm
ICghaW1tZWRpYXRlVmFsdWUuaXNOdW1iZXIoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgCisgICAgICAgIGlmICghdmFyaWFibGUuc2hvdWxkU3BlY3VsYXRlSW50ZWdlcigp
KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAKKyAgICAgICAgaWYgKGltbWVk
aWF0ZVZhbHVlLmlzSW50MzIoKSkKKyAgICAgICAgICAgIHJldHVybiBhZGQuY2FuU3BlY3VsYXRl
SW50ZWdlcigpOworICAgICAgICAKKyAgICAgICAgZG91YmxlIGRvdWJsZUltbWVkaWF0ZSA9IGlt
bWVkaWF0ZVZhbHVlLmFzRG91YmxlKCk7CisgICAgICAgIGNvbnN0IGRvdWJsZSB0d29Ub1RoZTQ4
ID0gMjgxNDc0OTc2NzEwNjU2LjA7CisgICAgICAgIGlmIChkb3VibGVJbW1lZGlhdGUgPCAtdHdv
VG9UaGU0OCB8fCBkb3VibGVJbW1lZGlhdGUgPiB0d29Ub1RoZTQ4KQorICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICAKKyAgICAgICAgcmV0dXJuIG5vZGVDYW5UcnVuY2F0ZUludGVn
ZXIoYWRkLmFyaXRoTm9kZUZsYWdzKCkpOworICAgIH0KKyAgICAKICAgICAvLyBXaGVuIGEgbm9k
ZSdzIHJlZkNvdW50IGdvZXMgZnJvbSAwIHRvIDEsIGl0IG11c3QgKGxvZ2ljYWxseSkgcmVjdXJz
aXZlbHkgcmVmIGFsbCBvZiBpdHMgY2hpbGRyZW4sIGFuZCB2aWNlIHZlcnNhLgogICAgIHZvaWQg
cmVmQ2hpbGRyZW4oTm9kZUluZGV4KTsKICAgICB2b2lkIGRlcmVmQ2hpbGRyZW4oTm9kZUluZGV4
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJvcGFnYXRvci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9wYWdhdG9yLmNwcAko
cmV2aXNpb24gMTA2MzM3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9wYWdh
dG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgyLDcgKzM4Miw3IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAKICAgICAgICAgICAgIGlmIChsZWZ0ICYmIHJpZ2h0KSB7CiAgICAgICAgICAgICAg
ICAgaWYgKGlzTnVtYmVyUHJlZGljdGlvbihsZWZ0KSAmJiBpc051bWJlclByZWRpY3Rpb24ocmln
aHQpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChpc0ludDMyUHJlZGljdGlvbihtZXJnZVBy
ZWRpY3Rpb25zKGxlZnQsIHJpZ2h0KSkgJiYgbm9kZUNhblNwZWN1bGF0ZUludGVnZXIobm9kZS5h
cml0aE5vZGVGbGFncygpKSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKG1fZ3JhcGguYWRkU2hv
dWxkU3BlY3VsYXRlSW50ZWdlcihub2RlLCBtX2NvZGVCbG9jaykpCiAgICAgICAgICAgICAgICAg
ICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihQcmVkaWN0SW50MzIpOwogICAgICAg
ICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1l
cmdlUHJlZGljdGlvbihQcmVkaWN0RG91YmxlKTsKQEAgLTM5Niw3ICszOTYsMTkgQEAgcHJpdmF0
ZToKICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgQXJpdGhBZGQ6Ci0gICAg
ICAgIGNhc2UgQXJpdGhTdWI6CisgICAgICAgIGNhc2UgQXJpdGhTdWI6IHsKKyAgICAgICAgICAg
IFByZWRpY3RlZFR5cGUgbGVmdCA9IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0ucHJlZGljdGlvbigp
OworICAgICAgICAgICAgUHJlZGljdGVkVHlwZSByaWdodCA9IG1fZ3JhcGhbbm9kZS5jaGlsZDIo
KV0ucHJlZGljdGlvbigpOworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAobGVmdCAmJiBy
aWdodCkgeworICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLmFkZFNob3VsZFNwZWN1bGF0ZUlu
dGVnZXIobm9kZSwgbV9jb2RlQmxvY2spKQorICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9
IG1lcmdlUHJlZGljdGlvbihQcmVkaWN0SW50MzIpOworICAgICAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oUHJlZGljdERvdWJs
ZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAg
ICAgICAgCiAgICAgICAgIGNhc2UgQXJpdGhNdWw6CiAgICAgICAgIGNhc2UgQXJpdGhNaW46CiAg
ICAgICAgIGNhc2UgQXJpdGhNYXg6CkBAIC03MTIsNyArNzI0LDIzIEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICBzd2l0Y2ggKG5vZGUub3ApIHsKICAgICAgICAgICAgIGNhc2UgVmFsdWVBZGQ6CiAg
ICAgICAgICAgICBjYXNlIEFyaXRoQWRkOgotICAgICAgICAgICAgY2FzZSBBcml0aFN1YjoKKyAg
ICAgICAgICAgIGNhc2UgQXJpdGhTdWI6IHsKKyAgICAgICAgICAgICAgICBQcmVkaWN0ZWRUeXBl
IGxlZnQgPSBtX2dyYXBoW25vZGUuY2hpbGQxKCldLnByZWRpY3Rpb24oKTsKKyAgICAgICAgICAg
ICAgICBQcmVkaWN0ZWRUeXBlIHJpZ2h0ID0gbV9ncmFwaFtub2RlLmNoaWxkMigpXS5wcmVkaWN0
aW9uKCk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NE
YXRhOjpCYWxsb3QgYmFsbG90OworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGlm
IChpc051bWJlclByZWRpY3Rpb24obGVmdCkgJiYgaXNOdW1iZXJQcmVkaWN0aW9uKHJpZ2h0KQor
ICAgICAgICAgICAgICAgICAgICAmJiAhbV9ncmFwaC5hZGRTaG91bGRTcGVjdWxhdGVJbnRlZ2Vy
KG5vZGUsIG1fY29kZUJsb2NrKSkKKyAgICAgICAgICAgICAgICAgICAgYmFsbG90ID0gVmFyaWFi
bGVBY2Nlc3NEYXRhOjpWb3RlRG91YmxlOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICAgICAgYmFsbG90ID0gVmFyaWFibGVBY2Nlc3NEYXRhOjpWb3RlVmFsdWU7CisgICAg
ICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgdm90ZShub2RlLmNoaWxkMSgpLCBiYWxsb3Qp
OworICAgICAgICAgICAgICAgIHZvdGUobm9kZS5jaGlsZDIoKSwgYmFsbG90KTsKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKICAgICAgICAg
ICAgIGNhc2UgQXJpdGhNdWw6CiAgICAgICAgICAgICBjYXNlIEFyaXRoTWluOgogICAgICAgICAg
ICAgY2FzZSBBcml0aE1heDoKQEAgLTgyOSwyNyArODU3LDIxIEBAIHByaXZhdGU6CiAjZW5kaWYK
ICAgICAgICAgCiAgICAgICAgIHN3aXRjaCAob3ApIHsKLSAgICAgICAgY2FzZSBWYWx1ZUFkZDog
ewotICAgICAgICAgICAgaWYgKCFub2RlQ2FuU3BlY3VsYXRlSW50ZWdlcihub2RlLmFyaXRoTm9k
ZUZsYWdzKCkpKSB7Ci0gICAgICAgICAgICAgICAgdG9Eb3VibGUobm9kZS5jaGlsZDEoKSk7Ci0g
ICAgICAgICAgICAgICAgdG9Eb3VibGUobm9kZS5jaGlsZDIoKSk7Ci0gICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAKKyAgICAgICAgY2FzZSBWYWx1ZUFk
ZDoKKyAgICAgICAgY2FzZSBBcml0aEFkZDoKKyAgICAgICAgY2FzZSBBcml0aFN1YjogewogICAg
ICAgICAgICAgUHJlZGljdGVkVHlwZSBsZWZ0ID0gbV9ncmFwaFtub2RlLmNoaWxkMSgpXS5wcmVk
aWN0aW9uKCk7CiAgICAgICAgICAgICBQcmVkaWN0ZWRUeXBlIHJpZ2h0ID0gbV9ncmFwaFtub2Rl
LmNoaWxkMigpXS5wcmVkaWN0aW9uKCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChs
ZWZ0ICYmIHJpZ2h0CiAgICAgICAgICAgICAgICAgJiYgaXNOdW1iZXJQcmVkaWN0aW9uKGxlZnQp
ICYmIGlzTnVtYmVyUHJlZGljdGlvbihyaWdodCkKLSAgICAgICAgICAgICAgICAmJiAoKGxlZnQg
JiBQcmVkaWN0RG91YmxlKSB8fCAocmlnaHQgJiBQcmVkaWN0RG91YmxlKSkpIHsKKyAgICAgICAg
ICAgICAgICAmJiAhbV9ncmFwaC5hZGRTaG91bGRTcGVjdWxhdGVJbnRlZ2VyKG5vZGUsIG1fY29k
ZUJsb2NrKSkgewogICAgICAgICAgICAgICAgIHRvRG91YmxlKG5vZGUuY2hpbGQxKCkpOwogICAg
ICAgICAgICAgICAgIHRvRG91YmxlKG5vZGUuY2hpbGQyKCkpOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIAotICAgICAgICBjYXNlIEFy
aXRoQWRkOgotICAgICAgICBjYXNlIEFyaXRoU3ViOgogICAgICAgICBjYXNlIEFyaXRoTXVsOgog
ICAgICAgICBjYXNlIEFyaXRoTWluOgogICAgICAgICBjYXNlIEFyaXRoTWF4OgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQu
Y3BwCShyZXZpc2lvbiAxMDYzMzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODg2LDEzMyArMTg4Niwx
NyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgfQogCiAg
ICAgY2FzZSBWYWx1ZUFkZDoKLSAgICBjYXNlIEFyaXRoQWRkOiB7Ci0gICAgICAgIGlmIChOb2Rl
OjpzaG91bGRTcGVjdWxhdGVJbnRlZ2VyKGF0KG5vZGUuY2hpbGQxKCkpLCBhdChub2RlLmNoaWxk
MigpKSkgJiYgbm9kZS5jYW5TcGVjdWxhdGVJbnRlZ2VyKCkpIHsKLSAgICAgICAgICAgIGlmIChp
c0ludDMyQ29uc3RhbnQobm9kZS5jaGlsZDEoKSkpIHsKLSAgICAgICAgICAgICAgICBpbnQzMl90
IGltbTEgPSB2YWx1ZU9mSW50MzJDb25zdGFudChub2RlLmNoaWxkMSgpKTsKLSAgICAgICAgICAg
ICAgICBTcGVjdWxhdGVJbnRlZ2VyT3BlcmFuZCBvcDIodGhpcywgbm9kZS5jaGlsZDIoKSk7Ci0g
ICAgICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKLQotICAgICAgICAgICAg
ICAgIGlmIChub2RlQ2FuVHJ1bmNhdGVJbnRlZ2VyKG5vZGUuYXJpdGhOb2RlRmxhZ3MoKSkpIHsK
LSAgICAgICAgICAgICAgICAgICAgbV9qaXQubW92ZShvcDIuZ3ByKCksIHJlc3VsdC5ncHIoKSk7
Ci0gICAgICAgICAgICAgICAgICAgIG1faml0LmFkZDMyKEltbTMyKGltbTEpLCByZXN1bHQuZ3By
KCkpOwotICAgICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgICAgICBzcGVjdWxh
dGlvbkNoZWNrKE92ZXJmbG93LCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaEFk
ZDMyKE1hY3JvQXNzZW1ibGVyOjpPdmVyZmxvdywgb3AyLmdwcigpLCBJbW0zMihpbW0xKSwgcmVz
dWx0LmdwcigpKSk7Ci0KLSAgICAgICAgICAgICAgICBpbnRlZ2VyUmVzdWx0KHJlc3VsdC5ncHIo
KSwgbV9jb21waWxlSW5kZXgpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKGlzSW50MzJDb25zdGFudChub2Rl
LmNoaWxkMigpKSkgewotICAgICAgICAgICAgICAgIFNwZWN1bGF0ZUludGVnZXJPcGVyYW5kIG9w
MSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKLSAgICAgICAgICAgICAgICBpbnQzMl90IGltbTIgPSB2
YWx1ZU9mSW50MzJDb25zdGFudChub2RlLmNoaWxkMigpKTsKLSAgICAgICAgICAgICAgICBHUFJU
ZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAg
IGlmIChub2RlQ2FuVHJ1bmNhdGVJbnRlZ2VyKG5vZGUuYXJpdGhOb2RlRmxhZ3MoKSkpIHsKLSAg
ICAgICAgICAgICAgICAgICAgbV9qaXQubW92ZShvcDEuZ3ByKCksIHJlc3VsdC5ncHIoKSk7Ci0g
ICAgICAgICAgICAgICAgICAgIG1faml0LmFkZDMyKEltbTMyKGltbTIpLCByZXN1bHQuZ3ByKCkp
OwotICAgICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgICAgICBzcGVjdWxhdGlv
bkNoZWNrKE92ZXJmbG93LCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaEFkZDMy
KE1hY3JvQXNzZW1ibGVyOjpPdmVyZmxvdywgb3AxLmdwcigpLCBJbW0zMihpbW0yKSwgcmVzdWx0
LmdwcigpKSk7Ci0KLSAgICAgICAgICAgICAgICBpbnRlZ2VyUmVzdWx0KHJlc3VsdC5ncHIoKSwg
bV9jb21waWxlSW5kZXgpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgU3BlY3VsYXRlSW50ZWdlck9wZXJhbmQgb3Ax
KHRoaXMsIG5vZGUuY2hpbGQxKCkpOwotICAgICAgICAgICAgU3BlY3VsYXRlSW50ZWdlck9wZXJh
bmQgb3AyKHRoaXMsIG5vZGUuY2hpbGQyKCkpOwotICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHJl
c3VsdCh0aGlzLCBvcDEsIG9wMik7Ci0KLSAgICAgICAgICAgIEdQUlJlZyBncHIxID0gb3AxLmdw
cigpOwotICAgICAgICAgICAgR1BSUmVnIGdwcjIgPSBvcDIuZ3ByKCk7Ci0gICAgICAgICAgICBH
UFJSZWcgZ3ByUmVzdWx0ID0gcmVzdWx0LmdwcigpOwotCi0gICAgICAgICAgICBpZiAobm9kZUNh
blRydW5jYXRlSW50ZWdlcihub2RlLmFyaXRoTm9kZUZsYWdzKCkpKSB7Ci0gICAgICAgICAgICAg
ICAgaWYgKGdwcjEgPT0gZ3ByUmVzdWx0KQotICAgICAgICAgICAgICAgICAgICBtX2ppdC5hZGQz
MihncHIyLCBncHJSZXN1bHQpOwotICAgICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAg
ICAgICAgICBtX2ppdC5tb3ZlKGdwcjIsIGdwclJlc3VsdCk7Ci0gICAgICAgICAgICAgICAgICAg
IG1faml0LmFkZDMyKGdwcjEsIGdwclJlc3VsdCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBjaGVj
ayA9IG1faml0LmJyYW5jaEFkZDMyKE1hY3JvQXNzZW1ibGVyOjpPdmVyZmxvdywgZ3ByMSwgZ3By
MiwgZ3ByUmVzdWx0KTsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBpZiAoZ3By
MSA9PSBncHJSZXN1bHQpCi0gICAgICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soT3Zl
cmZsb3csIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgY2hlY2ssIFNwZWN1bGF0aW9uUmVjb3Zlcnko
U3BlY3VsYXRpdmVBZGQsIGdwclJlc3VsdCwgZ3ByMikpOwotICAgICAgICAgICAgICAgIGVsc2Ug
aWYgKGdwcjIgPT0gZ3ByUmVzdWx0KQotICAgICAgICAgICAgICAgICAgICBzcGVjdWxhdGlvbkNo
ZWNrKE92ZXJmbG93LCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIGNoZWNrLCBTcGVjdWxhdGlvblJl
Y292ZXJ5KFNwZWN1bGF0aXZlQWRkLCBncHJSZXN1bHQsIGdwcjEpKTsKLSAgICAgICAgICAgICAg
ICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soT3ZlcmZsb3csIEpT
VmFsdWVSZWdzKCksIE5vTm9kZSwgY2hlY2spOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAg
ICBpbnRlZ2VyUmVzdWx0KGdwclJlc3VsdCwgbV9jb21waWxlSW5kZXgpOwotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGlmIChOb2RlOjpzaG91bGRTcGVj
dWxhdGVOdW1iZXIoYXQobm9kZS5jaGlsZDEoKSksIGF0KG5vZGUuY2hpbGQyKCkpKSkgewotICAg
ICAgICAgICAgU3BlY3VsYXRlRG91YmxlT3BlcmFuZCBvcDEodGhpcywgbm9kZS5jaGlsZDEoKSk7
Ci0gICAgICAgICAgICBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIG9wMih0aGlzLCBub2RlLmNoaWxk
MigpKTsKLSAgICAgICAgICAgIEZQUlRlbXBvcmFyeSByZXN1bHQodGhpcywgb3AxLCBvcDIpOwot
Ci0gICAgICAgICAgICBGUFJSZWcgcmVnMSA9IG9wMS5mcHIoKTsKLSAgICAgICAgICAgIEZQUlJl
ZyByZWcyID0gb3AyLmZwcigpOwotICAgICAgICAgICAgbV9qaXQuYWRkRG91YmxlKHJlZzEsIHJl
ZzIsIHJlc3VsdC5mcHIoKSk7Ci0KLSAgICAgICAgICAgIGRvdWJsZVJlc3VsdChyZXN1bHQuZnBy
KCksIG1fY29tcGlsZUluZGV4KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0KLSAg
ICAgICAgQVNTRVJUKG9wID09IFZhbHVlQWRkKTsKLSAgICAgICAgY29tcGlsZVZhbHVlQWRkKG5v
ZGUpOworICAgIGNhc2UgQXJpdGhBZGQ6CisgICAgICAgIGNvbXBpbGVBZGQobm9kZSk7CiAgICAg
ICAgIGJyZWFrOwotICAgIH0KLQotICAgIGNhc2UgQXJpdGhTdWI6IHsKLSAgICAgICAgaWYgKE5v
ZGU6OnNob3VsZFNwZWN1bGF0ZUludGVnZXIoYXQobm9kZS5jaGlsZDEoKSksIGF0KG5vZGUuY2hp
bGQyKCkpKSAmJiBub2RlLmNhblNwZWN1bGF0ZUludGVnZXIoKSkgewotICAgICAgICAgICAgaWYg
KGlzSW50MzJDb25zdGFudChub2RlLmNoaWxkMigpKSkgewotICAgICAgICAgICAgICAgIFNwZWN1
bGF0ZUludGVnZXJPcGVyYW5kIG9wMSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKLSAgICAgICAgICAg
ICAgICBpbnQzMl90IGltbTIgPSB2YWx1ZU9mSW50MzJDb25zdGFudChub2RlLmNoaWxkMigpKTsK
LSAgICAgICAgICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwotCi0gICAgICAgICAg
ICAgICAgaWYgKG5vZGVDYW5UcnVuY2F0ZUludGVnZXIobm9kZS5hcml0aE5vZGVGbGFncygpKSkg
ewotICAgICAgICAgICAgICAgICAgICBtX2ppdC5tb3ZlKG9wMS5ncHIoKSwgcmVzdWx0Lmdwcigp
KTsKLSAgICAgICAgICAgICAgICAgICAgbV9qaXQuc3ViMzIoSW1tMzIoaW1tMiksIHJlc3VsdC5n
cHIoKSk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHNwZWN1
bGF0aW9uQ2hlY2soT3ZlcmZsb3csIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNo
U3ViMzIoTWFjcm9Bc3NlbWJsZXI6Ok92ZXJmbG93LCBvcDEuZ3ByKCksIEltbTMyKGltbTIpLCBy
ZXN1bHQuZ3ByKCkpKTsKLQotICAgICAgICAgICAgICAgIGludGVnZXJSZXN1bHQocmVzdWx0Lmdw
cigpLCBtX2NvbXBpbGVJbmRleCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICBTcGVjdWxhdGVJbnRlZ2VyT3BlcmFu
ZCBvcDEodGhpcywgbm9kZS5jaGlsZDEoKSk7Ci0gICAgICAgICAgICBTcGVjdWxhdGVJbnRlZ2Vy
T3BlcmFuZCBvcDIodGhpcywgbm9kZS5jaGlsZDIoKSk7Ci0gICAgICAgICAgICBHUFJUZW1wb3Jh
cnkgcmVzdWx0KHRoaXMpOwogCi0gICAgICAgICAgICBpZiAobm9kZUNhblRydW5jYXRlSW50ZWdl
cihub2RlLmFyaXRoTm9kZUZsYWdzKCkpKSB7Ci0gICAgICAgICAgICAgICAgbV9qaXQubW92ZShv
cDEuZ3ByKCksIHJlc3VsdC5ncHIoKSk7Ci0gICAgICAgICAgICAgICAgbV9qaXQuc3ViMzIob3Ay
LmdwcigpLCByZXN1bHQuZ3ByKCkpOwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAg
ICAgc3BlY3VsYXRpb25DaGVjayhPdmVyZmxvdywgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2pp
dC5icmFuY2hTdWIzMihNYWNyb0Fzc2VtYmxlcjo6T3ZlcmZsb3csIG9wMS5ncHIoKSwgb3AyLmdw
cigpLCByZXN1bHQuZ3ByKCkpKTsKLQotICAgICAgICAgICAgaW50ZWdlclJlc3VsdChyZXN1bHQu
Z3ByKCksIG1fY29tcGlsZUluZGV4KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0g
ICAgICAgIAotICAgICAgICBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIG9wMSh0aGlzLCBub2RlLmNo
aWxkMSgpKTsKLSAgICAgICAgU3BlY3VsYXRlRG91YmxlT3BlcmFuZCBvcDIodGhpcywgbm9kZS5j
aGlsZDIoKSk7Ci0gICAgICAgIEZQUlRlbXBvcmFyeSByZXN1bHQodGhpcywgb3AxKTsKLQotICAg
ICAgICBGUFJSZWcgcmVnMSA9IG9wMS5mcHIoKTsKLSAgICAgICAgRlBSUmVnIHJlZzIgPSBvcDIu
ZnByKCk7Ci0gICAgICAgIG1faml0LnN1YkRvdWJsZShyZWcxLCByZWcyLCByZXN1bHQuZnByKCkp
OwotCi0gICAgICAgIGRvdWJsZVJlc3VsdChyZXN1bHQuZnByKCksIG1fY29tcGlsZUluZGV4KTsK
KyAgICBjYXNlIEFyaXRoU3ViOgorICAgICAgICBjb21waWxlQXJpdGhTdWIobm9kZSk7CiAgICAg
ICAgIGJyZWFrOwotICAgIH0KIAotICAgIGNhc2UgQXJpdGhNdWw6IHsKKyAgICBjYXNlIEFyaXRo
TXVsOgogICAgICAgICBjb21waWxlQXJpdGhNdWwobm9kZSk7CiAgICAgICAgIGJyZWFrOwotICAg
IH0KIAogICAgIGNhc2UgQXJpdGhEaXY6IHsKICAgICAgICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1
bGF0ZUludGVnZXIoYXQobm9kZS5jaGlsZDEoKSksIGF0KG5vZGUuY2hpbGQyKCkpKSAmJiBub2Rl
LmNhblNwZWN1bGF0ZUludGVnZXIoKSkgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAxMDYzMzcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xOTY1LDEzMyArMTk2NSwxNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKE5vZGUmIG5vZGUpCiAgICAgfQogCiAgICAgY2FzZSBWYWx1ZUFkZDoKLSAgICBjYXNlIEFy
aXRoQWRkOiB7Ci0gICAgICAgIGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVJbnRlZ2VyKGF0KG5v
ZGUuY2hpbGQxKCkpLCBhdChub2RlLmNoaWxkMigpKSkgJiYgbm9kZS5jYW5TcGVjdWxhdGVJbnRl
Z2VyKCkpIHsKLSAgICAgICAgICAgIGlmIChpc0ludDMyQ29uc3RhbnQobm9kZS5jaGlsZDEoKSkp
IHsKLSAgICAgICAgICAgICAgICBpbnQzMl90IGltbTEgPSB2YWx1ZU9mSW50MzJDb25zdGFudChu
b2RlLmNoaWxkMSgpKTsKLSAgICAgICAgICAgICAgICBTcGVjdWxhdGVJbnRlZ2VyT3BlcmFuZCBv
cDIodGhpcywgbm9kZS5jaGlsZDIoKSk7Ci0gICAgICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHJl
c3VsdCh0aGlzKTsKLQotICAgICAgICAgICAgICAgIGlmIChub2RlQ2FuVHJ1bmNhdGVJbnRlZ2Vy
KG5vZGUuYXJpdGhOb2RlRmxhZ3MoKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgbV9qaXQubW92
ZShvcDIuZ3ByKCksIHJlc3VsdC5ncHIoKSk7Ci0gICAgICAgICAgICAgICAgICAgIG1faml0LmFk
ZDMyKEltbTMyKGltbTEpLCByZXN1bHQuZ3ByKCkpOwotICAgICAgICAgICAgICAgIH0gZWxzZQot
ICAgICAgICAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKE92ZXJmbG93LCBKU1ZhbHVlUmVn
cygpLCBOb05vZGUsIG1faml0LmJyYW5jaEFkZDMyKE1hY3JvQXNzZW1ibGVyOjpPdmVyZmxvdywg
b3AyLmdwcigpLCBJbW0zMihpbW0xKSwgcmVzdWx0LmdwcigpKSk7Ci0KLSAgICAgICAgICAgICAg
ICBpbnRlZ2VyUmVzdWx0KHJlc3VsdC5ncHIoKSwgbV9jb21waWxlSW5kZXgpOwotICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIAotICAgICAgICAg
ICAgaWYgKGlzSW50MzJDb25zdGFudChub2RlLmNoaWxkMigpKSkgewotICAgICAgICAgICAgICAg
IFNwZWN1bGF0ZUludGVnZXJPcGVyYW5kIG9wMSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKLSAgICAg
ICAgICAgICAgICBpbnQzMl90IGltbTIgPSB2YWx1ZU9mSW50MzJDb25zdGFudChub2RlLmNoaWxk
MigpKTsKLSAgICAgICAgICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwotICAgICAg
ICAgICAgICAgIAotICAgICAgICAgICAgICAgIGlmIChub2RlQ2FuVHJ1bmNhdGVJbnRlZ2VyKG5v
ZGUuYXJpdGhOb2RlRmxhZ3MoKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgbV9qaXQubW92ZShv
cDEuZ3ByKCksIHJlc3VsdC5ncHIoKSk7Ci0gICAgICAgICAgICAgICAgICAgIG1faml0LmFkZDMy
KEltbTMyKGltbTIpLCByZXN1bHQuZ3ByKCkpOwotICAgICAgICAgICAgICAgIH0gZWxzZQotICAg
ICAgICAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKE92ZXJmbG93LCBKU1ZhbHVlUmVncygp
LCBOb05vZGUsIG1faml0LmJyYW5jaEFkZDMyKE1hY3JvQXNzZW1ibGVyOjpPdmVyZmxvdywgb3Ax
LmdwcigpLCBJbW0zMihpbW0yKSwgcmVzdWx0LmdwcigpKSk7Ci0KLSAgICAgICAgICAgICAgICBp
bnRlZ2VyUmVzdWx0KHJlc3VsdC5ncHIoKSwgbV9jb21waWxlSW5kZXgpOwotICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAg
U3BlY3VsYXRlSW50ZWdlck9wZXJhbmQgb3AxKHRoaXMsIG5vZGUuY2hpbGQxKCkpOwotICAgICAg
ICAgICAgU3BlY3VsYXRlSW50ZWdlck9wZXJhbmQgb3AyKHRoaXMsIG5vZGUuY2hpbGQyKCkpOwot
ICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBvcDEsIG9wMik7Ci0KLSAgICAg
ICAgICAgIEdQUlJlZyBncHIxID0gb3AxLmdwcigpOwotICAgICAgICAgICAgR1BSUmVnIGdwcjIg
PSBvcDIuZ3ByKCk7Ci0gICAgICAgICAgICBHUFJSZWcgZ3ByUmVzdWx0ID0gcmVzdWx0Lmdwcigp
OwotCi0gICAgICAgICAgICBpZiAobm9kZUNhblRydW5jYXRlSW50ZWdlcihub2RlLmFyaXRoTm9k
ZUZsYWdzKCkpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGdwcjEgPT0gZ3ByUmVzdWx0KQotICAg
ICAgICAgICAgICAgICAgICBtX2ppdC5hZGQzMihncHIyLCBncHJSZXN1bHQpOwotICAgICAgICAg
ICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAgICBtX2ppdC5tb3ZlKGdwcjIsIGdwclJl
c3VsdCk7Ci0gICAgICAgICAgICAgICAgICAgIG1faml0LmFkZDMyKGdwcjEsIGdwclJlc3VsdCk7
Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBjaGVjayA9IG1faml0LmJyYW5jaEFkZDMyKE1hY3JvQXNz
ZW1ibGVyOjpPdmVyZmxvdywgZ3ByMSwgZ3ByMiwgZ3ByUmVzdWx0KTsKLSAgICAgICAgICAgICAg
ICAKLSAgICAgICAgICAgICAgICBpZiAoZ3ByMSA9PSBncHJSZXN1bHQpCi0gICAgICAgICAgICAg
ICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soT3ZlcmZsb3csIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwg
Y2hlY2ssIFNwZWN1bGF0aW9uUmVjb3ZlcnkoU3BlY3VsYXRpdmVBZGQsIGdwclJlc3VsdCwgZ3By
MikpOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKGdwcjIgPT0gZ3ByUmVzdWx0KQotICAgICAg
ICAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKE92ZXJmbG93LCBKU1ZhbHVlUmVncygpLCBO
b05vZGUsIGNoZWNrLCBTcGVjdWxhdGlvblJlY292ZXJ5KFNwZWN1bGF0aXZlQWRkLCBncHJSZXN1
bHQsIGdwcjEpKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHNw
ZWN1bGF0aW9uQ2hlY2soT3ZlcmZsb3csIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgY2hlY2spOwot
ICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpbnRlZ2VyUmVzdWx0KGdwclJlc3VsdCwgbV9j
b21waWxlSW5kZXgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgCi0g
ICAgICAgIGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVOdW1iZXIoYXQobm9kZS5jaGlsZDEoKSks
IGF0KG5vZGUuY2hpbGQyKCkpKSkgewotICAgICAgICAgICAgU3BlY3VsYXRlRG91YmxlT3BlcmFu
ZCBvcDEodGhpcywgbm9kZS5jaGlsZDEoKSk7Ci0gICAgICAgICAgICBTcGVjdWxhdGVEb3VibGVP
cGVyYW5kIG9wMih0aGlzLCBub2RlLmNoaWxkMigpKTsKLSAgICAgICAgICAgIEZQUlRlbXBvcmFy
eSByZXN1bHQodGhpcywgb3AxLCBvcDIpOwotCi0gICAgICAgICAgICBGUFJSZWcgcmVnMSA9IG9w
MS5mcHIoKTsKLSAgICAgICAgICAgIEZQUlJlZyByZWcyID0gb3AyLmZwcigpOwotICAgICAgICAg
ICAgbV9qaXQuYWRkRG91YmxlKHJlZzEsIHJlZzIsIHJlc3VsdC5mcHIoKSk7Ci0KLSAgICAgICAg
ICAgIGRvdWJsZVJlc3VsdChyZXN1bHQuZnByKCksIG1fY29tcGlsZUluZGV4KTsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICB9Ci0KLSAgICAgICAgQVNTRVJUKG9wID09IFZhbHVlQWRkKTsK
LSAgICAgICAgY29tcGlsZVZhbHVlQWRkKG5vZGUpOworICAgIGNhc2UgQXJpdGhBZGQ6CisgICAg
ICAgIGNvbXBpbGVBZGQobm9kZSk7CiAgICAgICAgIGJyZWFrOwotICAgIH0KLQotICAgIGNhc2Ug
QXJpdGhTdWI6IHsKLSAgICAgICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZUludGVnZXIoYXQo
bm9kZS5jaGlsZDEoKSksIGF0KG5vZGUuY2hpbGQyKCkpKSAmJiBub2RlLmNhblNwZWN1bGF0ZUlu
dGVnZXIoKSkgewotICAgICAgICAgICAgaWYgKGlzSW50MzJDb25zdGFudChub2RlLmNoaWxkMigp
KSkgewotICAgICAgICAgICAgICAgIFNwZWN1bGF0ZUludGVnZXJPcGVyYW5kIG9wMSh0aGlzLCBu
b2RlLmNoaWxkMSgpKTsKLSAgICAgICAgICAgICAgICBpbnQzMl90IGltbTIgPSB2YWx1ZU9mSW50
MzJDb25zdGFudChub2RlLmNoaWxkMigpKTsKLSAgICAgICAgICAgICAgICBHUFJUZW1wb3Jhcnkg
cmVzdWx0KHRoaXMpOwotCi0gICAgICAgICAgICAgICAgaWYgKG5vZGVDYW5UcnVuY2F0ZUludGVn
ZXIobm9kZS5hcml0aE5vZGVGbGFncygpKSkgewotICAgICAgICAgICAgICAgICAgICBtX2ppdC5t
b3ZlKG9wMS5ncHIoKSwgcmVzdWx0LmdwcigpKTsKLSAgICAgICAgICAgICAgICAgICAgbV9qaXQu
c3ViMzIoSW1tMzIoaW1tMiksIHJlc3VsdC5ncHIoKSk7Ci0gICAgICAgICAgICAgICAgfSBlbHNl
Ci0gICAgICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soT3ZlcmZsb3csIEpTVmFsdWVS
ZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoU3ViMzIoTWFjcm9Bc3NlbWJsZXI6Ok92ZXJmbG93
LCBvcDEuZ3ByKCksIEltbTMyKGltbTIpLCByZXN1bHQuZ3ByKCkpKTsKIAotICAgICAgICAgICAg
ICAgIGludGVnZXJSZXN1bHQocmVzdWx0LmdwcigpLCBtX2NvbXBpbGVJbmRleCk7Ci0gICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgCi0gICAgICAg
ICAgICBTcGVjdWxhdGVJbnRlZ2VyT3BlcmFuZCBvcDEodGhpcywgbm9kZS5jaGlsZDEoKSk7Ci0g
ICAgICAgICAgICBTcGVjdWxhdGVJbnRlZ2VyT3BlcmFuZCBvcDIodGhpcywgbm9kZS5jaGlsZDIo
KSk7Ci0gICAgICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwotCi0gICAgICAgICAg
ICBpZiAobm9kZUNhblRydW5jYXRlSW50ZWdlcihub2RlLmFyaXRoTm9kZUZsYWdzKCkpKSB7Ci0g
ICAgICAgICAgICAgICAgbV9qaXQubW92ZShvcDEuZ3ByKCksIHJlc3VsdC5ncHIoKSk7Ci0gICAg
ICAgICAgICAgICAgbV9qaXQuc3ViMzIob3AyLmdwcigpLCByZXN1bHQuZ3ByKCkpOwotICAgICAg
ICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhPdmVyZmxvdywg
SlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hTdWIzMihNYWNyb0Fzc2VtYmxlcjo6
T3ZlcmZsb3csIG9wMS5ncHIoKSwgb3AyLmdwcigpLCByZXN1bHQuZ3ByKCkpKTsKLQotICAgICAg
ICAgICAgaW50ZWdlclJlc3VsdChyZXN1bHQuZ3ByKCksIG1fY29tcGlsZUluZGV4KTsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBTcGVjdWxhdGVEb3Vi
bGVPcGVyYW5kIG9wMSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKLSAgICAgICAgU3BlY3VsYXRlRG91
YmxlT3BlcmFuZCBvcDIodGhpcywgbm9kZS5jaGlsZDIoKSk7Ci0gICAgICAgIEZQUlRlbXBvcmFy
eSByZXN1bHQodGhpcywgb3AxKTsKLQotICAgICAgICBGUFJSZWcgcmVnMSA9IG9wMS5mcHIoKTsK
LSAgICAgICAgRlBSUmVnIHJlZzIgPSBvcDIuZnByKCk7Ci0gICAgICAgIG1faml0LnN1YkRvdWJs
ZShyZWcxLCByZWcyLCByZXN1bHQuZnByKCkpOwotCi0gICAgICAgIGRvdWJsZVJlc3VsdChyZXN1
bHQuZnByKCksIG1fY29tcGlsZUluZGV4KTsKKyAgICBjYXNlIEFyaXRoU3ViOgorICAgICAgICBj
b21waWxlQXJpdGhTdWIobm9kZSk7CiAgICAgICAgIGJyZWFrOwotICAgIH0KIAotICAgIGNhc2Ug
QXJpdGhNdWw6IHsKKyAgICBjYXNlIEFyaXRoTXVsOgogICAgICAgICBjb21waWxlQXJpdGhNdWwo
bm9kZSk7CiAgICAgICAgIGJyZWFrOwotICAgIH0KIAogICAgIGNhc2UgQXJpdGhEaXY6IHsKICAg
ICAgICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZUludGVnZXIoYXQobm9kZS5jaGlsZDEoKSks
IGF0KG5vZGUuY2hpbGQyKCkpKSAmJiBub2RlLmNhblNwZWN1bGF0ZUludGVnZXIoKSkgewpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJ
KHJldmlzaW9uIDEwNjMzNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTk2LDYgKzIxOTYsMTQ0IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVTb2Z0TW9kdWxvKE4KICNlbmRpZgogfQogCit2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlQWRkKE5vZGUmIG5vZGUpCit7CisgICAgaWYgKG1faml0Lmdy
YXBoKCkuYWRkU2hvdWxkU3BlY3VsYXRlSW50ZWdlcihub2RlLCBtX2ppdC5jb2RlQmxvY2soKSkp
IHsKKyAgICAgICAgaWYgKGlzTnVtYmVyQ29uc3RhbnQobm9kZS5jaGlsZDEoKSkpIHsKKyAgICAg
ICAgICAgIGludDMyX3QgaW1tMSA9IHZhbHVlT2ZOdW1iZXJDb25zdGFudEFzSW50MzIobm9kZS5j
aGlsZDEoKSk7CisgICAgICAgICAgICBTcGVjdWxhdGVJbnRlZ2VyT3BlcmFuZCBvcDIodGhpcywg
bm9kZS5jaGlsZDIoKSk7CisgICAgICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwor
CisgICAgICAgICAgICBpZiAobm9kZUNhblRydW5jYXRlSW50ZWdlcihub2RlLmFyaXRoTm9kZUZs
YWdzKCkpKSB7CisgICAgICAgICAgICAgICAgbV9qaXQubW92ZShvcDIuZ3ByKCksIHJlc3VsdC5n
cHIoKSk7CisgICAgICAgICAgICAgICAgbV9qaXQuYWRkMzIoSW1tMzIoaW1tMSksIHJlc3VsdC5n
cHIoKSk7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBzcGVjdWxhdGlvbkNo
ZWNrKE92ZXJmbG93LCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaEFkZDMyKE1h
Y3JvQXNzZW1ibGVyOjpPdmVyZmxvdywgb3AyLmdwcigpLCBJbW0zMihpbW0xKSwgcmVzdWx0Lmdw
cigpKSk7CisKKyAgICAgICAgICAgIGludGVnZXJSZXN1bHQocmVzdWx0LmdwcigpLCBtX2NvbXBp
bGVJbmRleCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICAKKyAgICAgICAgaWYgKGlzTnVtYmVyQ29uc3RhbnQobm9kZS5jaGlsZDIoKSkpIHsKKyAgICAg
ICAgICAgIFNwZWN1bGF0ZUludGVnZXJPcGVyYW5kIG9wMSh0aGlzLCBub2RlLmNoaWxkMSgpKTsK
KyAgICAgICAgICAgIGludDMyX3QgaW1tMiA9IHZhbHVlT2ZOdW1iZXJDb25zdGFudEFzSW50MzIo
bm9kZS5jaGlsZDIoKSk7CisgICAgICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwor
ICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKG5vZGVDYW5UcnVuY2F0ZUludGVnZXIo
bm9kZS5hcml0aE5vZGVGbGFncygpKSkgeworICAgICAgICAgICAgICAgIG1faml0Lm1vdmUob3Ax
LmdwcigpLCByZXN1bHQuZ3ByKCkpOworICAgICAgICAgICAgICAgIG1faml0LmFkZDMyKEltbTMy
KGltbTIpLCByZXN1bHQuZ3ByKCkpOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAg
ICAgc3BlY3VsYXRpb25DaGVjayhPdmVyZmxvdywgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2pp
dC5icmFuY2hBZGQzMihNYWNyb0Fzc2VtYmxlcjo6T3ZlcmZsb3csIG9wMS5ncHIoKSwgSW1tMzIo
aW1tMiksIHJlc3VsdC5ncHIoKSkpOworCisgICAgICAgICAgICBpbnRlZ2VyUmVzdWx0KHJlc3Vs
dC5ncHIoKSwgbV9jb21waWxlSW5kZXgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisgICAgICAgICAgICAgICAgCisgICAgICAgIFNwZWN1bGF0ZUludGVnZXJPcGVyYW5kIG9wMSh0
aGlzLCBub2RlLmNoaWxkMSgpKTsKKyAgICAgICAgU3BlY3VsYXRlSW50ZWdlck9wZXJhbmQgb3Ay
KHRoaXMsIG5vZGUuY2hpbGQyKCkpOworICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMs
IG9wMSwgb3AyKTsKKworICAgICAgICBHUFJSZWcgZ3ByMSA9IG9wMS5ncHIoKTsKKyAgICAgICAg
R1BSUmVnIGdwcjIgPSBvcDIuZ3ByKCk7CisgICAgICAgIEdQUlJlZyBncHJSZXN1bHQgPSByZXN1
bHQuZ3ByKCk7CisKKyAgICAgICAgaWYgKG5vZGVDYW5UcnVuY2F0ZUludGVnZXIobm9kZS5hcml0
aE5vZGVGbGFncygpKSkgeworICAgICAgICAgICAgaWYgKGdwcjEgPT0gZ3ByUmVzdWx0KQorICAg
ICAgICAgICAgICAgIG1faml0LmFkZDMyKGdwcjIsIGdwclJlc3VsdCk7CisgICAgICAgICAgICBl
bHNlIHsKKyAgICAgICAgICAgICAgICBtX2ppdC5tb3ZlKGdwcjIsIGdwclJlc3VsdCk7CisgICAg
ICAgICAgICAgICAgbV9qaXQuYWRkMzIoZ3ByMSwgZ3ByUmVzdWx0KTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGNoZWNr
ID0gbV9qaXQuYnJhbmNoQWRkMzIoTWFjcm9Bc3NlbWJsZXI6Ok92ZXJmbG93LCBncHIxLCBncHIy
LCBncHJSZXN1bHQpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKGdwcjEgPT0g
Z3ByUmVzdWx0KQorICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soT3ZlcmZsb3csIEpT
VmFsdWVSZWdzKCksIE5vTm9kZSwgY2hlY2ssIFNwZWN1bGF0aW9uUmVjb3ZlcnkoU3BlY3VsYXRp
dmVBZGQsIGdwclJlc3VsdCwgZ3ByMikpOworICAgICAgICAgICAgZWxzZSBpZiAoZ3ByMiA9PSBn
cHJSZXN1bHQpCisgICAgICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhPdmVyZmxvdywgSlNW
YWx1ZVJlZ3MoKSwgTm9Ob2RlLCBjaGVjaywgU3BlY3VsYXRpb25SZWNvdmVyeShTcGVjdWxhdGl2
ZUFkZCwgZ3ByUmVzdWx0LCBncHIxKSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgc3BlY3VsYXRpb25DaGVjayhPdmVyZmxvdywgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBjaGVj
ayk7CisgICAgICAgIH0KKworICAgICAgICBpbnRlZ2VyUmVzdWx0KGdwclJlc3VsdCwgbV9jb21w
aWxlSW5kZXgpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgICAgICAKKyAgICBpZiAoTm9k
ZTo6c2hvdWxkU3BlY3VsYXRlTnVtYmVyKGF0KG5vZGUuY2hpbGQxKCkpLCBhdChub2RlLmNoaWxk
MigpKSkpIHsKKyAgICAgICAgU3BlY3VsYXRlRG91YmxlT3BlcmFuZCBvcDEodGhpcywgbm9kZS5j
aGlsZDEoKSk7CisgICAgICAgIFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQgb3AyKHRoaXMsIG5vZGUu
Y2hpbGQyKCkpOworICAgICAgICBGUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIG9wMSwgb3AyKTsK
KworICAgICAgICBGUFJSZWcgcmVnMSA9IG9wMS5mcHIoKTsKKyAgICAgICAgRlBSUmVnIHJlZzIg
PSBvcDIuZnByKCk7CisgICAgICAgIG1faml0LmFkZERvdWJsZShyZWcxLCByZWcyLCByZXN1bHQu
ZnByKCkpOworCisgICAgICAgIGRvdWJsZVJlc3VsdChyZXN1bHQuZnByKCksIG1fY29tcGlsZUlu
ZGV4KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEFTU0VSVChub2RlLm9wID09IFZh
bHVlQWRkKTsKKyAgICBjb21waWxlVmFsdWVBZGQobm9kZSk7Cit9CisKK3ZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVBcml0aFN1YihOb2RlJiBub2RlKQoreworICAgIGlmIChtX2ppdC5ncmFw
aCgpLmFkZFNob3VsZFNwZWN1bGF0ZUludGVnZXIobm9kZSwgbV9qaXQuY29kZUJsb2NrKCkpKSB7
CisgICAgICAgIGlmIChpc051bWJlckNvbnN0YW50KG5vZGUuY2hpbGQyKCkpKSB7CisgICAgICAg
ICAgICBTcGVjdWxhdGVJbnRlZ2VyT3BlcmFuZCBvcDEodGhpcywgbm9kZS5jaGlsZDEoKSk7Cisg
ICAgICAgICAgICBpbnQzMl90IGltbTIgPSB2YWx1ZU9mTnVtYmVyQ29uc3RhbnRBc0ludDMyKG5v
ZGUuY2hpbGQyKCkpOworICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKwor
ICAgICAgICAgICAgaWYgKG5vZGVDYW5UcnVuY2F0ZUludGVnZXIobm9kZS5hcml0aE5vZGVGbGFn
cygpKSkgeworICAgICAgICAgICAgICAgIG1faml0Lm1vdmUob3AxLmdwcigpLCByZXN1bHQuZ3By
KCkpOworICAgICAgICAgICAgICAgIG1faml0LnN1YjMyKEltbTMyKGltbTIpLCByZXN1bHQuZ3By
KCkpOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVj
ayhPdmVyZmxvdywgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hTdWIzMihNYWNy
b0Fzc2VtYmxlcjo6T3ZlcmZsb3csIG9wMS5ncHIoKSwgSW1tMzIoaW1tMiksIHJlc3VsdC5ncHIo
KSkpOworCisgICAgICAgICAgICBpbnRlZ2VyUmVzdWx0KHJlc3VsdC5ncHIoKSwgbV9jb21waWxl
SW5kZXgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgICAgICAKKyAg
ICAgICAgaWYgKGlzTnVtYmVyQ29uc3RhbnQobm9kZS5jaGlsZDEoKSkpIHsKKyAgICAgICAgICAg
IGludDMyX3QgaW1tMSA9IHZhbHVlT2ZOdW1iZXJDb25zdGFudEFzSW50MzIobm9kZS5jaGlsZDEo
KSk7CisgICAgICAgICAgICBTcGVjdWxhdGVJbnRlZ2VyT3BlcmFuZCBvcDIodGhpcywgbm9kZS5j
aGlsZDIoKSk7CisgICAgICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOworICAgICAg
ICAgICAgICAgIAorICAgICAgICAgICAgbV9qaXQubW92ZShJbW0zMihpbW0xKSwgcmVzdWx0Lmdw
cigpKTsKKyAgICAgICAgICAgIGlmIChub2RlQ2FuVHJ1bmNhdGVJbnRlZ2VyKG5vZGUuYXJpdGhO
b2RlRmxhZ3MoKSkpCisgICAgICAgICAgICAgICAgbV9qaXQuc3ViMzIob3AyLmdwcigpLCByZXN1
bHQuZ3ByKCkpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9u
Q2hlY2soT3ZlcmZsb3csIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoU3ViMzIo
TWFjcm9Bc3NlbWJsZXI6Ok92ZXJmbG93LCBvcDIuZ3ByKCksIHJlc3VsdC5ncHIoKSkpOworICAg
ICAgICAgICAgICAgIAorICAgICAgICAgICAgaW50ZWdlclJlc3VsdChyZXN1bHQuZ3ByKCksIG1f
Y29tcGlsZUluZGV4KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAg
ICAgCisgICAgICAgIFNwZWN1bGF0ZUludGVnZXJPcGVyYW5kIG9wMSh0aGlzLCBub2RlLmNoaWxk
MSgpKTsKKyAgICAgICAgU3BlY3VsYXRlSW50ZWdlck9wZXJhbmQgb3AyKHRoaXMsIG5vZGUuY2hp
bGQyKCkpOworICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOworCisgICAgICAgIGlm
IChub2RlQ2FuVHJ1bmNhdGVJbnRlZ2VyKG5vZGUuYXJpdGhOb2RlRmxhZ3MoKSkpIHsKKyAgICAg
ICAgICAgIG1faml0Lm1vdmUob3AxLmdwcigpLCByZXN1bHQuZ3ByKCkpOworICAgICAgICAgICAg
bV9qaXQuc3ViMzIob3AyLmdwcigpLCByZXN1bHQuZ3ByKCkpOworICAgICAgICB9IGVsc2UKKyAg
ICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soT3ZlcmZsb3csIEpTVmFsdWVSZWdzKCksIE5vTm9k
ZSwgbV9qaXQuYnJhbmNoU3ViMzIoTWFjcm9Bc3NlbWJsZXI6Ok92ZXJmbG93LCBvcDEuZ3ByKCks
IG9wMi5ncHIoKSwgcmVzdWx0LmdwcigpKSk7CisKKyAgICAgICAgaW50ZWdlclJlc3VsdChyZXN1
bHQuZ3ByKCksIG1fY29tcGlsZUluZGV4KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAg
ICAgCisgICAgU3BlY3VsYXRlRG91YmxlT3BlcmFuZCBvcDEodGhpcywgbm9kZS5jaGlsZDEoKSk7
CisgICAgU3BlY3VsYXRlRG91YmxlT3BlcmFuZCBvcDIodGhpcywgbm9kZS5jaGlsZDIoKSk7Cisg
ICAgRlBSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBvcDEpOworCisgICAgRlBSUmVnIHJlZzEgPSBv
cDEuZnByKCk7CisgICAgRlBSUmVnIHJlZzIgPSBvcDIuZnByKCk7CisgICAgbV9qaXQuc3ViRG91
YmxlKHJlZzEsIHJlZzIsIHJlc3VsdC5mcHIoKSk7CisKKyAgICBkb3VibGVSZXN1bHQocmVzdWx0
LmZwcigpLCBtX2NvbXBpbGVJbmRleCk7Cit9CisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVBcml0aE11bChOb2RlJiBub2RlKQogewogICAgIGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVJ
bnRlZ2VyKGF0KG5vZGUuY2hpbGQxKCkpLCBhdChub2RlLmNoaWxkMigpKSkgJiYgbm9kZS5jYW5T
cGVjdWxhdGVJbnRlZ2VyKCkpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmgJKHJldmlzaW9uIDEwNjMzNykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkod29ya2luZyBjb3B5KQpAQCAtNzMwLDYg
KzczMCwxMiBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNGdW5jdGlvbkNvbnN0YW50KE5vZGVJbmRl
eCBub2RlSW5kZXgpIHsgcmV0dXJuIG1faml0LmlzRnVuY3Rpb25Db25zdGFudChub2RlSW5kZXgp
OyB9CiAgICAgaW50MzJfdCB2YWx1ZU9mSW50MzJDb25zdGFudChOb2RlSW5kZXggbm9kZUluZGV4
KSB7IHJldHVybiBtX2ppdC52YWx1ZU9mSW50MzJDb25zdGFudChub2RlSW5kZXgpOyB9CiAgICAg
ZG91YmxlIHZhbHVlT2ZOdW1iZXJDb25zdGFudChOb2RlSW5kZXggbm9kZUluZGV4KSB7IHJldHVy
biBtX2ppdC52YWx1ZU9mTnVtYmVyQ29uc3RhbnQobm9kZUluZGV4KTsgfQorICAgIGludDMyX3Qg
dmFsdWVPZk51bWJlckNvbnN0YW50QXNJbnQzMihOb2RlSW5kZXggbm9kZUluZGV4KQorICAgIHsK
KyAgICAgICAgaWYgKGlzSW50MzJDb25zdGFudChub2RlSW5kZXgpKQorICAgICAgICAgICAgcmV0
dXJuIHZhbHVlT2ZJbnQzMkNvbnN0YW50KG5vZGVJbmRleCk7CisgICAgICAgIHJldHVybiBKU0M6
OnRvSW50MzIodmFsdWVPZk51bWJlckNvbnN0YW50KG5vZGVJbmRleCkpOworICAgIH0KICNpZiBV
U0UoSlNWQUxVRTMyXzY0KQogICAgIHZvaWQqIGFkZHJlc3NPZkRvdWJsZUNvbnN0YW50KE5vZGVJ
bmRleCBub2RlSW5kZXgpIHsgcmV0dXJuIG1faml0LmFkZHJlc3NPZkRvdWJsZUNvbnN0YW50KG5v
ZGVJbmRleCk7IH0KICNlbmRpZgpAQCAtMTUxNiw2ICsxNTIyLDggQEAgcHJpdmF0ZToKICAgICB2
b2lkIGNvbXBpbGVVSW50MzJUb051bWJlcihOb2RlJik7CiAgICAgdm9pZCBjb21waWxlR2V0QnlW
YWxPbkJ5dGVBcnJheShOb2RlJik7CiAgICAgdm9pZCBjb21waWxlUHV0QnlWYWxGb3JCeXRlQXJy
YXkoR1BSUmVnIGJhc2UsIEdQUlJlZyBwcm9wZXJ0eSwgTm9kZSYpOworICAgIHZvaWQgY29tcGls
ZUFkZChOb2RlJik7CisgICAgdm9pZCBjb21waWxlQXJpdGhTdWIoTm9kZSYpOwogICAgIHZvaWQg
Y29tcGlsZUFyaXRoTXVsKE5vZGUmKTsKICAgICB2b2lkIGNvbXBpbGVBcml0aE1vZChOb2RlJik7
CiAgICAgdm9pZCBjb21waWxlU29mdE1vZHVsbyhOb2RlJik7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1ZhbHVlSW5saW5lTWV0aG9kcy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWVJbmxpbmVNZXRob2RzLmgJKHJldmlz
aW9uIDEwNjMzNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWVJbmxp
bmVNZXRob2RzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3Nyw2ICs0NzcsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKIAogICAgIGlubGluZSBkb3VibGUgSlNWYWx1ZTo6YXNEb3VibGUoKSBjb25zdAogICAg
IHsKKyAgICAgICAgQVNTRVJUKGlzRG91YmxlKCkpOwogICAgICAgICByZXR1cm4gcmVpbnRlcnBy
ZXRJbnRwdHJUb0RvdWJsZSh1LmFzSW50NjQgLSBEb3VibGVFbmNvZGVPZmZzZXQpOwogICAgIH0K
IAo=
</data>
<flag name="review"
          id="126296"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>