<?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>78954</bug_id>
          
          <creation_ts>2012-02-17 21:41:32 -0800</creation_ts>
          <short_desc>DFG::Graph should have references to JSGlobalData, the CodeBlock being compiled, and the CodeBlock that was used for profiling</short_desc>
          <delta_ts>2012-02-18 00:03:30 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>559718</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-02-17 21:41:32 -0800</bug_when>
    <thetext>This would eliminate a bunch of places where we&apos;re doing multiple indirections to pass around JSGlobalData and two CodeBlocks just because having a reference to a Graph isn&apos;t enough.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>559719</commentid>
    <comment_count>1</comment_count>
      <attachid>127693</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-02-17 21:44:32 -0800</bug_when>
    <thetext>Created attachment 127693
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>559741</commentid>
    <comment_count>2</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-02-18 00:03:30 -0800</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/108154</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127693</attachid>
            <date>2012-02-17 21:44:32 -0800</date>
            <delta_ts>2012-02-17 23:04:37 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>fewerparams_patch_1.diff</filename>
            <type>text/plain</type>
            <size>40406</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA4MTUyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg0IEBA
CisyMDEyLTAyLTE3ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
REZHOjpHcmFwaCBzaG91bGQgaGF2ZSByZWZlcmVuY2VzIHRvIEpTR2xvYmFsRGF0YSwgdGhlIENv
ZGVCbG9jayBiZWluZyBjb21waWxlZCwgYW5kCisgICAgICAgIHRoZSBDb2RlQmxvY2sgdGhhdCB3
YXMgdXNlZCBmb3IgcHJvZmlsaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD03ODk1NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6OmJhc2Vs
aW5lQ29kZUJsb2NrRm9yT3JpZ2luQW5kQmFzZWxpbmVDb2RlQmxvY2spOgorICAgICAgICAoSlND
KToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6QWJzdHJhY3RTdGF0ZTo6QWJzdHJhY3RTdGF0ZSk6CisgICAgICAgIChKU0M6OkRGRzo6QWJz
dHJhY3RTdGF0ZTo6ZXhlY3V0ZSk6CisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0U3RhdGUuaDoK
KyAgICAgICAgKiBkZmcvREZHQXNzZW1ibHlIZWxwZXJzLmg6CisgICAgICAgIChBc3NlbWJseUhl
bHBlcnMpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OkJ5dGVDb2RlUGFyc2VyKToKKyAgICAgICAgKEpTQzo6
REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6cGFy
c2UpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5oOgorICAgICAgICAoREZHKToK
KyAgICAgICAgKiBkZmcvREZHRHJpdmVyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpjb21waWxl
KToKKyAgICAgICAgKiBkZmcvREZHR3JhcGguY3BwOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBo
OjpkdW1wKToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6cHJlZGljdEFyZ3VtZW50VHlwZXMp
OgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5oOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjpH
cmFwaCk6CisgICAgICAgIChHcmFwaCk6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmdldEpT
Q29uc3RhbnRQcmVkaWN0aW9uKToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6YWRkU2hvdWxk
U3BlY3VsYXRlSW50ZWdlcik6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmlzSW50MzJDb25z
dGFudCk6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmlzRG91YmxlQ29uc3RhbnQpOgorICAg
ICAgICAoSlNDOjpERkc6OkdyYXBoOjppc051bWJlckNvbnN0YW50KToKKyAgICAgICAgKEpTQzo6
REZHOjpHcmFwaDo6aXNCb29sZWFuQ29uc3RhbnQpOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBo
Ojppc0Z1bmN0aW9uQ29uc3RhbnQpOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjp2YWx1ZU9m
SlNDb25zdGFudCk6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OnZhbHVlT2ZJbnQzMkNvbnN0
YW50KToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6dmFsdWVPZk51bWJlckNvbnN0YW50KToK
KyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6dmFsdWVPZkJvb2xlYW5Db25zdGFudCk6CisgICAg
ICAgIChKU0M6OkRGRzo6R3JhcGg6OnZhbHVlT2ZGdW5jdGlvbkNvbnN0YW50KToKKyAgICAgICAg
KEpTQzo6REZHOjpHcmFwaDo6YmFzZWxpbmVDb2RlQmxvY2tGb3IpOgorICAgICAgICAoSlNDOjpE
Rkc6OkdyYXBoOjp2YWx1ZVByb2ZpbGVGb3IpOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjph
ZGRJbW1lZGlhdGVTaG91bGRTcGVjdWxhdGVJbnRlZ2VyKToKKyAgICAgICAgKiBkZmcvREZHSklU
Q29tcGlsZXIuaDoKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6SklUQ29tcGlsZXIp
OgorICAgICAgICAoSklUQ29tcGlsZXIpOgorICAgICAgICAqIGRmZy9ERkdPU1JFeGl0LmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpPU1JFeGl0Ojpjb25zaWRlckFkZGluZ0FzRnJlcXVlbnRFeGl0
U2l0ZVNsb3cpOgorICAgICAgICAqIGRmZy9ERkdQcm9wYWdhdG9yLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpQcm9wYWdhdG9yOjpQcm9wYWdhdG9yKToKKyAgICAgICAgKEpTQzo6REZHOjpQcm9w
YWdhdG9yOjppc05vdE5lZ1plcm8pOgorICAgICAgICAoSlNDOjpERkc6OlByb3BhZ2F0b3I6Omlz
Tm90WmVybyk6CisgICAgICAgIChKU0M6OkRGRzo6UHJvcGFnYXRvcjo6cHJvcGFnYXRlTm9kZVBy
ZWRpY3Rpb25zKToKKyAgICAgICAgKEpTQzo6REZHOjpQcm9wYWdhdG9yOjpkb1JvdW5kT2ZEb3Vi
bGVWb3RpbmcpOgorICAgICAgICAoSlNDOjpERkc6OlByb3BhZ2F0b3I6Omdsb2JhbENGQSk6Cisg
ICAgICAgIChKU0M6OkRGRzo6cHJvcGFnYXRlKToKKyAgICAgICAgKiBkZmcvREZHUHJvcGFnYXRv
ci5oOgorICAgICAgICAoREZHKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21wdXRlVmFsdWVSZWNvdmVy
eUZvcik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBZGQpOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJpdGhTdWIpOgorICAg
ICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjppc0NvbnN0YW50KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJ
VDo6aXNKU0NvbnN0YW50KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6aXNJ
bnQzMkNvbnN0YW50KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6aXNEb3Vi
bGVDb25zdGFudCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmlzTnVtYmVy
Q29uc3RhbnQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjppc0Jvb2xlYW5D
b25zdGFudCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmlzRnVuY3Rpb25D
b25zdGFudCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OnZhbHVlT2ZJbnQz
MkNvbnN0YW50KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6dmFsdWVPZk51
bWJlckNvbnN0YW50KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6dmFsdWVP
ZkpTQ29uc3RhbnQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjp2YWx1ZU9m
Qm9vbGVhbkNvbnN0YW50KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6dmFs
dWVPZkZ1bmN0aW9uQ29uc3RhbnQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
OjpzcGVjdWxhdGlvbkNoZWNrKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
U3BlY3VsYXRpdmVKSVQpOgorCiAyMDEyLTAyLTE3ICBLYWxldiBMZW1iZXIgIDxrYWxldmxlbWJl
ckBnbWFpbC5jb20+CiAKICAgICAgICAgUmVtb3ZlIHVudXNlZCBwYXJhbWV0ZXJzIGZyb20gV1RG
IHRocmVhZGluZyBBUEkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmgJKHJldmlzaW9uIDEwODE1MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtMTMzMSw2ICsxMzMxLDE3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICBib29sIG1fb2xkVmFsdWVPZlNob3VsZERpc2NhcmRCeXRl
Y29kZTsKICAgICB9OwogCisgICAgaW5saW5lIENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2tG
b3JPcmlnaW5BbmRCYXNlbGluZUNvZGVCbG9jayhjb25zdCBDb2RlT3JpZ2luJiBjb2RlT3JpZ2lu
LCBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrKQorICAgIHsKKyAgICAgICAgaWYgKGNvZGVP
cmlnaW4uaW5saW5lQ2FsbEZyYW1lKSB7CisgICAgICAgICAgICBFeGVjdXRhYmxlQmFzZSogZXhl
Y3V0YWJsZSA9IGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lLT5leGVjdXRhYmxlLmdldCgpOwor
ICAgICAgICAgICAgQVNTRVJUKGV4ZWN1dGFibGUtPnN0cnVjdHVyZSgpLT5jbGFzc0luZm8oKSA9
PSAmRnVuY3Rpb25FeGVjdXRhYmxlOjpzX2luZm8pOworICAgICAgICAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGV4ZWN1dGFibGUpLT5iYXNlbGluZUNvZGVCbG9j
a0Zvcihjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZS0+aXNDYWxsID8gQ29kZUZvckNhbGwgOiBD
b2RlRm9yQ29uc3RydWN0KTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gYmFzZWxpbmVDb2Rl
QmxvY2s7CisgICAgfQorICAgIAorCiAgICAgaW5saW5lIFJlZ2lzdGVyJiBFeGVjU3RhdGU6OnIo
aW50IGluZGV4KQogICAgIHsKICAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSB0aGlzLT5j
b2RlQmxvY2soKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RT
dGF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0
cmFjdFN0YXRlLmNwcAkocmV2aXNpb24gMTA4MTUyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsMTAgKzQ4LDEw
IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICNkZWZpbmUgRkxBR19GT1JfTUVS
R0VfVE9fU1VDQ0VTU09SUyAgIDIwCiAjZGVmaW5lIEZMQUdfRk9SX1NUUlVDVFVSRV9DTE9CQkVS
SU5HICAyMQogCi1BYnN0cmFjdFN0YXRlOjpBYnN0cmFjdFN0YXRlKENvZGVCbG9jayogY29kZUJs
b2NrLCBHcmFwaCYgZ3JhcGgpCi0gICAgOiBtX2NvZGVCbG9jayhjb2RlQmxvY2spCitBYnN0cmFj
dFN0YXRlOjpBYnN0cmFjdFN0YXRlKEdyYXBoJiBncmFwaCkKKyAgICA6IG1fY29kZUJsb2NrKGdy
YXBoLm1fY29kZUJsb2NrKQogICAgICwgbV9ncmFwaChncmFwaCkKLSAgICAsIG1fdmFyaWFibGVz
KGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpLCBncmFwaC5tX2xvY2FsVmFycykKKyAgICAsIG1f
dmFyaWFibGVzKG1fY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCksIGdyYXBoLm1fbG9jYWxWYXJz
KQogICAgICwgbV9ibG9jaygwKQogewogICAgIHNpemVfdCBtYXhCbG9ja1NpemUgPSAwOwpAQCAt
MjA1LDcgKzIwNSw3IEBAIGJvb2wgQWJzdHJhY3RTdGF0ZTo6ZXhlY3V0ZShOb2RlSW5kZXggbm8K
ICAgICBzd2l0Y2ggKG5vZGUub3ApIHsKICAgICBjYXNlIEpTQ29uc3RhbnQ6CiAgICAgY2FzZSBX
ZWFrSlNDb25zdGFudDogewotICAgICAgICBKU1ZhbHVlIHZhbHVlID0gbV9ncmFwaC52YWx1ZU9m
SlNDb25zdGFudChtX2NvZGVCbG9jaywgbm9kZUluZGV4KTsKKyAgICAgICAgSlNWYWx1ZSB2YWx1
ZSA9IG1fZ3JhcGgudmFsdWVPZkpTQ29uc3RhbnQobm9kZUluZGV4KTsKICAgICAgICAgLy8gSGF2
ZSB0byBiZSBjYXJlZnVsIGhlcmUhIEl0J3MgdGVtcHRpbmcgdG8gY2FsbCBzZXQodmFsdWUpLCBi
dXQKICAgICAgICAgLy8gdGhhdCB3b3VsZCBiZSB3cm9uZywgc2luY2UgdGhhdCB3b3VsZCBjb25z
dGl0dXRlIGEgcHJvb2YgdGhhdCB0aGlzCiAgICAgICAgIC8vIHZhbHVlIHdpbGwgYWx3YXlzIGhh
dmUgdGhlIHNhbWUgc3RydWN0dXJlLiBUaGUgd2hvbGUgcG9pbnQgb2YgYSB2YWx1ZQpAQCAtMjc2
LDcgKzI3Niw3IEBAIGJvb2wgQWJzdHJhY3RTdGF0ZTo6ZXhlY3V0ZShOb2RlSW5kZXggbm8KICAg
ICAgICAgICAgIAogICAgIGNhc2UgVmFsdWVBZGQ6CiAgICAgY2FzZSBBcml0aEFkZDogewotICAg
ICAgICBpZiAobV9ncmFwaC5hZGRTaG91bGRTcGVjdWxhdGVJbnRlZ2VyKG5vZGUsIG1fY29kZUJs
b2NrKSkgeworICAgICAgICBpZiAobV9ncmFwaC5hZGRTaG91bGRTcGVjdWxhdGVJbnRlZ2VyKG5v
ZGUpKSB7CiAgICAgICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZpbHRlcihQcmVkaWN0
SW50MzIpOwogICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMigpKS5maWx0ZXIoUHJlZGlj
dEludDMyKTsKICAgICAgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5zZXQoUHJlZGljdEludDMy
KTsKQEAgLTI5OSw3ICsyOTksNyBAQCBib29sIEFic3RyYWN0U3RhdGU6OmV4ZWN1dGUoTm9kZUlu
ZGV4IG5vCiAgICAgfQogICAgICAgICAgICAgCiAgICAgY2FzZSBBcml0aFN1YjogewotICAgICAg
ICBpZiAobV9ncmFwaC5hZGRTaG91bGRTcGVjdWxhdGVJbnRlZ2VyKG5vZGUsIG1fY29kZUJsb2Nr
KSkgeworICAgICAgICBpZiAobV9ncmFwaC5hZGRTaG91bGRTcGVjdWxhdGVJbnRlZ2VyKG5vZGUp
KSB7CiAgICAgICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZpbHRlcihQcmVkaWN0SW50
MzIpOwogICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMigpKS5maWx0ZXIoUHJlZGljdElu
dDMyKTsKICAgICAgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5zZXQoUHJlZGljdEludDMyKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RTdGF0ZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RTdGF0ZS5oCShy
ZXZpc2lvbiAxMDgxNTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0
U3RhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtOTIsNyArOTIsNyBAQCBwdWJsaWM6CiAgICAgICAg
IE1lcmdlVG9TdWNjZXNzb3JzCiAgICAgfTsKICAgICAKLSAgICBBYnN0cmFjdFN0YXRlKENvZGVC
bG9jayosIEdyYXBoJik7CisgICAgQWJzdHJhY3RTdGF0ZShHcmFwaCYpOwogICAgIAogICAgIH5B
YnN0cmFjdFN0YXRlKCk7CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Fzc2VtYmx5SGVscGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQXNzZW1ibHlIZWxwZXJzLmgJKHJldmlzaW9uIDEwODE1MikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQXNzZW1ibHlIZWxwZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4
NywxNiArMjg3LDYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gY29kZU9yaWdpbi5pbmxpbmVD
YWxsRnJhbWUtPmNhbGxlZS0+anNFeGVjdXRhYmxlKCktPmlzU3RyaWN0TW9kZSgpOwogICAgIH0K
ICAgICAKLSAgICBzdGF0aWMgQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9ja0Zvck9yaWdpbkFu
ZEJhc2VsaW5lQ29kZUJsb2NrKGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4sIENvZGVCbG9j
ayogYmFzZWxpbmVDb2RlQmxvY2spCi0gICAgewotICAgICAgICBpZiAoY29kZU9yaWdpbi5pbmxp
bmVDYWxsRnJhbWUpIHsKLSAgICAgICAgICAgIEV4ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlID0g
Y29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUtPmV4ZWN1dGFibGUuZ2V0KCk7Ci0gICAgICAgICAg
ICBBU1NFUlQoZXhlY3V0YWJsZS0+c3RydWN0dXJlKCktPmNsYXNzSW5mbygpID09ICZGdW5jdGlv
bkV4ZWN1dGFibGU6OnNfaW5mbyk7Ci0gICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RnVu
Y3Rpb25FeGVjdXRhYmxlKj4oZXhlY3V0YWJsZSktPmJhc2VsaW5lQ29kZUJsb2NrRm9yKGNvZGVP
cmlnaW4uaW5saW5lQ2FsbEZyYW1lLT5pc0NhbGwgPyBDb2RlRm9yQ2FsbCA6IENvZGVGb3JDb25z
dHJ1Y3QpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBiYXNlbGluZUNvZGVCbG9jazsKLSAg
ICB9Ci0gICAgCiAgICAgQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9ja0Zvcihjb25zdCBDb2Rl
T3JpZ2luJiBjb2RlT3JpZ2luKQogICAgIHsKICAgICAgICAgcmV0dXJuIGJhc2VsaW5lQ29kZUJs
b2NrRm9yT3JpZ2luQW5kQmFzZWxpbmVDb2RlQmxvY2soY29kZU9yaWdpbiwgYmFzZWxpbmVDb2Rl
QmxvY2soKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFy
c2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVD
b2RlUGFyc2VyLmNwcAkocmV2aXNpb24gMTA4MTUyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDEwICs0NSwx
MCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAvLyBUaGlzIGNsYXNzIGlzIHVz
ZWQgdG8gY29tcGlsZSB0aGUgZGF0YWZsb3cgZ3JhcGggZnJvbSBhIENvZGVCbG9jay4KIGNsYXNz
IEJ5dGVDb2RlUGFyc2VyIHsKIHB1YmxpYzoKLSAgICBCeXRlQ29kZVBhcnNlcihKU0dsb2JhbERh
dGEqIGdsb2JhbERhdGEsIENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlQmxvY2sqIHByb2ZpbGVk
QmxvY2ssIEdyYXBoJiBncmFwaCkKLSAgICAgICAgOiBtX2dsb2JhbERhdGEoZ2xvYmFsRGF0YSkK
LSAgICAgICAgLCBtX2NvZGVCbG9jayhjb2RlQmxvY2spCi0gICAgICAgICwgbV9wcm9maWxlZEJs
b2NrKHByb2ZpbGVkQmxvY2spCisgICAgQnl0ZUNvZGVQYXJzZXIoR3JhcGgmIGdyYXBoKQorICAg
ICAgICA6IG1fZ2xvYmFsRGF0YSgmZ3JhcGgubV9nbG9iYWxEYXRhKQorICAgICAgICAsIG1fY29k
ZUJsb2NrKGdyYXBoLm1fY29kZUJsb2NrKQorICAgICAgICAsIG1fcHJvZmlsZWRCbG9jayhncmFw
aC5tX3Byb2ZpbGVkQmxvY2spCiAgICAgICAgICwgbV9ncmFwaChncmFwaCkKICAgICAgICAgLCBt
X2N1cnJlbnRCbG9jaygwKQogICAgICAgICAsIG1fY3VycmVudEluZGV4KDApCkBAIC01NywxMCAr
NTcsMTAgQEAgcHVibGljOgogICAgICAgICAsIG1fY29uc3RhbnROdWxsKFVJTlRfTUFYKQogICAg
ICAgICAsIG1fY29uc3RhbnROYU4oVUlOVF9NQVgpCiAgICAgICAgICwgbV9jb25zdGFudDEoVUlO
VF9NQVgpCi0gICAgICAgICwgbV9jb25zdGFudHMoY29kZUJsb2NrLT5udW1iZXJPZkNvbnN0YW50
UmVnaXN0ZXJzKCkpCi0gICAgICAgICwgbV9udW1Bcmd1bWVudHMoY29kZUJsb2NrLT5udW1QYXJh
bWV0ZXJzKCkpCi0gICAgICAgICwgbV9udW1Mb2NhbHMoY29kZUJsb2NrLT5tX251bUNhbGxlZVJl
Z2lzdGVycykKLSAgICAgICAgLCBtX3ByZXNlcnZlZFZhcnMoY29kZUJsb2NrLT5tX251bVZhcnMp
CisgICAgICAgICwgbV9jb25zdGFudHMobV9jb2RlQmxvY2stPm51bWJlck9mQ29uc3RhbnRSZWdp
c3RlcnMoKSkKKyAgICAgICAgLCBtX251bUFyZ3VtZW50cyhtX2NvZGVCbG9jay0+bnVtUGFyYW1l
dGVycygpKQorICAgICAgICAsIG1fbnVtTG9jYWxzKG1fY29kZUJsb2NrLT5tX251bUNhbGxlZVJl
Z2lzdGVycykKKyAgICAgICAgLCBtX3ByZXNlcnZlZFZhcnMobV9jb2RlQmxvY2stPm1fbnVtVmFy
cykKICAgICAgICAgLCBtX3BhcmFtZXRlclNsb3RzKDApCiAgICAgICAgICwgbV9udW1QYXNzZWRW
YXJBcmdzKDApCiAgICAgICAgICwgbV9nbG9iYWxSZXNvbHZlTnVtYmVyKDApCkBAIC02OSw3ICs2
OSw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIEFTU0VSVChtX3Byb2ZpbGVkQmxvY2spOwog
ICAgICAgICAKLSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb2RlQmxvY2stPm1fbnVtVmFy
czsgKytpKQorICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG1fY29kZUJsb2NrLT5tX251bVZh
cnM7ICsraSkKICAgICAgICAgICAgIG1fcHJlc2VydmVkVmFycy5zZXQoaSk7CiAgICAgfQogICAg
IApAQCAtOTE4LDcgKzkxOCw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGwoSW50
ZXJwcmUKICAgICBDYWxsTGlua1N0YXR1cyBjYWxsTGlua1N0YXR1cyA9IENhbGxMaW5rU3RhdHVz
Ojpjb21wdXRlRm9yKAogICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2ss
IG1fY3VycmVudEluZGV4KTsKICAgICAKLSAgICBpZiAobV9ncmFwaC5pc0Z1bmN0aW9uQ29uc3Rh
bnQobV9jb2RlQmxvY2ssIGNhbGxUYXJnZXQpKQorICAgIGlmIChtX2dyYXBoLmlzRnVuY3Rpb25D
b25zdGFudChjYWxsVGFyZ2V0KSkKICAgICAgICAgY2FsbFR5cGUgPSBDb25zdGFudEZ1bmN0aW9u
OwogICAgIGVsc2UgaWYgKGNhbGxMaW5rU3RhdHVzLmlzU2V0KCkgJiYgIWNhbGxMaW5rU3RhdHVz
LmNvdWxkVGFrZVNsb3dQYXRoKCkKICAgICAgICAgICAgICAmJiAhbV9pbmxpbmVTdGFja1RvcC0+
bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkQ2FjaGUpKQpAQCAt
OTQ2LDcgKzk0Niw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGwoSW50ZXJwcmUK
ICAgICAgICAgSW50cmluc2ljIGludHJpbnNpYzsKICAgICAgICAgYm9vbCBjZXJ0YWluQWJvdXRF
eHBlY3RlZEZ1bmN0aW9uOwogICAgICAgICBpZiAoY2FsbFR5cGUgPT0gQ29uc3RhbnRGdW5jdGlv
bikgewotICAgICAgICAgICAgZXhwZWN0ZWRGdW5jdGlvbiA9IG1fZ3JhcGgudmFsdWVPZkZ1bmN0
aW9uQ29uc3RhbnQobV9jb2RlQmxvY2ssIGNhbGxUYXJnZXQpOworICAgICAgICAgICAgZXhwZWN0
ZWRGdW5jdGlvbiA9IG1fZ3JhcGgudmFsdWVPZkZ1bmN0aW9uQ29uc3RhbnQoY2FsbFRhcmdldCk7
CiAgICAgICAgICAgICBpbnRyaW5zaWMgPSBleHBlY3RlZEZ1bmN0aW9uLT5leGVjdXRhYmxlKCkt
PmludHJpbnNpY0ZvcihraW5kKTsKICAgICAgICAgICAgIGNlcnRhaW5BYm91dEV4cGVjdGVkRnVu
Y3Rpb24gPSB0cnVlOwogICAgICAgICB9IGVsc2UgewpAQCAtMjU4OSwxNSArMjU4OSwxMyBAQCBi
b29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZSgpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wg
cGFyc2UoR3JhcGgmIGdyYXBoLCBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIENvZGVCbG9jayog
Y29kZUJsb2NrKQorYm9vbCBwYXJzZShHcmFwaCYgZ3JhcGgpCiB7CiAjaWYgREZHX0RFQlVHX0xP
Q0FMX0RJU0JBTEUKICAgICBVTlVTRURfUEFSQU0oZ3JhcGgpOwotICAgIFVOVVNFRF9QQVJBTShn
bG9iYWxEYXRhKTsKLSAgICBVTlVTRURfUEFSQU0oY29kZUJsb2NrKTsKICAgICByZXR1cm4gZmFs
c2U7CiAjZWxzZQotICAgIHJldHVybiBCeXRlQ29kZVBhcnNlcihnbG9iYWxEYXRhLCBjb2RlQmxv
Y2ssIGNvZGVCbG9jay0+YWx0ZXJuYXRpdmUoKSwgZ3JhcGgpLnBhcnNlKCk7CisgICAgcmV0dXJu
IEJ5dGVDb2RlUGFyc2VyKGdyYXBoKS5wYXJzZSgpOwogI2VuZGlmCiB9CiAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmgJKHJldmlzaW9uIDEw
ODE1MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuaAko
d29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgREZHIHsKIAogLy8gUG9w
dWxhdGUgdGhlIEdyYXBoIHdpdGggYSBiYXNpYyBibG9jayBvZiBjb2RlIGZyb20gdGhlIENvZGVC
bG9jaywKIC8vIHN0YXJ0aW5nIGF0IHRoZSBwcm92aWRlZCBieXRlY29kZSBpbmRleC4KLWJvb2wg
cGFyc2UoR3JhcGgmLCBKU0dsb2JhbERhdGEqLCBDb2RlQmxvY2sqKTsKK2Jvb2wgcGFyc2UoR3Jh
cGgmKTsKIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwogCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0RyaXZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdEcml2ZXIuY3BwCShyZXZpc2lvbiAxMDgxNTIpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0RyaXZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDE2ICs0
NywxNiBAQCBpbmxpbmUgYm9vbCBjb21waWxlKENvbXBpbGVNb2RlIGNvbXBpbGVNCiAgICAgZGF0
YUxvZygiREZHIGNvbXBpbGluZyBjb2RlIGJsb2NrICVwKCVwKSwgbnVtYmVyIG9mIGluc3RydWN0
aW9ucyA9ICV1LlxuIiwgY29kZUJsb2NrLCBjb2RlQmxvY2stPmFsdGVybmF0aXZlKCksIGNvZGVC
bG9jay0+aW5zdHJ1Y3Rpb25Db3VudCgpKTsKICNlbmRpZgogICAgIAotICAgIEdyYXBoIGRmZzsK
LSAgICBpZiAoIXBhcnNlKGRmZywgJmdsb2JhbERhdGEsIGNvZGVCbG9jaykpCisgICAgR3JhcGgg
ZGZnKGdsb2JhbERhdGEsIGNvZGVCbG9jayk7CisgICAgaWYgKCFwYXJzZShkZmcpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgCiAgICAgaWYgKGNvbXBpbGVNb2RlID09IENvbXBpbGVGdW5j
dGlvbikKLSAgICAgICAgZGZnLnByZWRpY3RBcmd1bWVudFR5cGVzKGNvZGVCbG9jayk7CisgICAg
ICAgIGRmZy5wcmVkaWN0QXJndW1lbnRUeXBlcygpOwogICAgIAotICAgIHByb3BhZ2F0ZShkZmcs
ICZnbG9iYWxEYXRhLCBjb2RlQmxvY2spOworICAgIHByb3BhZ2F0ZShkZmcpOwogICAgIAotICAg
IEpJVENvbXBpbGVyIGRhdGFGbG93SklUKCZnbG9iYWxEYXRhLCBkZmcsIGNvZGVCbG9jayk7Cisg
ICAgSklUQ29tcGlsZXIgZGF0YUZsb3dKSVQoZGZnKTsKICAgICBpZiAoY29tcGlsZU1vZGUgPT0g
Q29tcGlsZUZ1bmN0aW9uKSB7CiAgICAgICAgIEFTU0VSVChqaXRDb2RlV2l0aEFyaXR5Q2hlY2sp
OwogICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCShy
ZXZpc2lvbiAxMDgxNTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTE3LDcgKzExNyw3IEBAIHZvaWQgR3JhcGg6OmR1bXBDb2Rl
T3JpZ2luKE5vZGVJbmRleCBub2QKICAgICB9CiB9CiAKLXZvaWQgR3JhcGg6OmR1bXAoTm9kZUlu
ZGV4IG5vZGVJbmRleCwgQ29kZUJsb2NrKiBjb2RlQmxvY2spCit2b2lkIEdyYXBoOjpkdW1wKE5v
ZGVJbmRleCBub2RlSW5kZXgpCiB7CiAgICAgTm9kZSYgbm9kZSA9IGF0KG5vZGVJbmRleCk7CiAg
ICAgTm9kZVR5cGUgb3AgPSBub2RlLm9wOwpAQCAtMTg0LDEwICsxODQsNyBAQCB2b2lkIEdyYXBo
OjpkdW1wKE5vZGVJbmRleCBub2RlSW5kZXgsIENvCiAgICAgICAgIGhhc1ByaW50ZWQgPSB0cnVl
OwogICAgIH0KICAgICBpZiAobm9kZS5oYXNJZGVudGlmaWVyKCkpIHsKLSAgICAgICAgaWYgKGNv
ZGVCbG9jaykKLSAgICAgICAgICAgIGRhdGFMb2coIiVzaWQldXslc30iLCBoYXNQcmludGVkID8g
IiwgIiA6ICIiLCBub2RlLmlkZW50aWZpZXJOdW1iZXIoKSwgY29kZUJsb2NrLT5pZGVudGlmaWVy
KG5vZGUuaWRlbnRpZmllck51bWJlcigpKS51c3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Ci0gICAg
ICAgIGVsc2UKLSAgICAgICAgICAgIGRhdGFMb2coIiVzaWQldSIsIGhhc1ByaW50ZWQgPyAiLCAi
IDogIiIsIG5vZGUuaWRlbnRpZmllck51bWJlcigpKTsKKyAgICAgICAgZGF0YUxvZygiJXNpZCV1
eyVzfSIsIGhhc1ByaW50ZWQgPyAiLCAiIDogIiIsIG5vZGUuaWRlbnRpZmllck51bWJlcigpLCBt
X2NvZGVCbG9jay0+aWRlbnRpZmllcihub2RlLmlkZW50aWZpZXJOdW1iZXIoKSkudXN0cmluZygp
LnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICBoYXNQcmludGVkID0gdHJ1ZTsKICAgICB9CiAgICAg
aWYgKG5vZGUuaGFzU3RydWN0dXJlU2V0KCkpIHsKQEAgLTIwMiwxMCArMTk5LDcgQEAgdm9pZCBH
cmFwaDo6ZHVtcChOb2RlSW5kZXggbm9kZUluZGV4LCBDbwogICAgIH0KICAgICBpZiAobm9kZS5o
YXNTdG9yYWdlQWNjZXNzRGF0YSgpKSB7CiAgICAgICAgIFN0b3JhZ2VBY2Nlc3NEYXRhJiBzdG9y
YWdlQWNjZXNzRGF0YSA9IG1fc3RvcmFnZUFjY2Vzc0RhdGFbbm9kZS5zdG9yYWdlQWNjZXNzRGF0
YUluZGV4KCldOwotICAgICAgICBpZiAoY29kZUJsb2NrKQotICAgICAgICAgICAgZGF0YUxvZygi
JXNpZCV1eyVzfSIsIGhhc1ByaW50ZWQgPyAiLCAiIDogIiIsIHN0b3JhZ2VBY2Nlc3NEYXRhLmlk
ZW50aWZpZXJOdW1iZXIsIGNvZGVCbG9jay0+aWRlbnRpZmllcihzdG9yYWdlQWNjZXNzRGF0YS5p
ZGVudGlmaWVyTnVtYmVyKS51c3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgIGVsc2UK
LSAgICAgICAgICAgIGRhdGFMb2coIiVzaWQldSIsIGhhc1ByaW50ZWQgPyAiLCAiIDogIiIsIHN0
b3JhZ2VBY2Nlc3NEYXRhLmlkZW50aWZpZXJOdW1iZXIpOworICAgICAgICBkYXRhTG9nKCIlc2lk
JXV7JXN9IiwgaGFzUHJpbnRlZCA/ICIsICIgOiAiIiwgc3RvcmFnZUFjY2Vzc0RhdGEuaWRlbnRp
Zmllck51bWJlciwgbV9jb2RlQmxvY2stPmlkZW50aWZpZXIoc3RvcmFnZUFjY2Vzc0RhdGEuaWRl
bnRpZmllck51bWJlcikudXN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICAKICAgICAg
ICAgZGF0YUxvZygiLCAlbHUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihzdG9yYWdlQWNj
ZXNzRGF0YS5vZmZzZXQpKTsKICAgICAgICAgaGFzUHJpbnRlZCA9IHRydWU7CkBAIC0yMjAsMjQg
KzIxNCwyMiBAQCB2b2lkIEdyYXBoOjpkdW1wKE5vZGVJbmRleCBub2RlSW5kZXgsIENvCiAgICAg
ICAgICAgICBkYXRhTG9nKCIlc3IldSglcykiLCBoYXNQcmludGVkID8gIiwgIiA6ICIiLCBvcGVy
YW5kLCBuYW1lT2ZWYXJpYWJsZUFjY2Vzc0RhdGEodmFyaWFibGVBY2Nlc3NEYXRhKSk7CiAgICAg
ICAgIGhhc1ByaW50ZWQgPSB0cnVlOwogICAgIH0KLSAgICBpZiAobm9kZS5oYXNDb25zdGFudEJ1
ZmZlcigpICYmIGNvZGVCbG9jaykgeworICAgIGlmIChub2RlLmhhc0NvbnN0YW50QnVmZmVyKCkp
IHsKICAgICAgICAgaWYgKGhhc1ByaW50ZWQpCiAgICAgICAgICAgICBkYXRhTG9nKCIsICIpOwog
ICAgICAgICBkYXRhTG9nKCIldTpbIiwgbm9kZS5zdGFydENvbnN0YW50KCkpOwogICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbm9kZS5udW1Db25zdGFudHMoKTsgKytpKSB7CiAgICAg
ICAgICAgICBpZiAoaSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCIsICIpOwotICAgICAgICAg
ICAgZGF0YUxvZygiJXMiLCBjb2RlQmxvY2stPmNvbnN0YW50QnVmZmVyKG5vZGUuc3RhcnRDb25z
dGFudCgpKVtpXS5kZXNjcmlwdGlvbigpKTsKKyAgICAgICAgICAgIGRhdGFMb2coIiVzIiwgbV9j
b2RlQmxvY2stPmNvbnN0YW50QnVmZmVyKG5vZGUuc3RhcnRDb25zdGFudCgpKVtpXS5kZXNjcmlw
dGlvbigpKTsKICAgICAgICAgfQogICAgICAgICBkYXRhTG9nKCJdIik7CiAgICAgICAgIGhhc1By
aW50ZWQgPSB0cnVlOwogICAgIH0KICAgICBpZiAob3AgPT0gSlNDb25zdGFudCkgewogICAgICAg
ICBkYXRhTG9nKCIlcyQldSIsIGhhc1ByaW50ZWQgPyAiLCAiIDogIiIsIG5vZGUuY29uc3RhbnRO
dW1iZXIoKSk7Ci0gICAgICAgIGlmIChjb2RlQmxvY2spIHsKLSAgICAgICAgICAgIEpTVmFsdWUg
dmFsdWUgPSB2YWx1ZU9mSlNDb25zdGFudChjb2RlQmxvY2ssIG5vZGVJbmRleCk7Ci0gICAgICAg
ICAgICBkYXRhTG9nKCIgPSAlcyIsIHZhbHVlLmRlc2NyaXB0aW9uKCkpOwotICAgICAgICB9Cisg
ICAgICAgIEpTVmFsdWUgdmFsdWUgPSB2YWx1ZU9mSlNDb25zdGFudChub2RlSW5kZXgpOworICAg
ICAgICBkYXRhTG9nKCIgPSAlcyIsIHZhbHVlLmRlc2NyaXB0aW9uKCkpOwogICAgICAgICBoYXNQ
cmludGVkID0gdHJ1ZTsKICAgICB9CiAgICAgaWYgKG9wID09IFdlYWtKU0NvbnN0YW50KSB7CkBA
IC0yNjgsNyArMjYwLDcgQEAgdm9pZCBHcmFwaDo6ZHVtcChOb2RlSW5kZXggbm9kZUluZGV4LCBD
bwogICAgIGRhdGFMb2coIlxuIik7CiB9CiAKLXZvaWQgR3JhcGg6OmR1bXAoQ29kZUJsb2NrKiBj
b2RlQmxvY2spCit2b2lkIEdyYXBoOjpkdW1wKCkKIHsKICAgICBmb3IgKHNpemVfdCBiID0gMDsg
YiA8IG1fYmxvY2tzLnNpemUoKTsgKytiKSB7CiAgICAgICAgIEJhc2ljQmxvY2sqIGJsb2NrID0g
bV9ibG9ja3NbYl0uZ2V0KCk7CkBAIC0yODMsNyArMjc1LDcgQEAgdm9pZCBHcmFwaDo6ZHVtcChD
b2RlQmxvY2sqIGNvZGVCbG9jaykKICAgICAgICAgZHVtcE9wZXJhbmRzKGJsb2NrLT52YXJpYWJs
ZXNBdEhlYWQsIFdURjo6ZGF0YUZpbGUoKSk7CiAgICAgICAgIGRhdGFMb2coIlxuIik7CiAgICAg
ICAgIGZvciAoc2l6ZV90IGkgPSBibG9jay0+YmVnaW47IGkgPCBibG9jay0+ZW5kOyArK2kpCi0g
ICAgICAgICAgICBkdW1wKGksIGNvZGVCbG9jayk7CisgICAgICAgICAgICBkdW1wKGkpOwogICAg
ICAgICBkYXRhTG9nKCIgIHZhcnMgYWZ0ZXI6ICIpOwogICAgICAgICBpZiAoYmxvY2stPmNmYUhh
c1Zpc2l0ZWQpCiAgICAgICAgICAgICBkdW1wT3BlcmFuZHMoYmxvY2stPnZhbHVlc0F0VGFpbCwg
V1RGOjpkYXRhRmlsZSgpKTsKQEAgLTI5Myw3ICsyODUsNyBAQCB2b2lkIEdyYXBoOjpkdW1wKENv
ZGVCbG9jayogY29kZUJsb2NrKQogICAgIH0KICAgICBkYXRhTG9nKCJQaGkgTm9kZXM6XG4iKTsK
ICAgICBmb3IgKHNpemVfdCBpID0gbV9ibG9ja3MubGFzdCgpLT5lbmQ7IGkgPCBzaXplKCk7ICsr
aSkKLSAgICAgICAgZHVtcChpLCBjb2RlQmxvY2spOworICAgICAgICBkdW1wKGkpOwogfQogCiAv
LyBGSVhNRTogQ29udmVydCB0aGlzIHRvIGJlIGl0ZXJhdGl2ZSwgbm90IHJlY3Vyc2l2ZS4KQEAg
LTMzNCwxNSArMzI2LDExIEBAIHZvaWQgR3JhcGg6OmRlcmVmQ2hpbGRyZW4oTm9kZUluZGV4IG9w
KQogICAgIERPX1RPX0NISUxEUkVOKGF0KG9wKSwgZGVyZWYpOwogfQogCi12b2lkIEdyYXBoOjpw
cmVkaWN0QXJndW1lbnRUeXBlcyhDb2RlQmxvY2sqIGNvZGVCbG9jaykKK3ZvaWQgR3JhcGg6OnBy
ZWRpY3RBcmd1bWVudFR5cGVzKCkKIHsKLSAgICBBU1NFUlQoY29kZUJsb2NrKTsKLSAgICBBU1NF
UlQoY29kZUJsb2NrLT5hbHRlcm5hdGl2ZSgpKTsKLQotICAgIENvZGVCbG9jayogcHJvZmlsZWRD
b2RlQmxvY2sgPSBjb2RlQmxvY2stPmFsdGVybmF0aXZlKCk7Ci0gICAgQVNTRVJUKGNvZGVCbG9j
ay0+bnVtUGFyYW1ldGVycygpID49IDEpOwotICAgIGZvciAoc2l6ZV90IGFyZyA9IDA7IGFyZyA8
IHN0YXRpY19jYXN0PHNpemVfdD4oY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpOyArK2FyZykg
ewotICAgICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSBwcm9maWxlZENvZGVCbG9jay0+dmFs
dWVQcm9maWxlRm9yQXJndW1lbnQoYXJnKTsKKyAgICBBU1NFUlQobV9jb2RlQmxvY2stPm51bVBh
cmFtZXRlcnMoKSA+PSAxKTsKKyAgICBmb3IgKHNpemVfdCBhcmcgPSAwOyBhcmcgPCBzdGF0aWNf
Y2FzdDxzaXplX3Q+KG1fY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpOyArK2FyZykgeworICAg
ICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSBtX3Byb2ZpbGVkQmxvY2stPnZhbHVlUHJvZmls
ZUZvckFyZ3VtZW50KGFyZyk7CiAgICAgICAgIGlmICghcHJvZmlsZSkKICAgICAgICAgICAgIGNv
bnRpbnVlOwogICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3Jh
cGguaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgJ
KHJldmlzaW9uIDEwODE1MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGgu
aAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJMRShERkdfSklUKQog
CiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiREZHQXNzZW1ibHlIZWxwZXJzLmgi
CiAjaW5jbHVkZSAiREZHQmFzaWNCbG9jay5oIgogI2luY2x1ZGUgIkRGR05vZGUuaCIKICNpbmNs
dWRlICJQcmVkaWN0aW9uVHJhY2tlci5oIgpAQCAtNzEsNiArNzIsMTQgQEAgc3RydWN0IFJlc29s
dmVHbG9iYWxEYXRhIHsKIC8vIE5vZGVzIHRoYXQgYXJlICdkZWFkJyByZW1haW4gaW4gdGhlIHZl
Y3RvciB3aXRoIHJlZkNvdW50IDAuCiBjbGFzcyBHcmFwaCA6IHB1YmxpYyBWZWN0b3I8Tm9kZSwg
NjQ+IHsKIHB1YmxpYzoKKyAgICBHcmFwaChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIENvZGVC
bG9jayogY29kZUJsb2NrKQorICAgICAgICA6IG1fZ2xvYmFsRGF0YShnbG9iYWxEYXRhKQorICAg
ICAgICAsIG1fY29kZUJsb2NrKGNvZGVCbG9jaykKKyAgICAgICAgLCBtX3Byb2ZpbGVkQmxvY2so
Y29kZUJsb2NrLT5hbHRlcm5hdGl2ZSgpKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fcHJvZmls
ZWRCbG9jayk7CisgICAgfQorICAgIAogICAgIHVzaW5nIFZlY3RvcjxOb2RlLCA2ND46Om9wZXJh
dG9yW107CiAgICAgdXNpbmcgVmVjdG9yPE5vZGUsIDY0Pjo6YXQ7CiAgICAgCkBAIC0xMjgsOCAr
MTM3LDggQEAgcHVibGljOgogICAgIH0KIAogICAgIC8vIENvZGVCbG9jayBpcyBvcHRpb25hbCwg
YnV0IG1heSBhbGxvdyBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHRvIGJlIGR1bXBlZCAoZS5nLiBJ
ZGVudGlmaWVyIG5hbWVzKS4KLSAgICB2b2lkIGR1bXAoQ29kZUJsb2NrKiA9IDApOwotICAgIHZv
aWQgZHVtcChOb2RlSW5kZXgsIENvZGVCbG9jayogPSAwKTsKKyAgICB2b2lkIGR1bXAoKTsKKyAg
ICB2b2lkIGR1bXAoTm9kZUluZGV4KTsKIAogICAgIC8vIER1bXAgdGhlIGNvZGUgb3JpZ2luIG9m
IHRoZSBnaXZlbiBub2RlIGFzIGEgZGlmZiBmcm9tIHRoZSBjb2RlIG9yaWdpbiBvZiB0aGUKICAg
ICAvLyBwcmVjZWRpbmcgbm9kZS4KQEAgLTE0NywxMiArMTU2LDEyIEBAIHB1YmxpYzoKICAgICAg
ICAgcmV0dXJuIG1fcHJlZGljdGlvbnMuZ2V0R2xvYmFsVmFyUHJlZGljdGlvbih2YXJOdW1iZXIp
OwogICAgIH0KICAgICAKLSAgICBQcmVkaWN0ZWRUeXBlIGdldEpTQ29uc3RhbnRQcmVkaWN0aW9u
KE5vZGUmIG5vZGUsIENvZGVCbG9jayogY29kZUJsb2NrKQorICAgIFByZWRpY3RlZFR5cGUgZ2V0
SlNDb25zdGFudFByZWRpY3Rpb24oTm9kZSYgbm9kZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBw
cmVkaWN0aW9uRnJvbVZhbHVlKG5vZGUudmFsdWVPZkpTQ29uc3RhbnQoY29kZUJsb2NrKSk7Cisg
ICAgICAgIHJldHVybiBwcmVkaWN0aW9uRnJvbVZhbHVlKG5vZGUudmFsdWVPZkpTQ29uc3RhbnQo
bV9jb2RlQmxvY2spKTsKICAgICB9CiAgICAgCi0gICAgYm9vbCBhZGRTaG91bGRTcGVjdWxhdGVJ
bnRlZ2VyKE5vZGUmIGFkZCwgQ29kZUJsb2NrKiBjb2RlQmxvY2spCisgICAgYm9vbCBhZGRTaG91
bGRTcGVjdWxhdGVJbnRlZ2VyKE5vZGUmIGFkZCkKICAgICB7CiAgICAgICAgIEFTU0VSVChhZGQu
b3AgPT0gVmFsdWVBZGQgfHwgYWRkLm9wID09IEFyaXRoQWRkIHx8IGFkZC5vcCA9PSBBcml0aFN1
Yik7CiAgICAgICAgIApAQCAtMTYwLDE2ICsxNjksMTYgQEAgcHVibGljOgogICAgICAgICBOb2Rl
JiByaWdodCA9IGF0KGFkZC5jaGlsZDIoKSk7CiAgICAgICAgIAogICAgICAgICBpZiAobGVmdC5o
YXNDb25zdGFudCgpKQotICAgICAgICAgICAgcmV0dXJuIGFkZEltbWVkaWF0ZVNob3VsZFNwZWN1
bGF0ZUludGVnZXIoY29kZUJsb2NrLCBhZGQsIHJpZ2h0LCBsZWZ0KTsKKyAgICAgICAgICAgIHJl
dHVybiBhZGRJbW1lZGlhdGVTaG91bGRTcGVjdWxhdGVJbnRlZ2VyKGFkZCwgcmlnaHQsIGxlZnQp
OwogICAgICAgICBpZiAocmlnaHQuaGFzQ29uc3RhbnQoKSkKLSAgICAgICAgICAgIHJldHVybiBh
ZGRJbW1lZGlhdGVTaG91bGRTcGVjdWxhdGVJbnRlZ2VyKGNvZGVCbG9jaywgYWRkLCBsZWZ0LCBy
aWdodCk7CisgICAgICAgICAgICByZXR1cm4gYWRkSW1tZWRpYXRlU2hvdWxkU3BlY3VsYXRlSW50
ZWdlcihhZGQsIGxlZnQsIHJpZ2h0KTsKICAgICAgICAgCiAgICAgICAgIHJldHVybiBOb2RlOjpz
aG91bGRTcGVjdWxhdGVJbnRlZ2VyKGxlZnQsIHJpZ2h0KSAmJiBhZGQuY2FuU3BlY3VsYXRlSW50
ZWdlcigpOwogICAgIH0KICAgICAKLSAgICBib29sIGFkZFNob3VsZFNwZWN1bGF0ZUludGVnZXIo
Tm9kZUluZGV4IG5vZGVJbmRleCwgQ29kZUJsb2NrKiBjb2RlQmxvY2spCisgICAgYm9vbCBhZGRT
aG91bGRTcGVjdWxhdGVJbnRlZ2VyKE5vZGVJbmRleCBub2RlSW5kZXgpCiAgICAgewotICAgICAg
ICByZXR1cm4gYWRkU2hvdWxkU3BlY3VsYXRlSW50ZWdlcihhdChub2RlSW5kZXgpLCBjb2RlQmxv
Y2spOworICAgICAgICByZXR1cm4gYWRkU2hvdWxkU3BlY3VsYXRlSW50ZWdlcihhdChub2RlSW5k
ZXgpKTsKICAgICB9CiAgICAgCiAgICAgLy8gSGVscGVyIG1ldGhvZHMgdG8gY2hlY2sgbm9kZXMg
Zm9yIGNvbnN0YW50cy4KQEAgLTE4MSw1MCArMTkwLDUwIEBAIHB1YmxpYzoKICAgICB7CiAgICAg
ICAgIHJldHVybiBhdChub2RlSW5kZXgpLmhhc0NvbnN0YW50KCk7CiAgICAgfQotICAgIGJvb2wg
aXNJbnQzMkNvbnN0YW50KENvZGVCbG9jayogY29kZUJsb2NrLCBOb2RlSW5kZXggbm9kZUluZGV4
KQorICAgIGJvb2wgaXNJbnQzMkNvbnN0YW50KE5vZGVJbmRleCBub2RlSW5kZXgpCiAgICAgewot
ICAgICAgICByZXR1cm4gYXQobm9kZUluZGV4KS5pc0ludDMyQ29uc3RhbnQoY29kZUJsb2NrKTsK
KyAgICAgICAgcmV0dXJuIGF0KG5vZGVJbmRleCkuaXNJbnQzMkNvbnN0YW50KG1fY29kZUJsb2Nr
KTsKICAgICB9Ci0gICAgYm9vbCBpc0RvdWJsZUNvbnN0YW50KENvZGVCbG9jayogY29kZUJsb2Nr
LCBOb2RlSW5kZXggbm9kZUluZGV4KQorICAgIGJvb2wgaXNEb3VibGVDb25zdGFudChOb2RlSW5k
ZXggbm9kZUluZGV4KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGF0KG5vZGVJbmRleCkuaXNEb3Vi
bGVDb25zdGFudChjb2RlQmxvY2spOworICAgICAgICByZXR1cm4gYXQobm9kZUluZGV4KS5pc0Rv
dWJsZUNvbnN0YW50KG1fY29kZUJsb2NrKTsKICAgICB9Ci0gICAgYm9vbCBpc051bWJlckNvbnN0
YW50KENvZGVCbG9jayogY29kZUJsb2NrLCBOb2RlSW5kZXggbm9kZUluZGV4KQorICAgIGJvb2wg
aXNOdW1iZXJDb25zdGFudChOb2RlSW5kZXggbm9kZUluZGV4KQogICAgIHsKLSAgICAgICAgcmV0
dXJuIGF0KG5vZGVJbmRleCkuaXNOdW1iZXJDb25zdGFudChjb2RlQmxvY2spOworICAgICAgICBy
ZXR1cm4gYXQobm9kZUluZGV4KS5pc051bWJlckNvbnN0YW50KG1fY29kZUJsb2NrKTsKICAgICB9
Ci0gICAgYm9vbCBpc0Jvb2xlYW5Db25zdGFudChDb2RlQmxvY2sqIGNvZGVCbG9jaywgTm9kZUlu
ZGV4IG5vZGVJbmRleCkKKyAgICBib29sIGlzQm9vbGVhbkNvbnN0YW50KE5vZGVJbmRleCBub2Rl
SW5kZXgpCiAgICAgewotICAgICAgICByZXR1cm4gYXQobm9kZUluZGV4KS5pc0Jvb2xlYW5Db25z
dGFudChjb2RlQmxvY2spOworICAgICAgICByZXR1cm4gYXQobm9kZUluZGV4KS5pc0Jvb2xlYW5D
b25zdGFudChtX2NvZGVCbG9jayk7CiAgICAgfQotICAgIGJvb2wgaXNGdW5jdGlvbkNvbnN0YW50
KENvZGVCbG9jayogY29kZUJsb2NrLCBOb2RlSW5kZXggbm9kZUluZGV4KQorICAgIGJvb2wgaXNG
dW5jdGlvbkNvbnN0YW50KE5vZGVJbmRleCBub2RlSW5kZXgpCiAgICAgewogICAgICAgICBpZiAo
IWlzSlNDb25zdGFudChub2RlSW5kZXgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
ICAgICBpZiAoIWdldEpTRnVuY3Rpb24odmFsdWVPZkpTQ29uc3RhbnQoY29kZUJsb2NrLCBub2Rl
SW5kZXgpKSkKKyAgICAgICAgaWYgKCFnZXRKU0Z1bmN0aW9uKHZhbHVlT2ZKU0NvbnN0YW50KG5v
ZGVJbmRleCkpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9CiAgICAgLy8gSGVscGVyIG1ldGhvZHMgZ2V0IGNvbnN0YW50IHZhbHVlcyBmcm9t
IG5vZGVzLgotICAgIEpTVmFsdWUgdmFsdWVPZkpTQ29uc3RhbnQoQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIE5vZGVJbmRleCBub2RlSW5kZXgpCisgICAgSlNWYWx1ZSB2YWx1ZU9mSlNDb25zdGFudChO
b2RlSW5kZXggbm9kZUluZGV4KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGF0KG5vZGVJbmRleCku
dmFsdWVPZkpTQ29uc3RhbnQoY29kZUJsb2NrKTsKKyAgICAgICAgcmV0dXJuIGF0KG5vZGVJbmRl
eCkudmFsdWVPZkpTQ29uc3RhbnQobV9jb2RlQmxvY2spOwogICAgIH0KLSAgICBpbnQzMl90IHZh
bHVlT2ZJbnQzMkNvbnN0YW50KENvZGVCbG9jayogY29kZUJsb2NrLCBOb2RlSW5kZXggbm9kZUlu
ZGV4KQorICAgIGludDMyX3QgdmFsdWVPZkludDMyQ29uc3RhbnQoTm9kZUluZGV4IG5vZGVJbmRl
eCkKICAgICB7Ci0gICAgICAgIHJldHVybiB2YWx1ZU9mSlNDb25zdGFudChjb2RlQmxvY2ssIG5v
ZGVJbmRleCkuYXNJbnQzMigpOworICAgICAgICByZXR1cm4gdmFsdWVPZkpTQ29uc3RhbnQobm9k
ZUluZGV4KS5hc0ludDMyKCk7CiAgICAgfQotICAgIGRvdWJsZSB2YWx1ZU9mTnVtYmVyQ29uc3Rh
bnQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIE5vZGVJbmRleCBub2RlSW5kZXgpCisgICAgZG91Ymxl
IHZhbHVlT2ZOdW1iZXJDb25zdGFudChOb2RlSW5kZXggbm9kZUluZGV4KQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIHZhbHVlT2ZKU0NvbnN0YW50KGNvZGVCbG9jaywgbm9kZUluZGV4KS5hc051bWJl
cigpOworICAgICAgICByZXR1cm4gdmFsdWVPZkpTQ29uc3RhbnQobm9kZUluZGV4KS5hc051bWJl
cigpOwogICAgIH0KLSAgICBib29sIHZhbHVlT2ZCb29sZWFuQ29uc3RhbnQoQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIE5vZGVJbmRleCBub2RlSW5kZXgpCisgICAgYm9vbCB2YWx1ZU9mQm9vbGVhbkNv
bnN0YW50KE5vZGVJbmRleCBub2RlSW5kZXgpCiAgICAgewotICAgICAgICByZXR1cm4gdmFsdWVP
ZkpTQ29uc3RhbnQoY29kZUJsb2NrLCBub2RlSW5kZXgpLmFzQm9vbGVhbigpOworICAgICAgICBy
ZXR1cm4gdmFsdWVPZkpTQ29uc3RhbnQobm9kZUluZGV4KS5hc0Jvb2xlYW4oKTsKICAgICB9Ci0g
ICAgSlNGdW5jdGlvbiogdmFsdWVPZkZ1bmN0aW9uQ29uc3RhbnQoQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIE5vZGVJbmRleCBub2RlSW5kZXgpCisgICAgSlNGdW5jdGlvbiogdmFsdWVPZkZ1bmN0aW9u
Q29uc3RhbnQoTm9kZUluZGV4IG5vZGVJbmRleCkKICAgICB7Ci0gICAgICAgIEpTQ2VsbCogZnVu
Y3Rpb24gPSBnZXRKU0Z1bmN0aW9uKHZhbHVlT2ZKU0NvbnN0YW50KGNvZGVCbG9jaywgbm9kZUlu
ZGV4KSk7CisgICAgICAgIEpTQ2VsbCogZnVuY3Rpb24gPSBnZXRKU0Z1bmN0aW9uKHZhbHVlT2ZK
U0NvbnN0YW50KG5vZGVJbmRleCkpOwogICAgICAgICBBU1NFUlQoZnVuY3Rpb24pOwogICAgICAg
ICByZXR1cm4gYXNGdW5jdGlvbihmdW5jdGlvbik7CiAgICAgfQpAQCAtMjM0LDcgKzI0Myw3IEBA
IHB1YmxpYzoKICAgICAvLyBUaGlzIGlzIE8obiksIGFuZCBzaG91bGQgb25seSBiZSB1c2VkIGZv
ciB2ZXJib3NlIGR1bXBzLgogICAgIGNvbnN0IGNoYXIqIG5hbWVPZlZhcmlhYmxlQWNjZXNzRGF0
YShWYXJpYWJsZUFjY2Vzc0RhdGEqKTsKIAotICAgIHZvaWQgcHJlZGljdEFyZ3VtZW50VHlwZXMo
Q29kZUJsb2NrKik7CisgICAgdm9pZCBwcmVkaWN0QXJndW1lbnRUeXBlcygpOwogICAgIAogICAg
IFN0cnVjdHVyZVNldCogYWRkU3RydWN0dXJlU2V0KGNvbnN0IFN0cnVjdHVyZVNldCYgc3RydWN0
dXJlU2V0KQogICAgIHsKQEAgLTI0OSwxMiArMjU4LDE4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuICZtX3N0cnVjdHVyZVRyYW5zaXRpb25EYXRhLmxhc3QoKTsKICAgICB9CiAgICAgCi0gICAg
VmFsdWVQcm9maWxlKiB2YWx1ZVByb2ZpbGVGb3IoTm9kZUluZGV4IG5vZGVJbmRleCwgQ29kZUJs
b2NrKiBwcm9maWxlZEJsb2NrKQorICAgIENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2tGb3Io
Y29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbikKKyAgICB7CisgICAgICAgIHJldHVybiBiYXNl
bGluZUNvZGVCbG9ja0Zvck9yaWdpbkFuZEJhc2VsaW5lQ29kZUJsb2NrKGNvZGVPcmlnaW4sIG1f
cHJvZmlsZWRCbG9jayk7CisgICAgfQorICAgIAorICAgIFZhbHVlUHJvZmlsZSogdmFsdWVQcm9m
aWxlRm9yKE5vZGVJbmRleCBub2RlSW5kZXgpCiAgICAgewogICAgICAgICBpZiAobm9kZUluZGV4
ID09IE5vTm9kZSkKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAKICAgICAgICAgTm9k
ZSYgbm9kZSA9IGF0KG5vZGVJbmRleCk7CisgICAgICAgIENvZGVCbG9jayogcHJvZmlsZWRCbG9j
ayA9IGJhc2VsaW5lQ29kZUJsb2NrRm9yKG5vZGUuY29kZU9yaWdpbik7CiAgICAgICAgIAogICAg
ICAgICBpZiAobm9kZS5vcCA9PSBHZXRMb2NhbCkgewogICAgICAgICAgICAgaWYgKCFvcGVyYW5k
SXNBcmd1bWVudChub2RlLmxvY2FsKCkpKQpAQCAtMjcwLDYgKzI4NSwxMCBAQCBwdWJsaWM6CiAg
ICAgICAgIAogICAgICAgICByZXR1cm4gMDsKICAgICB9CisgICAgCisgICAgSlNHbG9iYWxEYXRh
JiBtX2dsb2JhbERhdGE7CisgICAgQ29kZUJsb2NrKiBtX2NvZGVCbG9jazsKKyAgICBDb2RlQmxv
Y2sqIG1fcHJvZmlsZWRCbG9jazsKIAogICAgIFZlY3RvcjwgT3duUHRyPEJhc2ljQmxvY2s+ICwg
OD4gbV9ibG9ja3M7CiAgICAgVmVjdG9yPE5vZGVVc2UsIDE2PiBtX3ZhckFyZ0NoaWxkcmVuOwpA
QCAtMjg0LDExICszMDMsMTEgQEAgcHVibGljOgogICAgIHVuc2lnbmVkIG1fcGFyYW1ldGVyU2xv
dHM7CiBwcml2YXRlOgogICAgIAotICAgIGJvb2wgYWRkSW1tZWRpYXRlU2hvdWxkU3BlY3VsYXRl
SW50ZWdlcihDb2RlQmxvY2sqIGNvZGVCbG9jaywgTm9kZSYgYWRkLCBOb2RlJiB2YXJpYWJsZSwg
Tm9kZSYgaW1tZWRpYXRlKQorICAgIGJvb2wgYWRkSW1tZWRpYXRlU2hvdWxkU3BlY3VsYXRlSW50
ZWdlcihOb2RlJiBhZGQsIE5vZGUmIHZhcmlhYmxlLCBOb2RlJiBpbW1lZGlhdGUpCiAgICAgewog
ICAgICAgICBBU1NFUlQoaW1tZWRpYXRlLmhhc0NvbnN0YW50KCkpOwogICAgICAgICAKLSAgICAg
ICAgSlNWYWx1ZSBpbW1lZGlhdGVWYWx1ZSA9IGltbWVkaWF0ZS52YWx1ZU9mSlNDb25zdGFudChj
b2RlQmxvY2spOworICAgICAgICBKU1ZhbHVlIGltbWVkaWF0ZVZhbHVlID0gaW1tZWRpYXRlLnZh
bHVlT2ZKU0NvbnN0YW50KG1fY29kZUJsb2NrKTsKICAgICAgICAgaWYgKCFpbW1lZGlhdGVWYWx1
ZS5pc051bWJlcigpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgJKHJldmlzaW9uIDEw
ODE1MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtMTg3LDggKzE4Nyw4IEBAIHN0cnVjdCBQcm9wZXJ0eUFjY2Vzc1JlY29y
ZCB7CiAvLyBjYWxsIHRvIGJlIGxpbmtlZCkuCiBjbGFzcyBKSVRDb21waWxlciA6IHB1YmxpYyBD
Q2FsbEhlbHBlcnMgewogcHVibGljOgotICAgIEpJVENvbXBpbGVyKEpTR2xvYmFsRGF0YSogZ2xv
YmFsRGF0YSwgR3JhcGgmIGRmZywgQ29kZUJsb2NrKiBjb2RlQmxvY2spCi0gICAgICAgIDogQ0Nh
bGxIZWxwZXJzKGdsb2JhbERhdGEsIGNvZGVCbG9jaykKKyAgICBKSVRDb21waWxlcihHcmFwaCYg
ZGZnKQorICAgICAgICA6IENDYWxsSGVscGVycygmZGZnLm1fZ2xvYmFsRGF0YSwgZGZnLm1fY29k
ZUJsb2NrKQogICAgICAgICAsIG1fZ3JhcGgoZGZnKQogICAgICAgICAsIG1fY3VycmVudENvZGVP
cmlnaW5JbmRleCgwKQogICAgIHsKQEAgLTI0NCwyMSArMjQ0LDYgQEAgcHVibGljOgogICAgICAg
ICBtX2V4Y2VwdGlvbkNoZWNrcy5hcHBlbmQoQ2FsbEV4Y2VwdGlvblJlY29yZChmdW5jdGlvbkNh
bGwsIGV4Y2VwdGlvbkNoZWNrLCBjb2RlT3JpZ2luLCB0b2tlbikpOwogICAgIH0KICAgICAKLSAg
ICAvLyBIZWxwZXIgbWV0aG9kcyB0byBjaGVjayBub2RlcyBmb3IgY29uc3RhbnRzLgotICAgIGJv
b2wgaXNDb25zdGFudChOb2RlSW5kZXggbm9kZUluZGV4KSB7IHJldHVybiBncmFwaCgpLmlzQ29u
c3RhbnQobm9kZUluZGV4KTsgfQotICAgIGJvb2wgaXNKU0NvbnN0YW50KE5vZGVJbmRleCBub2Rl
SW5kZXgpIHsgcmV0dXJuIGdyYXBoKCkuaXNKU0NvbnN0YW50KG5vZGVJbmRleCk7IH0KLSAgICBi
b29sIGlzSW50MzJDb25zdGFudChOb2RlSW5kZXggbm9kZUluZGV4KSB7IHJldHVybiBncmFwaCgp
LmlzSW50MzJDb25zdGFudChjb2RlQmxvY2soKSwgbm9kZUluZGV4KTsgfQotICAgIGJvb2wgaXNE
b3VibGVDb25zdGFudChOb2RlSW5kZXggbm9kZUluZGV4KSB7IHJldHVybiBncmFwaCgpLmlzRG91
YmxlQ29uc3RhbnQoY29kZUJsb2NrKCksIG5vZGVJbmRleCk7IH0KLSAgICBib29sIGlzTnVtYmVy
Q29uc3RhbnQoTm9kZUluZGV4IG5vZGVJbmRleCkgeyByZXR1cm4gZ3JhcGgoKS5pc051bWJlckNv
bnN0YW50KGNvZGVCbG9jaygpLCBub2RlSW5kZXgpOyB9Ci0gICAgYm9vbCBpc0Jvb2xlYW5Db25z
dGFudChOb2RlSW5kZXggbm9kZUluZGV4KSB7IHJldHVybiBncmFwaCgpLmlzQm9vbGVhbkNvbnN0
YW50KGNvZGVCbG9jaygpLCBub2RlSW5kZXgpOyB9Ci0gICAgYm9vbCBpc0Z1bmN0aW9uQ29uc3Rh
bnQoTm9kZUluZGV4IG5vZGVJbmRleCkgeyByZXR1cm4gZ3JhcGgoKS5pc0Z1bmN0aW9uQ29uc3Rh
bnQoY29kZUJsb2NrKCksIG5vZGVJbmRleCk7IH0KLSAgICAvLyBIZWxwZXIgbWV0aG9kcyBnZXQg
Y29uc3RhbnQgdmFsdWVzIGZyb20gbm9kZXMuCi0gICAgSlNWYWx1ZSB2YWx1ZU9mSlNDb25zdGFu
dChOb2RlSW5kZXggbm9kZUluZGV4KSB7IHJldHVybiBncmFwaCgpLnZhbHVlT2ZKU0NvbnN0YW50
KGNvZGVCbG9jaygpLCBub2RlSW5kZXgpOyB9Ci0gICAgaW50MzJfdCB2YWx1ZU9mSW50MzJDb25z
dGFudChOb2RlSW5kZXggbm9kZUluZGV4KSB7IHJldHVybiBncmFwaCgpLnZhbHVlT2ZJbnQzMkNv
bnN0YW50KGNvZGVCbG9jaygpLCBub2RlSW5kZXgpOyB9Ci0gICAgZG91YmxlIHZhbHVlT2ZOdW1i
ZXJDb25zdGFudChOb2RlSW5kZXggbm9kZUluZGV4KSB7IHJldHVybiBncmFwaCgpLnZhbHVlT2ZO
dW1iZXJDb25zdGFudChjb2RlQmxvY2soKSwgbm9kZUluZGV4KTsgfQotICAgIGJvb2wgdmFsdWVP
ZkJvb2xlYW5Db25zdGFudChOb2RlSW5kZXggbm9kZUluZGV4KSB7IHJldHVybiBncmFwaCgpLnZh
bHVlT2ZCb29sZWFuQ29uc3RhbnQoY29kZUJsb2NrKCksIG5vZGVJbmRleCk7IH0KLSAgICBKU0Z1
bmN0aW9uKiB2YWx1ZU9mRnVuY3Rpb25Db25zdGFudChOb2RlSW5kZXggbm9kZUluZGV4KSB7IHJl
dHVybiBncmFwaCgpLnZhbHVlT2ZGdW5jdGlvbkNvbnN0YW50KGNvZGVCbG9jaygpLCBub2RlSW5k
ZXgpOyB9Ci0gICAgCiAgICAgLy8gSGVscGVyIG1ldGhvZHMgdG8gZ2V0IHByZWRpY3Rpb25zCiAg
ICAgUHJlZGljdGVkVHlwZSBnZXRQcmVkaWN0aW9uKE5vZGUmIG5vZGUpIHsgcmV0dXJuIG5vZGUu
cHJlZGljdGlvbigpOyB9CiAgICAgUHJlZGljdGVkVHlwZSBnZXRQcmVkaWN0aW9uKE5vZGVJbmRl
eCBub2RlSW5kZXgpIHsgcmV0dXJuIGdldFByZWRpY3Rpb24oZ3JhcGgoKVtub2RlSW5kZXhdKTsg
fQpAQCAtMzI5LDE0ICszMTQsNiBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICB9CiAKLSAgICBWYWx1
ZVByb2ZpbGUqIHZhbHVlUHJvZmlsZUZvcihOb2RlSW5kZXggbm9kZUluZGV4KQotICAgIHsKLSAg
ICAgICAgaWYgKG5vZGVJbmRleCA9PSBOb05vZGUpCi0gICAgICAgICAgICByZXR1cm4gMDsKLSAg
ICAgICAgCi0gICAgICAgIHJldHVybiBtX2dyYXBoLnZhbHVlUHJvZmlsZUZvcihub2RlSW5kZXgs
IGJhc2VsaW5lQ29kZUJsb2NrRm9yKG1fZ3JhcGhbbm9kZUluZGV4XS5jb2RlT3JpZ2luKSk7Ci0g
ICAgfQotICAgIAogcHJpdmF0ZToKICAgICAvLyBJbnRlcm5hbCBpbXBsZW1lbnRhdGlvbiB0byBj
b21waWxlLgogICAgIHZvaWQgY29tcGlsZUVudHJ5KCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT1NSRXhpdC5jcHAJKHJldmlzaW9uIDEwODE1MikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY3LDcgKzY3
LDcgQEAgYm9vbCBPU1JFeGl0Ojpjb25zaWRlckFkZGluZ0FzRnJlcXVlbnRFeAogICAgIGlmIChz
dGF0aWNfY2FzdDxkb3VibGU+KG1fY291bnQpIC8gZGZnQ29kZUJsb2NrLT5zcGVjdWxhdGl2ZUZh
aWxDb3VudGVyKCkgPD0gT3B0aW9uczo6b3NyRXhpdFByb21pbmVuY2VGb3JGcmVxdWVudEV4aXRT
aXRlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgcmV0dXJuIEFzc2VtYmx5SGVs
cGVyczo6YmFzZWxpbmVDb2RlQmxvY2tGb3JPcmlnaW5BbmRCYXNlbGluZUNvZGVCbG9jayhtX2Nv
ZGVPcmlnaW4sIHByb2ZpbGVkQ29kZUJsb2NrKS0+YWRkRnJlcXVlbnRFeGl0U2l0ZShGcmVxdWVu
dEV4aXRTaXRlKG1fY29kZU9yaWdpbi5ieXRlY29kZUluZGV4LCBtX2tpbmQpKTsKKyAgICByZXR1
cm4gYmFzZWxpbmVDb2RlQmxvY2tGb3JPcmlnaW5BbmRCYXNlbGluZUNvZGVCbG9jayhtX2NvZGVP
cmlnaW4sIHByb2ZpbGVkQ29kZUJsb2NrKS0+YWRkRnJlcXVlbnRFeGl0U2l0ZShGcmVxdWVudEV4
aXRTaXRlKG1fY29kZU9yaWdpbi5ieXRlY29kZUluZGV4LCBtX2tpbmQpKTsKIH0KIAogfSB9IC8v
IG5hbWVzcGFjZSBKU0M6OkRGRwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQ
cm9wYWdhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1Byb3BhZ2F0b3IuY3BwCShyZXZpc2lvbiAxMDgxNTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1Byb3BhZ2F0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNywxMSArMzcsMTEg
QEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCiBjbGFzcyBQcm9wYWdhdG9yIHsK
IHB1YmxpYzoKLSAgICBQcm9wYWdhdG9yKEdyYXBoJiBncmFwaCwgSlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrKQor
ICAgIFByb3BhZ2F0b3IoR3JhcGgmIGdyYXBoKQogICAgICAgICA6IG1fZ3JhcGgoZ3JhcGgpCi0g
ICAgICAgICwgbV9nbG9iYWxEYXRhKGdsb2JhbERhdGEpCi0gICAgICAgICwgbV9jb2RlQmxvY2so
Y29kZUJsb2NrKQotICAgICAgICAsIG1fcHJvZmlsZWRCbG9jayhwcm9maWxlZEJsb2NrKQorICAg
ICAgICAsIG1fZ2xvYmFsRGF0YShncmFwaC5tX2dsb2JhbERhdGEpCisgICAgICAgICwgbV9jb2Rl
QmxvY2soZ3JhcGgubV9jb2RlQmxvY2spCisgICAgICAgICwgbV9wcm9maWxlZEJsb2NrKGdyYXBo
Lm1fcHJvZmlsZWRCbG9jaykKICAgICB7CiAgICAgICAgIC8vIFJlcGxhY2VtZW50cyBhcmUgdXNl
ZCB0byBpbXBsZW1lbnQgbG9jYWwgY29tbW9uIHN1YmV4cHJlc3Npb24gZWxpbWluYXRpb24uCiAg
ICAgICAgIG1fcmVwbGFjZW1lbnRzLnJlc2l6ZShtX2dyYXBoLnNpemUoKSk7CkBAIC05MywxNyAr
OTMsMTcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBib29sIGlzTm90TmVnWmVybyhOb2RlSW5k
ZXggbm9kZUluZGV4KQogICAgIHsKLSAgICAgICAgaWYgKCFtX2dyYXBoLmlzTnVtYmVyQ29uc3Rh
bnQobV9jb2RlQmxvY2ssIG5vZGVJbmRleCkpCisgICAgICAgIGlmICghbV9ncmFwaC5pc051bWJl
ckNvbnN0YW50KG5vZGVJbmRleCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
IGRvdWJsZSB2YWx1ZSA9IG1fZ3JhcGgudmFsdWVPZk51bWJlckNvbnN0YW50KG1fY29kZUJsb2Nr
LCBub2RlSW5kZXgpOworICAgICAgICBkb3VibGUgdmFsdWUgPSBtX2dyYXBoLnZhbHVlT2ZOdW1i
ZXJDb25zdGFudChub2RlSW5kZXgpOwogICAgICAgICByZXR1cm4gIXZhbHVlICYmIDEuMCAvIHZh
bHVlIDwgMC4wOwogICAgIH0KICAgICAKICAgICBib29sIGlzTm90WmVybyhOb2RlSW5kZXggbm9k
ZUluZGV4KQogICAgIHsKLSAgICAgICAgaWYgKCFtX2dyYXBoLmlzTnVtYmVyQ29uc3RhbnQobV9j
b2RlQmxvY2ssIG5vZGVJbmRleCkpCisgICAgICAgIGlmICghbV9ncmFwaC5pc051bWJlckNvbnN0
YW50KG5vZGVJbmRleCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHJldHVy
biAhIW1fZ3JhcGgudmFsdWVPZk51bWJlckNvbnN0YW50KG1fY29kZUJsb2NrLCBub2RlSW5kZXgp
OworICAgICAgICByZXR1cm4gISFtX2dyYXBoLnZhbHVlT2ZOdW1iZXJDb25zdGFudChub2RlSW5k
ZXgpOwogICAgIH0KICAgICAKICAgICB2b2lkIHByb3BhZ2F0ZUFyaXRoTm9kZUZsYWdzKE5vZGUm
IG5vZGUpCkBAIC0zMDEsNyArMzAxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgc3dpdGNoIChvcCkg
ewogICAgICAgICBjYXNlIEpTQ29uc3RhbnQ6CiAgICAgICAgIGNhc2UgV2Vha0pTQ29uc3RhbnQ6
IHsKLSAgICAgICAgICAgIGNoYW5nZWQgfD0gc2V0UHJlZGljdGlvbihwcmVkaWN0aW9uRnJvbVZh
bHVlKG1fZ3JhcGgudmFsdWVPZkpTQ29uc3RhbnQobV9jb2RlQmxvY2ssIG1fY29tcGlsZUluZGV4
KSkpOworICAgICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKHByZWRpY3Rpb25Gcm9t
VmFsdWUobV9ncmFwaC52YWx1ZU9mSlNDb25zdGFudChtX2NvbXBpbGVJbmRleCkpKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAKQEAgLTM2Nyw3ICszNjcsNyBA
QCBwcml2YXRlOgogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAobGVmdCAmJiByaWdodCkg
ewogICAgICAgICAgICAgICAgIGlmIChpc051bWJlclByZWRpY3Rpb24obGVmdCkgJiYgaXNOdW1i
ZXJQcmVkaWN0aW9uKHJpZ2h0KSkgewotICAgICAgICAgICAgICAgICAgICBpZiAobV9ncmFwaC5h
ZGRTaG91bGRTcGVjdWxhdGVJbnRlZ2VyKG5vZGUsIG1fY29kZUJsb2NrKSkKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKG1fZ3JhcGguYWRkU2hvdWxkU3BlY3VsYXRlSW50ZWdlcihub2RlKSkKICAg
ICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFByZWRpY3RJ
bnQzMik7CiAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAg
IGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFByZWRpY3REb3VibGUpOwpAQCAtMzg2LDcgKzM4
Niw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBQcmVkaWN0ZWRUeXBlIHJpZ2h0ID0gbV9ncmFw
aFtub2RlLmNoaWxkMigpXS5wcmVkaWN0aW9uKCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAg
IGlmIChsZWZ0ICYmIHJpZ2h0KSB7Ci0gICAgICAgICAgICAgICAgaWYgKG1fZ3JhcGguYWRkU2hv
dWxkU3BlY3VsYXRlSW50ZWdlcihub2RlLCBtX2NvZGVCbG9jaykpCisgICAgICAgICAgICAgICAg
aWYgKG1fZ3JhcGguYWRkU2hvdWxkU3BlY3VsYXRlSW50ZWdlcihub2RlKSkKICAgICAgICAgICAg
ICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oUHJlZGljdEludDMyKTsKICAgICAg
ICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVk
aWN0aW9uKFByZWRpY3REb3VibGUpOwpAQCAtNzEzLDcgKzcxMyw3IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhOjpCYWxsb3QgYmFsbG90OwogICAgICAgICAg
ICAgICAgIAogICAgICAgICAgICAgICAgIGlmIChpc051bWJlclByZWRpY3Rpb24obGVmdCkgJiYg
aXNOdW1iZXJQcmVkaWN0aW9uKHJpZ2h0KQotICAgICAgICAgICAgICAgICAgICAmJiAhbV9ncmFw
aC5hZGRTaG91bGRTcGVjdWxhdGVJbnRlZ2VyKG5vZGUsIG1fY29kZUJsb2NrKSkKKyAgICAgICAg
ICAgICAgICAgICAgJiYgIW1fZ3JhcGguYWRkU2hvdWxkU3BlY3VsYXRlSW50ZWdlcihub2RlKSkK
ICAgICAgICAgICAgICAgICAgICAgYmFsbG90ID0gVmFyaWFibGVBY2Nlc3NEYXRhOjpWb3RlRG91
YmxlOwogICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgYmFsbG90ID0g
VmFyaWFibGVBY2Nlc3NEYXRhOjpWb3RlVmFsdWU7CkBAIC0xNzAwLDcgKzE3MDAsNyBAQCBwcml2
YXRlOgogICAgICAgICAKICAgICAgICAgQWJzdHJhY3RTdGF0ZTo6aW5pdGlhbGl6ZShtX2dyYXBo
KTsKICAgICAgICAgCi0gICAgICAgIEFic3RyYWN0U3RhdGUgc3RhdGUobV9jb2RlQmxvY2ssIG1f
Z3JhcGgpOworICAgICAgICBBYnN0cmFjdFN0YXRlIHN0YXRlKG1fZ3JhcGgpOwogICAgICAgICAK
ICAgICAgICAgZG8gewogICAgICAgICAgICAgbV9jaGFuZ2VkID0gZmFsc2U7CkBAIC0xNzI2LDEz
ICsxNzI2LDkgQEAgcHJpdmF0ZToKICAgICBGaXhlZEFycmF5PE5vZGVJbmRleCwgTGFzdE5vZGVJ
ZD4gbV9sYXN0U2VlbjsKIH07CiAKLXZvaWQgcHJvcGFnYXRlKEdyYXBoJiBncmFwaCwgSlNHbG9i
YWxEYXRhKiBnbG9iYWxEYXRhLCBDb2RlQmxvY2sqIGNvZGVCbG9jaykKK3ZvaWQgcHJvcGFnYXRl
KEdyYXBoJiBncmFwaCkKIHsKLSAgICBBU1NFUlQoY29kZUJsb2NrKTsKLSAgICBDb2RlQmxvY2sq
IHByb2ZpbGVkQmxvY2sgPSBjb2RlQmxvY2stPmFsdGVybmF0aXZlKCk7Ci0gICAgQVNTRVJUKHBy
b2ZpbGVkQmxvY2spOwotICAgIAotICAgIFByb3BhZ2F0b3IgcHJvcGFnYXRvcihncmFwaCwgKmds
b2JhbERhdGEsIGNvZGVCbG9jaywgcHJvZmlsZWRCbG9jayk7CisgICAgUHJvcGFnYXRvciBwcm9w
YWdhdG9yKGdyYXBoKTsKICAgICBwcm9wYWdhdG9yLmZpeHBvaW50KCk7CiAgICAgCiB9CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Byb3BhZ2F0b3IuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Byb3BhZ2F0b3IuaAkocmV2aXNpb24gMTA4
MTUyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9wYWdhdG9yLmgJKHdvcmtp
bmcgY29weSkKQEAgLTM4LDcgKzM4LDcgQEAgY2xhc3MgSlNHbG9iYWxEYXRhOwogbmFtZXNwYWNl
IERGRyB7CiAKIC8vIFByb3BhZ2F0ZSBkeW5hbWljIHByZWRpY3Rpb25zIGZyb20gdmFsdWUgc291
cmNlcyB0byB2YXJpYWJsZXMuCi12b2lkIHByb3BhZ2F0ZShHcmFwaCYsIEpTR2xvYmFsRGF0YSos
IENvZGVCbG9jayopOwordm9pZCBwcm9wYWdhdGUoR3JhcGgmKTsKIAogfSB9IC8vIG5hbWVzcGFj
ZSBKU0M6OkRGRwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmNwcAkocmV2aXNpb24gMTA4MTUyKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyODksOCAr
MTI4OSw4IEBAIFZhbHVlUmVjb3ZlcnkgU3BlY3VsYXRpdmVKSVQ6OmNvbXB1dGVWYWwKICAgICAg
ICAgcmV0dXJuIFZhbHVlUmVjb3Zlcnk6OmFscmVhZHlJblJlZ2lzdGVyRmlsZUFzVW5ib3hlZERv
dWJsZSgpOwogCiAgICAgY2FzZSBIYXZlTm9kZTogewotICAgICAgICBpZiAobV9qaXQuaXNDb25z
dGFudCh2YWx1ZVNvdXJjZS5ub2RlSW5kZXgoKSkpCi0gICAgICAgICAgICByZXR1cm4gVmFsdWVS
ZWNvdmVyeTo6Y29uc3RhbnQobV9qaXQudmFsdWVPZkpTQ29uc3RhbnQodmFsdWVTb3VyY2Uubm9k
ZUluZGV4KCkpKTsKKyAgICAgICAgaWYgKGlzQ29uc3RhbnQodmFsdWVTb3VyY2Uubm9kZUluZGV4
KCkpKQorICAgICAgICAgICAgcmV0dXJuIFZhbHVlUmVjb3Zlcnk6OmNvbnN0YW50KHZhbHVlT2ZK
U0NvbnN0YW50KHZhbHVlU291cmNlLm5vZGVJbmRleCgpKSk7CiAgICAgCiAgICAgICAgIE5vZGUq
IG5vZGVQdHIgPSAmYXQodmFsdWVTb3VyY2Uubm9kZUluZGV4KCkpOwogICAgICAgICBpZiAoIW5v
ZGVQdHItPnNob3VsZEdlbmVyYXRlKCkpIHsKQEAgLTIyMjAsNyArMjIyMCw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVTb2Z0TW9kdWxvKE4KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZUFkZChOb2RlJiBub2RlKQogewotICAgIGlmIChtX2ppdC5ncmFwaCgpLmFkZFNob3Vs
ZFNwZWN1bGF0ZUludGVnZXIobm9kZSwgbV9qaXQuY29kZUJsb2NrKCkpKSB7CisgICAgaWYgKG1f
aml0LmdyYXBoKCkuYWRkU2hvdWxkU3BlY3VsYXRlSW50ZWdlcihub2RlKSkgewogICAgICAgICBp
ZiAoaXNOdW1iZXJDb25zdGFudChub2RlLmNoaWxkMSgpLmluZGV4KCkpKSB7CiAgICAgICAgICAg
ICBpbnQzMl90IGltbTEgPSB2YWx1ZU9mTnVtYmVyQ29uc3RhbnRBc0ludDMyKG5vZGUuY2hpbGQx
KCkuaW5kZXgoKSk7CiAgICAgICAgICAgICBTcGVjdWxhdGVJbnRlZ2VyT3BlcmFuZCBvcDIodGhp
cywgbm9kZS5jaGlsZDIoKSk7CkBAIC0yMzA1LDcgKzIzMDUsNyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlQWRkKE5vZGUmIG5vCiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVB
cml0aFN1YihOb2RlJiBub2RlKQogewotICAgIGlmIChtX2ppdC5ncmFwaCgpLmFkZFNob3VsZFNw
ZWN1bGF0ZUludGVnZXIobm9kZSwgbV9qaXQuY29kZUJsb2NrKCkpKSB7CisgICAgaWYgKG1faml0
LmdyYXBoKCkuYWRkU2hvdWxkU3BlY3VsYXRlSW50ZWdlcihub2RlKSkgewogICAgICAgICBpZiAo
aXNOdW1iZXJDb25zdGFudChub2RlLmNoaWxkMigpLmluZGV4KCkpKSB7CiAgICAgICAgICAgICBT
cGVjdWxhdGVJbnRlZ2VyT3BlcmFuZCBvcDEodGhpcywgbm9kZS5jaGlsZDEoKSk7CiAgICAgICAg
ICAgICBpbnQzMl90IGltbTIgPSB2YWx1ZU9mTnVtYmVyQ29uc3RhbnRBc0ludDMyKG5vZGUuY2hp
bGQyKCkuaW5kZXgoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5oCShyZXZpc2lvbiAxMDgxNTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTczNSwxNSArNzM1
LDE1IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc0tub3duTm90Q2VsbChOb2RlSW5kZXgpOwogICAg
IAogICAgIC8vIENoZWNrcy9hY2Nlc3NvcnMgZm9yIGNvbnN0YW50IHZhbHVlcy4KLSAgICBib29s
IGlzQ29uc3RhbnQoTm9kZUluZGV4IG5vZGVJbmRleCkgeyByZXR1cm4gbV9qaXQuaXNDb25zdGFu
dChub2RlSW5kZXgpOyB9Ci0gICAgYm9vbCBpc0pTQ29uc3RhbnQoTm9kZUluZGV4IG5vZGVJbmRl
eCkgeyByZXR1cm4gbV9qaXQuaXNKU0NvbnN0YW50KG5vZGVJbmRleCk7IH0KLSAgICBib29sIGlz
SW50MzJDb25zdGFudChOb2RlSW5kZXggbm9kZUluZGV4KSB7IHJldHVybiBtX2ppdC5pc0ludDMy
Q29uc3RhbnQobm9kZUluZGV4KTsgfQotICAgIGJvb2wgaXNEb3VibGVDb25zdGFudChOb2RlSW5k
ZXggbm9kZUluZGV4KSB7IHJldHVybiBtX2ppdC5pc0RvdWJsZUNvbnN0YW50KG5vZGVJbmRleCk7
IH0KLSAgICBib29sIGlzTnVtYmVyQ29uc3RhbnQoTm9kZUluZGV4IG5vZGVJbmRleCkgeyByZXR1
cm4gbV9qaXQuaXNOdW1iZXJDb25zdGFudChub2RlSW5kZXgpOyB9Ci0gICAgYm9vbCBpc0Jvb2xl
YW5Db25zdGFudChOb2RlSW5kZXggbm9kZUluZGV4KSB7IHJldHVybiBtX2ppdC5pc0Jvb2xlYW5D
b25zdGFudChub2RlSW5kZXgpOyB9Ci0gICAgYm9vbCBpc0Z1bmN0aW9uQ29uc3RhbnQoTm9kZUlu
ZGV4IG5vZGVJbmRleCkgeyByZXR1cm4gbV9qaXQuaXNGdW5jdGlvbkNvbnN0YW50KG5vZGVJbmRl
eCk7IH0KLSAgICBpbnQzMl90IHZhbHVlT2ZJbnQzMkNvbnN0YW50KE5vZGVJbmRleCBub2RlSW5k
ZXgpIHsgcmV0dXJuIG1faml0LnZhbHVlT2ZJbnQzMkNvbnN0YW50KG5vZGVJbmRleCk7IH0KLSAg
ICBkb3VibGUgdmFsdWVPZk51bWJlckNvbnN0YW50KE5vZGVJbmRleCBub2RlSW5kZXgpIHsgcmV0
dXJuIG1faml0LnZhbHVlT2ZOdW1iZXJDb25zdGFudChub2RlSW5kZXgpOyB9CisgICAgYm9vbCBp
c0NvbnN0YW50KE5vZGVJbmRleCBub2RlSW5kZXgpIHsgcmV0dXJuIG1faml0LmdyYXBoKCkuaXND
b25zdGFudChub2RlSW5kZXgpOyB9CisgICAgYm9vbCBpc0pTQ29uc3RhbnQoTm9kZUluZGV4IG5v
ZGVJbmRleCkgeyByZXR1cm4gbV9qaXQuZ3JhcGgoKS5pc0pTQ29uc3RhbnQobm9kZUluZGV4KTsg
fQorICAgIGJvb2wgaXNJbnQzMkNvbnN0YW50KE5vZGVJbmRleCBub2RlSW5kZXgpIHsgcmV0dXJu
IG1faml0LmdyYXBoKCkuaXNJbnQzMkNvbnN0YW50KG5vZGVJbmRleCk7IH0KKyAgICBib29sIGlz
RG91YmxlQ29uc3RhbnQoTm9kZUluZGV4IG5vZGVJbmRleCkgeyByZXR1cm4gbV9qaXQuZ3JhcGgo
KS5pc0RvdWJsZUNvbnN0YW50KG5vZGVJbmRleCk7IH0KKyAgICBib29sIGlzTnVtYmVyQ29uc3Rh
bnQoTm9kZUluZGV4IG5vZGVJbmRleCkgeyByZXR1cm4gbV9qaXQuZ3JhcGgoKS5pc051bWJlckNv
bnN0YW50KG5vZGVJbmRleCk7IH0KKyAgICBib29sIGlzQm9vbGVhbkNvbnN0YW50KE5vZGVJbmRl
eCBub2RlSW5kZXgpIHsgcmV0dXJuIG1faml0LmdyYXBoKCkuaXNCb29sZWFuQ29uc3RhbnQobm9k
ZUluZGV4KTsgfQorICAgIGJvb2wgaXNGdW5jdGlvbkNvbnN0YW50KE5vZGVJbmRleCBub2RlSW5k
ZXgpIHsgcmV0dXJuIG1faml0LmdyYXBoKCkuaXNGdW5jdGlvbkNvbnN0YW50KG5vZGVJbmRleCk7
IH0KKyAgICBpbnQzMl90IHZhbHVlT2ZJbnQzMkNvbnN0YW50KE5vZGVJbmRleCBub2RlSW5kZXgp
IHsgcmV0dXJuIG1faml0LmdyYXBoKCkudmFsdWVPZkludDMyQ29uc3RhbnQobm9kZUluZGV4KTsg
fQorICAgIGRvdWJsZSB2YWx1ZU9mTnVtYmVyQ29uc3RhbnQoTm9kZUluZGV4IG5vZGVJbmRleCkg
eyByZXR1cm4gbV9qaXQuZ3JhcGgoKS52YWx1ZU9mTnVtYmVyQ29uc3RhbnQobm9kZUluZGV4KTsg
fQogICAgIGludDMyX3QgdmFsdWVPZk51bWJlckNvbnN0YW50QXNJbnQzMihOb2RlSW5kZXggbm9k
ZUluZGV4KQogICAgIHsKICAgICAgICAgaWYgKGlzSW50MzJDb25zdGFudChub2RlSW5kZXgpKQpA
QCAtNzUzLDkgKzc1Myw5IEBAIHByaXZhdGU6CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICB2
b2lkKiBhZGRyZXNzT2ZEb3VibGVDb25zdGFudChOb2RlSW5kZXggbm9kZUluZGV4KSB7IHJldHVy
biBtX2ppdC5hZGRyZXNzT2ZEb3VibGVDb25zdGFudChub2RlSW5kZXgpOyB9CiAjZW5kaWYKLSAg
ICBKU1ZhbHVlIHZhbHVlT2ZKU0NvbnN0YW50KE5vZGVJbmRleCBub2RlSW5kZXgpIHsgcmV0dXJu
IG1faml0LnZhbHVlT2ZKU0NvbnN0YW50KG5vZGVJbmRleCk7IH0KLSAgICBib29sIHZhbHVlT2ZC
b29sZWFuQ29uc3RhbnQoTm9kZUluZGV4IG5vZGVJbmRleCkgeyByZXR1cm4gbV9qaXQudmFsdWVP
ZkJvb2xlYW5Db25zdGFudChub2RlSW5kZXgpOyB9Ci0gICAgSlNGdW5jdGlvbiogdmFsdWVPZkZ1
bmN0aW9uQ29uc3RhbnQoTm9kZUluZGV4IG5vZGVJbmRleCkgeyByZXR1cm4gbV9qaXQudmFsdWVP
ZkZ1bmN0aW9uQ29uc3RhbnQobm9kZUluZGV4KTsgfQorICAgIEpTVmFsdWUgdmFsdWVPZkpTQ29u
c3RhbnQoTm9kZUluZGV4IG5vZGVJbmRleCkgeyByZXR1cm4gbV9qaXQuZ3JhcGgoKS52YWx1ZU9m
SlNDb25zdGFudChub2RlSW5kZXgpOyB9CisgICAgYm9vbCB2YWx1ZU9mQm9vbGVhbkNvbnN0YW50
KE5vZGVJbmRleCBub2RlSW5kZXgpIHsgcmV0dXJuIG1faml0LmdyYXBoKCkudmFsdWVPZkJvb2xl
YW5Db25zdGFudChub2RlSW5kZXgpOyB9CisgICAgSlNGdW5jdGlvbiogdmFsdWVPZkZ1bmN0aW9u
Q29uc3RhbnQoTm9kZUluZGV4IG5vZGVJbmRleCkgeyByZXR1cm4gbV9qaXQuZ3JhcGgoKS52YWx1
ZU9mRnVuY3Rpb25Db25zdGFudChub2RlSW5kZXgpOyB9CiAgICAgYm9vbCBpc051bGxDb25zdGFu
dChOb2RlSW5kZXggbm9kZUluZGV4KQogICAgIHsKICAgICAgICAgaWYgKCFpc0NvbnN0YW50KG5v
ZGVJbmRleCkpCkBAIC0xNzU5LDcgKzE3NTksNyBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAg
aWYgKCFtX2NvbXBpbGVPa2F5KQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBtX2ppdC5j
b2RlQmxvY2soKS0+YXBwZW5kT1NSRXhpdChPU1JFeGl0KGtpbmQsIGpzVmFsdWVTb3VyY2UsIG1f
aml0LnZhbHVlUHJvZmlsZUZvcihub2RlSW5kZXgpLCBqdW1wVG9GYWlsLCB0aGlzKSk7CisgICAg
ICAgIG1faml0LmNvZGVCbG9jaygpLT5hcHBlbmRPU1JFeGl0KE9TUkV4aXQoa2luZCwganNWYWx1
ZVNvdXJjZSwgbV9qaXQuZ3JhcGgoKS52YWx1ZVByb2ZpbGVGb3Iobm9kZUluZGV4KSwganVtcFRv
RmFpbCwgdGhpcykpOwogICAgIH0KICAgICB2b2lkIHNwZWN1bGF0aW9uQ2hlY2soRXhpdEtpbmQg
a2luZCwgSlNWYWx1ZVNvdXJjZSBqc1ZhbHVlU291cmNlLCBOb2RlVXNlIG5vZGVVc2UsIE1hY3Jv
QXNzZW1ibGVyOjpKdW1wIGp1bXBUb0ZhaWwpCiAgICAgewpAQCAtMTc4Miw3ICsxNzgyLDcgQEAg
cHJpdmF0ZToKICAgICAgICAgaWYgKCFtX2NvbXBpbGVPa2F5KQogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICBtX2ppdC5jb2RlQmxvY2soKS0+YXBwZW5kU3BlY3VsYXRpb25SZWNvdmVyeShy
ZWNvdmVyeSk7Ci0gICAgICAgIG1faml0LmNvZGVCbG9jaygpLT5hcHBlbmRPU1JFeGl0KE9TUkV4
aXQoa2luZCwganNWYWx1ZVNvdXJjZSwgbV9qaXQudmFsdWVQcm9maWxlRm9yKG5vZGVJbmRleCks
IGp1bXBUb0ZhaWwsIHRoaXMsIG1faml0LmNvZGVCbG9jaygpLT5udW1iZXJPZlNwZWN1bGF0aW9u
UmVjb3ZlcmllcygpKSk7CisgICAgICAgIG1faml0LmNvZGVCbG9jaygpLT5hcHBlbmRPU1JFeGl0
KE9TUkV4aXQoa2luZCwganNWYWx1ZVNvdXJjZSwgbV9qaXQuZ3JhcGgoKS52YWx1ZVByb2ZpbGVG
b3Iobm9kZUluZGV4KSwganVtcFRvRmFpbCwgdGhpcywgbV9qaXQuY29kZUJsb2NrKCktPm51bWJl
ck9mU3BlY3VsYXRpb25SZWNvdmVyaWVzKCkpKTsKICAgICB9CiAgICAgdm9pZCBzcGVjdWxhdGlv
bkNoZWNrKEV4aXRLaW5kIGtpbmQsIEpTVmFsdWVTb3VyY2UganNWYWx1ZVNvdXJjZSwgTm9kZVVz
ZSBub2RlVXNlLCBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBqdW1wVG9GYWlsLCBjb25zdCBTcGVjdWxh
dGlvblJlY292ZXJ5JiByZWNvdmVyeSkKICAgICB7CkBAIC0yNDg3LDcgKzI0ODcsNyBAQCBpbmxp
bmUgU3BlY3VsYXRpdmVKSVQ6OlNwZWN1bGF0aXZlSklUKEpJCiAgICAgLCBtX2FyZ3VtZW50cyhq
aXQuY29kZUJsb2NrKCktPm51bVBhcmFtZXRlcnMoKSkKICAgICAsIG1fdmFyaWFibGVzKGppdC5n
cmFwaCgpLm1fbG9jYWxWYXJzKQogICAgICwgbV9sYXN0U2V0T3BlcmFuZChzdGQ6Om51bWVyaWNf
bGltaXRzPGludD46Om1heCgpKQotICAgICwgbV9zdGF0ZShtX2ppdC5jb2RlQmxvY2soKSwgbV9q
aXQuZ3JhcGgoKSkKKyAgICAsIG1fc3RhdGUobV9qaXQuZ3JhcGgoKSkKIHsKIH0KIAo=
</data>
<flag name="review"
          id="129894"
          type_id="1"
          status="+"
          setter="barraclough"
    />
          </attachment>
      

    </bug>

</bugzilla>