<?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>94146</bug_id>
          
          <creation_ts>2012-08-15 13:50:11 -0700</creation_ts>
          <short_desc>Remove dependency on RenderStyle from FractionalLayoutBoxExtent and LayoutBox</short_desc>
          <delta_ts>2012-08-23 09:22:27 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Emil A Eklund">eae</reporter>
          <assigned_to name="Emil A Eklund">eae</assigned_to>
          <cc>cmarcelo</cc>
    
    <cc>eric</cc>
    
    <cc>hyatt</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>696339</commentid>
    <comment_count>0</comment_count>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2012-08-15 13:50:11 -0700</bug_when>
    <thetext>FractionalLayoutBoxExtent and LayoutBox currently have a dependency on RenderStyle to resolve writing mode and directional. This breaks encapsulation and makes it hard to reuse the box classes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>696446</commentid>
    <comment_count>1</comment_count>
      <attachid>158651</attachid>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2012-08-15 15:48:45 -0700</bug_when>
    <thetext>Created attachment 158651
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>696447</commentid>
    <comment_count>2</comment_count>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2012-08-15 15:50:00 -0700</bug_when>
    <thetext>s/directional/directionality/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>698606</commentid>
    <comment_count>3</comment_count>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2012-08-17 13:39:39 -0700</bug_when>
    <thetext>Simon, any chance you could take a look at this change?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>702010</commentid>
    <comment_count>4</comment_count>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2012-08-22 09:43:14 -0700</bug_when>
    <thetext>Ping?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>702136</commentid>
    <comment_count>5</comment_count>
      <attachid>158651</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-08-22 11:57:41 -0700</bug_when>
    <thetext>Comment on attachment 158651
Patch

I think this is a fantastic change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>702144</commentid>
    <comment_count>6</comment_count>
      <attachid>158651</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-22 12:01:04 -0700</bug_when>
    <thetext>Comment on attachment 158651
Patch

Rejecting attachment 158651 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2

Last 500 characters of output:
at 3145 (offset 5 lines).
Hunk #4 succeeded at 3306 (offset 5 lines).
patching file Source/WebCore/rendering/RenderBox.h
Hunk #1 succeeded at 234 (offset 4 lines).
patching file Source/WebCore/rendering/style/RenderStyle.h
Hunk #2 succeeded at 725 (offset 7 lines).
patching file Source/WebCore/rendering/style/RenderStyleConstants.h

Failed to run &quot;[u&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply&apos;, u&apos;--force&apos;, u&apos;--reviewer&apos;, u&apos;Eric Seidel&apos;]&quot; exit_code: 1 cwd: /mnt/git/webkit-commit-queue/

Full output: http://queues.webkit.org/results/13570324</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>702207</commentid>
    <comment_count>7</comment_count>
      <attachid>158651</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-08-22 12:33:18 -0700</bug_when>
    <thetext>Comment on attachment 158651
Patch

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

Thanks for fixing this platform violation.

&gt; Source/WebCore/ChangeLog:54
&gt; +        Change methods to take a WirtingMode parameter instead of a RenderStyle pointer.

Typo: WritingMode

&gt; Source/WebCore/rendering/style/RenderStyleConstants.h:-136
&gt; -};

Nit: May be good to leave some comment about where to find WritingMode&apos;s definition, especially since we don&apos;t include it here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>703068</commentid>
    <comment_count>8</comment_count>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2012-08-23 09:21:48 -0700</bug_when>
    <thetext>Committed r126437: &lt;http://trac.webkit.org/changeset/126437&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>158651</attachid>
            <date>2012-08-15 15:48:45 -0700</date>
            <delta_ts>2012-08-23 09:22:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94146-20120815154811.patch</filename>
            <type>text/plain</type>
            <size>40428</size>
            <attacher name="Emil A Eklund">eae</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyNTcwOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg2IEBACisyMDEyLTA4LTE1ICBFbWlsIEEg
RWtsdW5kICA8ZWFlQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZW1vdmUgZGVwZW5kZW5jeSBv
biBSZW5kZXJTdHlsZSBmcm9tIEZyYWN0aW9uYWxMYXlvdXRCb3hFeHRlbnQgYW5kIExheW91dEJv
eAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTQxNDYK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGcmFjdGlv
bmFsTGF5b3V0Qm94RXh0ZW50IGFuZCBMYXlvdXRCb3ggY3VycmVudGx5IGhhdmUgYSBkZXBlbmRl
bmN5IG9uCisgICAgICAgIFJlbmRlclN0eWxlIHRvIHJlc29sdmUgd3JpdGluZyBtb2RlIGFuZCB0
ZXh0IGRpcmVjdGlvbi4KKyAgICAgICAgVGhpcyBpcyB1bmRlc2lyYWJsZSBhbmQgYnJlYWtzIGVu
Y2Fwc3VsYXRpb24uCisKKyAgICAgICAgQ2hhbmdlIEZyYWN0aW9uYWxMYXlvdXRCb3hFeHRlbnQg
YW5kIExlbmd0aEJveCB0byB0YWtlIGEgd3JpdGluZyBtb2RlCisgICAgICAgIHBhcmFtZXRlciwg
YW5kIHRleHQgZGlyZWN0aW9uIGFzIG5lZWRlZCwgaW5zdGVhZCBvZiBhIHBvaW50ZXIgdG8gYQor
ICAgICAgICBSZW5kZXJTdHlsZSBvYmplY3QuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBubyBj
aGFuZ2UgaW4gZnVuY3Rpb25hbGl0eS4KKworICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAg
ICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgIEFkZCBuZXcgV3JpdGluZ01vZGUuaCBm
aWxlLgorICAgICAgICAKKyAgICAgICAgKiBjc3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5o
OgorICAgICAgICAqIGNzcy9DU1NQcm9wZXJ0eS5oOgorICAgICAgICAqIGNzcy9DU1NUb1N0eWxl
TWFwLmg6CisgICAgICAgIENoYW5nZSBpbmNsdWRlcyBhcyBuZWVkZWQuCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9MZW5ndGhCb3guaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9MZW5ndGhCb3guY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoQm94Ojpsb2dpY2FsTGVmdCk6CisgICAgICAgIChXZWJD
b3JlOjpMZW5ndGhCb3g6OmxvZ2ljYWxSaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGhC
b3g6OmJlZm9yZSk6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGhCb3g6OmFmdGVyKToKKyAgICAg
ICAgQ2hhbmdlIG1ldGhvZHMgdG8gdGFrZSBhIFdpcnRpbmdNb2RlIHBhcmFtZXRlciBpbnN0ZWFk
IG9mIGEgUmVuZGVyU3R5bGUgcG9pbnRlci4KKyAgICAgICAgCisgICAgICAgIChXZWJDb3JlOjpM
ZW5ndGhCb3g6OnN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aEJveDo6ZW5kKToKKyAg
ICAgICAgQ2hhbmdlIG1ldGhvZHMgdG8gdGFrZSBXcml0aW5nTW9kZSBhbmQgVGV4dERpcmVjdGlv
biBwYXJhbWV0ZXJzIGluc3RlYWQgb2YgYSBSZW5kZXJTdHlsZSBwb2ludGVyLgorICAgICAgICAK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9GcmFjdGlvbmFsTGF5b3V0Qm94RXh0ZW50Lmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRnJhY3Rpb25hbExheW91dEJveEV4dGVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFjdGlvbmFsTGF5b3V0Qm94RXh0ZW50Ojpsb2dpY2Fs
VG9wKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYWN0aW9uYWxMYXlvdXRCb3hFeHRlbnQ6OmxvZ2lj
YWxCb3R0b20pOgorICAgICAgICAoV2ViQ29yZTo6RnJhY3Rpb25hbExheW91dEJveEV4dGVudDo6
bG9naWNhbExlZnQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhY3Rpb25hbExheW91dEJveEV4dGVu
dDo6bG9naWNhbFJpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYWN0aW9uYWxMYXlvdXRCb3hF
eHRlbnQ6OmJlZm9yZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFjdGlvbmFsTGF5b3V0Qm94RXh0
ZW50OjphZnRlcik6CisgICAgICAgIChXZWJDb3JlOjpGcmFjdGlvbmFsTGF5b3V0Qm94RXh0ZW50
OjpzZXRCZWZvcmUpOgorICAgICAgICAoV2ViQ29yZTo6RnJhY3Rpb25hbExheW91dEJveEV4dGVu
dDo6c2V0QWZ0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6RnJhY3Rpb25hbExheW91dEJveEV4dGVu
dDo6bXV0YWJsZUxvZ2ljYWxMZWZ0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYWN0aW9uYWxMYXlv
dXRCb3hFeHRlbnQ6Om11dGFibGVMb2dpY2FsUmlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6RnJh
Y3Rpb25hbExheW91dEJveEV4dGVudDo6bXV0YWJsZUJlZm9yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFjdGlvbmFsTGF5b3V0Qm94RXh0ZW50OjptdXRhYmxlQWZ0ZXIpOgorICAgICAgICBDaGFu
Z2UgbWV0aG9kcyB0byB0YWtlIGEgV2lydGluZ01vZGUgcGFyYW1ldGVyIGluc3RlYWQgb2YgYSBS
ZW5kZXJTdHlsZSBwb2ludGVyLgorCisgICAgICAgIChXZWJDb3JlOjpGcmFjdGlvbmFsTGF5b3V0
Qm94RXh0ZW50OjpzdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFjdGlvbmFsTGF5b3V0Qm94
RXh0ZW50OjplbmQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhY3Rpb25hbExheW91dEJveEV4dGVu
dDo6c2V0U3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhY3Rpb25hbExheW91dEJveEV4dGVu
dDo6c2V0RW5kKToKKyAgICAgICAgQ2hhbmdlIG1ldGhvZHMgdG8gdGFrZSBXcml0aW5nTW9kZSBh
bmQgVGV4dERpcmVjdGlvbiBwYXJhbWV0ZXJzIGluc3RlYWQgb2YgYSBSZW5kZXJTdHlsZSBwb2lu
dGVyLgorCisgICAgICAgICogcGxhdGZvcm0vdGV4dC9UZXh0RGlyZWN0aW9uLmg6CisgICAgICAg
IChXZWJDb3JlOjppc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKToKKyAgICAgICAgQWRkIGNvbnZlbmll
bmNlIG1ldGhvZC4KKyAgICAgICAgCisgICAgICAgICogcGxhdGZvcm0vdGV4dC9Xcml0aW5nTW9k
ZS5oOiBBZGRlZC4KKyAgICAgICAgTW92ZSBXcml0aW5nTW9kZSBlbnVtIGZyb20gUmVuZGVyU3R5
bGVDb25zdGFudHMgdG8gbmV3IGZpbGUuCisgICAgICAgIAorICAgICAgICAoV2ViQ29yZTo6aXNI
b3Jpem9udGFsV3JpdGluZ01vZGUpOgorICAgICAgICAoV2ViQ29yZTo6aXNGbGlwcGVkTGluZXNX
cml0aW5nTW9kZSk6CisgICAgICAgIChXZWJDb3JlOjppc0ZsaXBwZWRCbG9ja3NXcml0aW5nTW9k
ZSk6CisgICAgICAgIEFkZCBjb252ZW5pZW5jZSBtZXRob2RzIGZvciB3b3JraW5nIHdpdGggd3Jp
dGluZyBtb2Rlcy4KKyAgICAgICAgCisgICAgICAgICogcmVuZGVyaW5nL0lubGluZUZsb3dCb3gu
Y3BwOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3guY3BwOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJCb3guaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUu
aDoKKyAgICAgICAgVXBkYXRlIGNhbGxzIHRvIEZyYWN0aW9uYWxMYXlvdXRCb3hFeHRlbnQvTGVu
Z3RoQm94IHRvIHBhc3MgV3JpdGluZ01vZGUvCisgICAgICAgIFRleHREaXJlY3Rpb24gYXMgbmVl
ZGVkLgorCisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmg6
CisgICAgICAgIFJlbW92ZSBXcml0aW5nTW9kZSBlbnVtIGFzIGl0IGlzIG5vdyBpbiBhIGRlZGlj
YXRlZCBmaWxlLgorCiAyMDEyLTA4LTE1ICBBbmRyZWFzIEtsaW5nICA8a2xpbmdAd2Via2l0Lm9y
Zz4KIAogICAgICAgICBOaW5lUGllY2VJbWFnZTogQXZvaWQgdW5uZWNlc3NhcnkgZHVwbGljYXRp
b24gb2YgZGVmYXVsdCBkYXRhIGluIGFzc2lnbm1lbnQgb3BlcmF0b3IuCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXBpCShyZXZpc2lvbiAxMjU2ODQpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJ
KHdvcmtpbmcgY29weSkKQEAgLTUyNSw2ICs1MjUsNyBAQAogICAgICAgICAgICAgJ3BsYXRmb3Jt
L3RleHQvVGV4dFN0cmVhbS5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS90ZXh0L1VuaWNvZGVC
aWRpLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL3RleHQvVW5pY29kZVJhbmdlLmgnLAorICAg
ICAgICAgICAgJ3BsYXRmb3JtL3RleHQvV3JpdGluZ01vZGUuaCcsCiAgICAgICAgICAgICAncGxh
dGZvcm0vdGV4dC9tYWMvQ2hhcnNldERhdGEuaCcsCiAgICAgICAgICAgICAncGx1Z2lucy9QbHVn
aW5EYXRhLmgnLAogICAgICAgICAgICAgJ3BsdWdpbnMvUGx1Z2luTWFpblRocmVhZFNjaGVkdWxl
ci5oJywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNw
cm9qCShyZXZpc2lvbiAxMjU2ODQpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9X
ZWJDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtMzM5MDYsNiArMzM5MDYsMTAgQEAKIAkJ
CQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRm
b3JtXHRleHRcV3JpdGluZ01vZGUuaCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQog
CQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXFdpZHRoSXRlcmF0b3IuY3Bw
IgogCQkJCQk+CiAJCQkJPC9GaWxlPgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTI1Njg0KQorKysgU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkp
CkBAIC0zMDcsNiArMzA3LDcgQEAKIAkJMTQyQjk3Q0ExMzEzODk0MzAwOEJFRjRCIC8qIFRleHRD
b250cm9sSW5uZXJFbGVtZW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMTQyQjk3QzgxMzEzODk0MzAwOEJFRjRCIC8qIFRleHRDb250cm9sSW5uZXJF
bGVtZW50cy5oICovOyB9OwogCQkxNDMyRTg0NzBDNTE0OTM4MDBCMTUwMEYgLyogR0NDb250cm9s
bGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDMy
RTg0NjBDNTE0OTM4MDBCMTUwMEYgLyogR0NDb250cm9sbGVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMTQzMkU4NDkwQzUxNDkzRjAwQjE1MDBG
IC8qIEdDQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAxNDMyRTg0ODBDNTE0OTNGMDBCMTUwMEYgLyogR0NDb250cm9sbGVyLmNwcCAq
LzsgfTsKKwkJMTQ0NzZBQTgxNURDNEJCMTAwMzA1REIyIC8qIFdyaXRpbmdNb2RlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDQ3NkFBNzE1REM0QkIx
MDAzMDVEQjIgLyogV3JpdGluZ01vZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQkxNDQ5RTI0QzEwN0Q0QTg0MDBCNTc5M0YgLyogSlNDYWxsYmFj
a0RhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0
NDlFMjRBMTA3RDRBODQwMEI1NzkzRiAvKiBKU0NhbGxiYWNrRGF0YS5oICovOyB9OwogCQkxNDQ5
RTI4NzEwN0Q0REI0MDBCNTc5M0YgLyogSlNDYWxsYmFja0RhdGEuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ0OUUyODYxMDdENERCNDAwQjU3OTNG
IC8qIEpTQ2FsbGJhY2tEYXRhLmNwcCAqLzsgfTsKIAkJMTQ0RkNFNTIxNEVDNzlCQzAwMEQxN0Ez
IC8qIEZyYWN0aW9uYWxMYXlvdXRVbml0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxNDRGQ0U1MTE0RUM3OUJDMDAwRDE3QTMgLyogRnJhY3Rpb25hbExh
eW91dFVuaXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwpAQCAtNzMwOSw2ICs3MzEwLDcgQEAKIAkJMTQyQjk3QzgxMzEzODk0MzAwOEJFRjRCIC8qIFRl
eHRDb250cm9sSW5uZXJFbGVtZW50cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBUZXh0Q29udHJvbElubmVyRWxlbWVudHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMTQzMkU4NDYwQzUxNDkzODAwQjE1MDBGIC8qIEdDQ29udHJvbGxlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR0NDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTE0MzJFODQ4MEM1MTQ5M0YwMEIxNTAwRiAvKiBHQ0NvbnRyb2xsZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdDQ29udHJvbGxlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0NDc2QUE3MTVEQzRCQjEwMDMwNURCMiAv
KiBXcml0aW5nTW9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXcml0aW5n
TW9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNDQ5RTI0QTEwN0Q0QTg0MDBC
NTc5M0YgLyogSlNDYWxsYmFja0RhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSlNDYWxsYmFja0RhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQ0OUUy
ODYxMDdENERCNDAwQjU3OTNGIC8qIEpTQ2FsbGJhY2tEYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ2FsbGJhY2tEYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMTQ0RkNFNTExNEVDNzlCQzAwMEQxN0EzIC8qIEZyYWN0aW9uYWxMYXlv
dXRVbml0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZyYWN0aW9uYWxMYXlv
dXRVbml0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xOTk1MCw2ICsxOTk1Miw3
IEBACiAJCQkJQTg2M0UyMDAxMzQzNDEyMDAwMjc0OTI2IC8qIFVuaWNvZGVCaWRpLmggKi8sCiAJ
CQkJQjJDM0RBMUMwRDAwNkMxRDAwRUY2RjI2IC8qIFVuaWNvZGVSYW5nZS5jcHAgKi8sCiAJCQkJ
QjJDM0RBMUQwRDAwNkMxRDAwRUY2RjI2IC8qIFVuaWNvZGVSYW5nZS5oICovLAorCQkJCTE0NDc2
QUE3MTVEQzRCQjEwMDMwNURCMiAvKiBXcml0aW5nTW9kZS5oICovLAogCQkJKTsKIAkJCXBhdGgg
PSB0ZXh0OwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTI1Mzk3LDYgKzI1NDAwLDcg
QEAKIAkJCQlBMjRCRjc3QjE1Q0MzQkFGMDAzMTkxRjIgLyogV2ViS2l0Q1NTTWl4RnVuY3Rpb25W
YWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTBEODhDQjYxNUJERkRBQTAwMTgwOUY0IC8qIEN1
c3RvbUZpbHRlclByb2dyYW1JbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMTlGQkQ1RjE1RDJG
NDY0MDA5NjQwQTYgLyogQ2FjaGVkSW1hZ2VDbGllbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTE0
NDc2QUE4MTVEQzRCQjEwMDMwNURCMiAvKiBXcml0aW5nTW9kZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgJ
KHJldmlzaW9uIDEyNTY4NCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1
ZU1hcHBpbmdzLmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDYgKzUwLDcgQEAKICNpbmNsdWRlICJU
ZXh0UmVuZGVyaW5nTW9kZS5oIgogI2luY2x1ZGUgIlRoZW1lVHlwZXMuaCIKICNpbmNsdWRlICJV
bmljb2RlQmlkaS5oIgorI2luY2x1ZGUgIldyaXRpbmdNb2RlLmgiCiAKICNpZiBFTkFCTEUoQ1NT
X1NIQURFUlMpCiAjaW5jbHVkZSAiQ3VzdG9tRmlsdGVyT3BlcmF0aW9uLmgiCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTUHJvcGVydHkuaAkocmV2aXNpb24gMTI1Njg0KQorKysgU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1Byb3BlcnR5LmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNs
dWRlICJDU1NWYWx1ZS5oIgogI2luY2x1ZGUgIlJlbmRlclN0eWxlQ29uc3RhbnRzLmgiCiAjaW5j
bHVkZSAiVGV4dERpcmVjdGlvbi5oIgorI2luY2x1ZGUgIldyaXRpbmdNb2RlLmgiCiAjaW5jbHVk
ZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NUb1N0eWxlTWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvY3NzL0NTU1RvU3R5bGVNYXAuaAkocmV2aXNpb24gMTI1Njg0KQorKysgU291cmNlL1dl
YkNvcmUvY3NzL0NTU1RvU3R5bGVNYXAuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBGaWxsTGF5ZXI7CiBjbGFzcyBDU1NWYWx1ZTsK
IGNsYXNzIEFuaW1hdGlvbjsKK2NsYXNzIFJlbmRlclN0eWxlOwogY2xhc3MgU3R5bGVJbWFnZTsK
IGNsYXNzIFN0eWxlUmVzb2x2ZXI7CiBjbGFzcyBOaW5lUGllY2VJbWFnZTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aEJveC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vTGVuZ3RoQm94LmNwcAkocmV2aXNpb24gMTI1Njg0KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoQm94LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsMjMg
KzMxLDIxIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTGVuZ3RoQm94LmgiCiAK
LSNpbmNsdWRlICJSZW5kZXJTdHlsZS5oIgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUxlbmd0
aCBMZW5ndGhCb3g6OmxvZ2ljYWxMZWZ0KGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSkgY29uc3QK
K0xlbmd0aCBMZW5ndGhCb3g6OmxvZ2ljYWxMZWZ0KFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlKSBj
b25zdAogewotICAgIHJldHVybiBzdHlsZS0+aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IG1f
bGVmdCA6IG1fdG9wOworICAgIHJldHVybiBpc0hvcml6b250YWxXcml0aW5nTW9kZSh3cml0aW5n
TW9kZSkgPyBtX2xlZnQgOiBtX3RvcDsKIH0KIAotTGVuZ3RoIExlbmd0aEJveDo6bG9naWNhbFJp
Z2h0KGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSkgY29uc3QKK0xlbmd0aCBMZW5ndGhCb3g6Omxv
Z2ljYWxSaWdodChXcml0aW5nTW9kZSB3cml0aW5nTW9kZSkgY29uc3QKIHsKLSAgICByZXR1cm4g
c3R5bGUtPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBtX3JpZ2h0IDogbV9ib3R0b207Cisg
ICAgcmV0dXJuIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKHdyaXRpbmdNb2RlKSA/IG1fcmlnaHQg
OiBtX2JvdHRvbTsKIH0KIAotTGVuZ3RoIExlbmd0aEJveDo6YmVmb3JlKGNvbnN0IFJlbmRlclN0
eWxlKiBzdHlsZSkgY29uc3QKK0xlbmd0aCBMZW5ndGhCb3g6OmJlZm9yZShXcml0aW5nTW9kZSB3
cml0aW5nTW9kZSkgY29uc3QKIHsKLSAgICBzd2l0Y2ggKHN0eWxlLT53cml0aW5nTW9kZSgpKSB7
CisgICAgc3dpdGNoICh3cml0aW5nTW9kZSkgewogICAgIGNhc2UgVG9wVG9Cb3R0b21Xcml0aW5n
TW9kZToKICAgICAgICAgcmV0dXJuIG1fdG9wOwogICAgIGNhc2UgQm90dG9tVG9Ub3BXcml0aW5n
TW9kZToKQEAgLTYxLDkgKzU5LDkgQEAgTGVuZ3RoIExlbmd0aEJveDo6YmVmb3JlKGNvbnN0IFJl
bmRlclN0eQogICAgIHJldHVybiBtX3RvcDsKIH0KIAotTGVuZ3RoIExlbmd0aEJveDo6YWZ0ZXIo
Y29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlKSBjb25zdAorTGVuZ3RoIExlbmd0aEJveDo6YWZ0ZXIo
V3JpdGluZ01vZGUgd3JpdGluZ01vZGUpIGNvbnN0CiB7Ci0gICAgc3dpdGNoIChzdHlsZS0+d3Jp
dGluZ01vZGUoKSkgeworICAgIHN3aXRjaCAod3JpdGluZ01vZGUpIHsKICAgICBjYXNlIFRvcFRv
Qm90dG9tV3JpdGluZ01vZGU6CiAgICAgICAgIHJldHVybiBtX2JvdHRvbTsKICAgICBjYXNlIEJv
dHRvbVRvVG9wV3JpdGluZ01vZGU6CkBAIC03NywxOCArNzUsMTggQEAgTGVuZ3RoIExlbmd0aEJv
eDo6YWZ0ZXIoY29uc3QgUmVuZGVyU3R5bAogICAgIHJldHVybiBtX2JvdHRvbTsKIH0KIAotTGVu
Z3RoIExlbmd0aEJveDo6c3RhcnQoY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlKSBjb25zdAorTGVu
Z3RoIExlbmd0aEJveDo6c3RhcnQoV3JpdGluZ01vZGUgd3JpdGluZ01vZGUsIFRleHREaXJlY3Rp
b24gZGlyZWN0aW9uKSBjb25zdAogewotICAgIGlmIChzdHlsZS0+aXNIb3Jpem9udGFsV3JpdGlu
Z01vZGUoKSkKLSAgICAgICAgcmV0dXJuIHN0eWxlLT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkg
PyBtX2xlZnQgOiBtX3JpZ2h0OwotICAgIHJldHVybiBzdHlsZS0+aXNMZWZ0VG9SaWdodERpcmVj
dGlvbigpID8gbV90b3AgOiBtX2JvdHRvbTsKKyAgICBpZiAoaXNIb3Jpem9udGFsV3JpdGluZ01v
ZGUod3JpdGluZ01vZGUpKQorICAgICAgICByZXR1cm4gaXNMZWZ0VG9SaWdodERpcmVjdGlvbihk
aXJlY3Rpb24pID8gbV9sZWZ0IDogbV9yaWdodDsKKyAgICByZXR1cm4gaXNMZWZ0VG9SaWdodERp
cmVjdGlvbihkaXJlY3Rpb24pID8gbV90b3AgOiBtX2JvdHRvbTsKIH0KIAotTGVuZ3RoIExlbmd0
aEJveDo6ZW5kKGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSkgY29uc3QKK0xlbmd0aCBMZW5ndGhC
b3g6OmVuZChXcml0aW5nTW9kZSB3cml0aW5nTW9kZSwgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24p
IGNvbnN0CiB7Ci0gICAgaWYgKHN0eWxlLT5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpKQotICAg
ICAgICByZXR1cm4gc3R5bGUtPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSA/IG1fcmlnaHQgOiBt
X2xlZnQ7Ci0gICAgcmV0dXJuIHN0eWxlLT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyBtX2Jv
dHRvbSA6IG1fdG9wOworICAgIGlmIChpc0hvcml6b250YWxXcml0aW5nTW9kZSh3cml0aW5nTW9k
ZSkpCisgICAgICAgIHJldHVybiBpc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKGRpcmVjdGlvbikgPyBt
X3JpZ2h0IDogbV9sZWZ0OworICAgIHJldHVybiBpc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKGRpcmVj
dGlvbikgPyBtX2JvdHRvbSA6IG1fdG9wOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGhCb3guaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGhCb3guaAkocmV2aXNpb24gMTI1Njg0KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoQm94LmgJKHdvcmtpbmcgY29weSkKQEAgLTIz
LDYgKzIzLDggQEAKICNkZWZpbmUgTGVuZ3RoQm94X2gKIAogI2luY2x1ZGUgIkxlbmd0aC5oIgor
I2luY2x1ZGUgIlRleHREaXJlY3Rpb24uaCIKKyNpbmNsdWRlICJXcml0aW5nTW9kZS5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTcwLDEzICs3MiwxMyBAQCBzdHJ1Y3QgTGVuZ3RoQm94
IHsKICAgICBMZW5ndGggdG9wKCkgY29uc3QgeyByZXR1cm4gbV90b3A7IH0KICAgICBMZW5ndGgg
Ym90dG9tKCkgY29uc3QgeyByZXR1cm4gbV9ib3R0b207IH0KIAotICAgIExlbmd0aCBsb2dpY2Fs
TGVmdChjb25zdCBSZW5kZXJTdHlsZSopIGNvbnN0OwotICAgIExlbmd0aCBsb2dpY2FsUmlnaHQo
Y29uc3QgUmVuZGVyU3R5bGUqKSBjb25zdDsKKyAgICBMZW5ndGggbG9naWNhbExlZnQoV3JpdGlu
Z01vZGUpIGNvbnN0OworICAgIExlbmd0aCBsb2dpY2FsUmlnaHQoV3JpdGluZ01vZGUpIGNvbnN0
OwogCi0gICAgTGVuZ3RoIGJlZm9yZShjb25zdCBSZW5kZXJTdHlsZSopIGNvbnN0OwotICAgIExl
bmd0aCBhZnRlcihjb25zdCBSZW5kZXJTdHlsZSopIGNvbnN0OwotICAgIExlbmd0aCBzdGFydChj
b25zdCBSZW5kZXJTdHlsZSopIGNvbnN0OwotICAgIExlbmd0aCBlbmQoY29uc3QgUmVuZGVyU3R5
bGUqKSBjb25zdDsKKyAgICBMZW5ndGggYmVmb3JlKFdyaXRpbmdNb2RlKSBjb25zdDsKKyAgICBM
ZW5ndGggYWZ0ZXIoV3JpdGluZ01vZGUpIGNvbnN0OworICAgIExlbmd0aCBzdGFydChXcml0aW5n
TW9kZSwgVGV4dERpcmVjdGlvbikgY29uc3Q7CisgICAgTGVuZ3RoIGVuZChXcml0aW5nTW9kZSwg
VGV4dERpcmVjdGlvbikgY29uc3Q7CiAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgTGVuZ3Ro
Qm94JiBvKSBjb25zdAogICAgIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ZyYWN0aW9uYWxMYXlvdXRCb3hFeHRlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZyYWN0aW9uYWxMYXlvdXRCb3hFeHRlbnQuY3BwCShy
ZXZpc2lvbiAxMjU2ODQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GcmFj
dGlvbmFsTGF5b3V0Qm94RXh0ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsMzMgKzMxLDMx
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRnJhY3Rpb25hbExheW91dEJveEV4
dGVudC5oIgogCi0jaW5jbHVkZSAiUmVuZGVyU3R5bGUuaCIKLQogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1GcmFjdGlvbmFsTGF5b3V0VW5pdCBGcmFjdGlvbmFsTGF5b3V0Qm94RXh0ZW50Ojpsb2dp
Y2FsVG9wKGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSkgY29uc3QKK0ZyYWN0aW9uYWxMYXlvdXRV
bml0IEZyYWN0aW9uYWxMYXlvdXRCb3hFeHRlbnQ6OmxvZ2ljYWxUb3AoV3JpdGluZ01vZGUgd3Jp
dGluZ01vZGUpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHN0eWxlLT5pc0hvcml6b250YWxXcml0aW5n
TW9kZSgpID8gbV90b3AgOiBtX2xlZnQ7CisgICAgcmV0dXJuIGlzSG9yaXpvbnRhbFdyaXRpbmdN
b2RlKHdyaXRpbmdNb2RlKSA/IG1fdG9wIDogbV9sZWZ0OwogfQogCi1GcmFjdGlvbmFsTGF5b3V0
VW5pdCBGcmFjdGlvbmFsTGF5b3V0Qm94RXh0ZW50Ojpsb2dpY2FsQm90dG9tKGNvbnN0IFJlbmRl
clN0eWxlKiBzdHlsZSkgY29uc3QKK0ZyYWN0aW9uYWxMYXlvdXRVbml0IEZyYWN0aW9uYWxMYXlv
dXRCb3hFeHRlbnQ6OmxvZ2ljYWxCb3R0b20oV3JpdGluZ01vZGUgd3JpdGluZ01vZGUpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIHN0eWxlLT5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gbV9ib3R0
b20gOiBtX3JpZ2h0OworICAgIHJldHVybiBpc0hvcml6b250YWxXcml0aW5nTW9kZSh3cml0aW5n
TW9kZSkgPyBtX2JvdHRvbSA6IG1fcmlnaHQ7CiB9CiAKLUZyYWN0aW9uYWxMYXlvdXRVbml0IEZy
YWN0aW9uYWxMYXlvdXRCb3hFeHRlbnQ6OmxvZ2ljYWxMZWZ0KGNvbnN0IFJlbmRlclN0eWxlKiBz
dHlsZSkgY29uc3QKK0ZyYWN0aW9uYWxMYXlvdXRVbml0IEZyYWN0aW9uYWxMYXlvdXRCb3hFeHRl
bnQ6OmxvZ2ljYWxMZWZ0KFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlKSBjb25zdAogewotICAgIHJl
dHVybiBzdHlsZS0+aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IG1fbGVmdCA6IG1fdG9wOwor
ICAgIHJldHVybiBpc0hvcml6b250YWxXcml0aW5nTW9kZSh3cml0aW5nTW9kZSkgPyBtX2xlZnQg
OiBtX3RvcDsKIH0KIAotRnJhY3Rpb25hbExheW91dFVuaXQgRnJhY3Rpb25hbExheW91dEJveEV4
dGVudDo6bG9naWNhbFJpZ2h0KGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSkgY29uc3QKK0ZyYWN0
aW9uYWxMYXlvdXRVbml0IEZyYWN0aW9uYWxMYXlvdXRCb3hFeHRlbnQ6OmxvZ2ljYWxSaWdodChX
cml0aW5nTW9kZSB3cml0aW5nTW9kZSkgY29uc3QKIHsKLSAgICByZXR1cm4gc3R5bGUtPmlzSG9y
aXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBtX3JpZ2h0IDogbV9ib3R0b207CisgICAgcmV0dXJuIGlz
SG9yaXpvbnRhbFdyaXRpbmdNb2RlKHdyaXRpbmdNb2RlKSA/IG1fcmlnaHQgOiBtX2JvdHRvbTsK
IH0KIAotRnJhY3Rpb25hbExheW91dFVuaXQgRnJhY3Rpb25hbExheW91dEJveEV4dGVudDo6YmVm
b3JlKGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSkgY29uc3QKK0ZyYWN0aW9uYWxMYXlvdXRVbml0
IEZyYWN0aW9uYWxMYXlvdXRCb3hFeHRlbnQ6OmJlZm9yZShXcml0aW5nTW9kZSB3cml0aW5nTW9k
ZSkgY29uc3QKIHsKLSAgICBzd2l0Y2ggKHN0eWxlLT53cml0aW5nTW9kZSgpKSB7CisgICAgc3dp
dGNoICh3cml0aW5nTW9kZSkgewogICAgIGNhc2UgVG9wVG9Cb3R0b21Xcml0aW5nTW9kZToKICAg
ICAgICAgcmV0dXJuIG1fdG9wOwogICAgIGNhc2UgQm90dG9tVG9Ub3BXcml0aW5nTW9kZToKQEAg
LTcxLDkgKzY5LDkgQEAgRnJhY3Rpb25hbExheW91dFVuaXQgRnJhY3Rpb25hbExheW91dEJveAog
ICAgIHJldHVybiBtX3RvcDsKIH0KIAotRnJhY3Rpb25hbExheW91dFVuaXQgRnJhY3Rpb25hbExh
eW91dEJveEV4dGVudDo6YWZ0ZXIoY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlKSBjb25zdAorRnJh
Y3Rpb25hbExheW91dFVuaXQgRnJhY3Rpb25hbExheW91dEJveEV4dGVudDo6YWZ0ZXIoV3JpdGlu
Z01vZGUgd3JpdGluZ01vZGUpIGNvbnN0CiB7Ci0gICAgc3dpdGNoIChzdHlsZS0+d3JpdGluZ01v
ZGUoKSkgeworICAgIHN3aXRjaCAod3JpdGluZ01vZGUpIHsKICAgICBjYXNlIFRvcFRvQm90dG9t
V3JpdGluZ01vZGU6CiAgICAgICAgIHJldHVybiBtX2JvdHRvbTsKICAgICBjYXNlIEJvdHRvbVRv
VG9wV3JpdGluZ01vZGU6CkBAIC04NywyMyArODUsMjMgQEAgRnJhY3Rpb25hbExheW91dFVuaXQg
RnJhY3Rpb25hbExheW91dEJveAogICAgIHJldHVybiBtX2JvdHRvbTsKIH0KIAotRnJhY3Rpb25h
bExheW91dFVuaXQgRnJhY3Rpb25hbExheW91dEJveEV4dGVudDo6c3RhcnQoY29uc3QgUmVuZGVy
U3R5bGUqIHN0eWxlKSBjb25zdAorRnJhY3Rpb25hbExheW91dFVuaXQgRnJhY3Rpb25hbExheW91
dEJveEV4dGVudDo6c3RhcnQoV3JpdGluZ01vZGUgd3JpdGluZ01vZGUsIFRleHREaXJlY3Rpb24g
ZGlyZWN0aW9uKSBjb25zdAogewotICAgIGlmIChzdHlsZS0+aXNIb3Jpem9udGFsV3JpdGluZ01v
ZGUoKSkKLSAgICAgICAgcmV0dXJuIHN0eWxlLT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyBt
X2xlZnQgOiBtX3JpZ2h0OwotICAgIHJldHVybiBzdHlsZS0+aXNMZWZ0VG9SaWdodERpcmVjdGlv
bigpID8gbV90b3AgOiBtX2JvdHRvbTsKKyAgICBpZiAoaXNIb3Jpem9udGFsV3JpdGluZ01vZGUo
d3JpdGluZ01vZGUpKQorICAgICAgICByZXR1cm4gaXNMZWZ0VG9SaWdodERpcmVjdGlvbihkaXJl
Y3Rpb24pID8gbV9sZWZ0IDogbV9yaWdodDsKKyAgICByZXR1cm4gaXNMZWZ0VG9SaWdodERpcmVj
dGlvbihkaXJlY3Rpb24pID8gbV90b3AgOiBtX2JvdHRvbTsKIH0KIAotRnJhY3Rpb25hbExheW91
dFVuaXQgRnJhY3Rpb25hbExheW91dEJveEV4dGVudDo6ZW5kKGNvbnN0IFJlbmRlclN0eWxlKiBz
dHlsZSkgY29uc3QKK0ZyYWN0aW9uYWxMYXlvdXRVbml0IEZyYWN0aW9uYWxMYXlvdXRCb3hFeHRl
bnQ6OmVuZChXcml0aW5nTW9kZSB3cml0aW5nTW9kZSwgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24p
IGNvbnN0CiB7Ci0gICAgaWYgKHN0eWxlLT5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpKQotICAg
ICAgICByZXR1cm4gc3R5bGUtPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSA/IG1fcmlnaHQgOiBt
X2xlZnQ7Ci0gICAgcmV0dXJuIHN0eWxlLT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyBtX2Jv
dHRvbSA6IG1fdG9wOworICAgIGlmIChpc0hvcml6b250YWxXcml0aW5nTW9kZSh3cml0aW5nTW9k
ZSkpCisgICAgICAgIHJldHVybiBpc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKGRpcmVjdGlvbikgPyBt
X3JpZ2h0IDogbV9sZWZ0OworICAgIHJldHVybiBpc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKGRpcmVj
dGlvbikgPyBtX2JvdHRvbSA6IG1fdG9wOwogfQogCi12b2lkIEZyYWN0aW9uYWxMYXlvdXRCb3hF
eHRlbnQ6OnNldEJlZm9yZShjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUsIEZyYWN0aW9uYWxMYXlv
dXRVbml0IHZhbHVlKQordm9pZCBGcmFjdGlvbmFsTGF5b3V0Qm94RXh0ZW50OjpzZXRCZWZvcmUo
V3JpdGluZ01vZGUgd3JpdGluZ01vZGUsIEZyYWN0aW9uYWxMYXlvdXRVbml0IHZhbHVlKQogewot
ICAgIHN3aXRjaCAoc3R5bGUtPndyaXRpbmdNb2RlKCkpIHsKKyAgICBzd2l0Y2ggKHdyaXRpbmdN
b2RlKSB7CiAgICAgY2FzZSBUb3BUb0JvdHRvbVdyaXRpbmdNb2RlOgogICAgICAgICBtX3RvcCA9
IHZhbHVlOwogICAgICAgICBicmVhazsKQEAgLTEyMiw5ICsxMjAsOSBAQCB2b2lkIEZyYWN0aW9u
YWxMYXlvdXRCb3hFeHRlbnQ6OnNldEJlZm9yCiAgICAgfQogfQogCi12b2lkIEZyYWN0aW9uYWxM
YXlvdXRCb3hFeHRlbnQ6OnNldEFmdGVyKGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSwgRnJhY3Rp
b25hbExheW91dFVuaXQgdmFsdWUpCit2b2lkIEZyYWN0aW9uYWxMYXlvdXRCb3hFeHRlbnQ6OnNl
dEFmdGVyKFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlLCBGcmFjdGlvbmFsTGF5b3V0VW5pdCB2YWx1
ZSkKIHsKLSAgICBzd2l0Y2ggKHN0eWxlLT53cml0aW5nTW9kZSgpKSB7CisgICAgc3dpdGNoICh3
cml0aW5nTW9kZSkgewogICAgIGNhc2UgVG9wVG9Cb3R0b21Xcml0aW5nTW9kZToKICAgICAgICAg
bV9ib3R0b20gPSB2YWx1ZTsKICAgICAgICAgYnJlYWs7CkBAIC0xNDMsNTYgKzE0MSw1NiBAQCB2
b2lkIEZyYWN0aW9uYWxMYXlvdXRCb3hFeHRlbnQ6OnNldEFmdGVyCiAgICAgfQogfQogCi12b2lk
IEZyYWN0aW9uYWxMYXlvdXRCb3hFeHRlbnQ6OnNldFN0YXJ0KGNvbnN0IFJlbmRlclN0eWxlKiBz
dHlsZSwgRnJhY3Rpb25hbExheW91dFVuaXQgdmFsdWUpCit2b2lkIEZyYWN0aW9uYWxMYXlvdXRC
b3hFeHRlbnQ6OnNldFN0YXJ0KFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlLCBUZXh0RGlyZWN0aW9u
IGRpcmVjdGlvbiwgRnJhY3Rpb25hbExheW91dFVuaXQgdmFsdWUpCiB7Ci0gICAgaWYgKHN0eWxl
LT5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpKSB7Ci0gICAgICAgIGlmIChzdHlsZS0+aXNMZWZ0
VG9SaWdodERpcmVjdGlvbigpKQorICAgIGlmIChpc0hvcml6b250YWxXcml0aW5nTW9kZSh3cml0
aW5nTW9kZSkpIHsKKyAgICAgICAgaWYgKGlzTGVmdFRvUmlnaHREaXJlY3Rpb24oZGlyZWN0aW9u
KSkKICAgICAgICAgICAgIG1fbGVmdCA9IHZhbHVlOwogICAgICAgICBlbHNlCiAgICAgICAgICAg
ICBtX3JpZ2h0ID0gdmFsdWU7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKHN0eWxlLT5pc0xl
ZnRUb1JpZ2h0RGlyZWN0aW9uKCkpCisgICAgICAgIGlmIChpc0xlZnRUb1JpZ2h0RGlyZWN0aW9u
KGRpcmVjdGlvbikpCiAgICAgICAgICAgICBtX3RvcCA9IHZhbHVlOwogICAgICAgICBlbHNlCiAg
ICAgICAgICAgICBtX2JvdHRvbSA9IHZhbHVlOwogICAgIH0KIH0KIAotdm9pZCBGcmFjdGlvbmFs
TGF5b3V0Qm94RXh0ZW50OjpzZXRFbmQoY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlLCBGcmFjdGlv
bmFsTGF5b3V0VW5pdCB2YWx1ZSkKK3ZvaWQgRnJhY3Rpb25hbExheW91dEJveEV4dGVudDo6c2V0
RW5kKFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlLCBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbiwgRnJh
Y3Rpb25hbExheW91dFVuaXQgdmFsdWUpCiB7Ci0gICAgaWYgKHN0eWxlLT5pc0hvcml6b250YWxX
cml0aW5nTW9kZSgpKSB7Ci0gICAgICAgIGlmIChzdHlsZS0+aXNMZWZ0VG9SaWdodERpcmVjdGlv
bigpKQorICAgIGlmIChpc0hvcml6b250YWxXcml0aW5nTW9kZSh3cml0aW5nTW9kZSkpIHsKKyAg
ICAgICAgaWYgKGlzTGVmdFRvUmlnaHREaXJlY3Rpb24oZGlyZWN0aW9uKSkKICAgICAgICAgICAg
IG1fcmlnaHQgPSB2YWx1ZTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbV9sZWZ0ID0gdmFs
dWU7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKHN0eWxlLT5pc0xlZnRUb1JpZ2h0RGlyZWN0
aW9uKCkpCisgICAgICAgIGlmIChpc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKGRpcmVjdGlvbikpCiAg
ICAgICAgICAgICBtX2JvdHRvbSA9IHZhbHVlOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBt
X3RvcCA9IHZhbHVlOwogICAgIH0KIH0KIAotRnJhY3Rpb25hbExheW91dFVuaXQmIEZyYWN0aW9u
YWxMYXlvdXRCb3hFeHRlbnQ6Om11dGFibGVMb2dpY2FsTGVmdChjb25zdCBSZW5kZXJTdHlsZSog
c3R5bGUpCitGcmFjdGlvbmFsTGF5b3V0VW5pdCYgRnJhY3Rpb25hbExheW91dEJveEV4dGVudDo6
bXV0YWJsZUxvZ2ljYWxMZWZ0KFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlKQogewotICAgIHJldHVy
biBzdHlsZS0+aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IG1fbGVmdCA6IG1fdG9wOworICAg
IHJldHVybiBpc0hvcml6b250YWxXcml0aW5nTW9kZSh3cml0aW5nTW9kZSkgPyBtX2xlZnQgOiBt
X3RvcDsKIH0KIAotRnJhY3Rpb25hbExheW91dFVuaXQmIEZyYWN0aW9uYWxMYXlvdXRCb3hFeHRl
bnQ6Om11dGFibGVMb2dpY2FsUmlnaHQoY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlKQorRnJhY3Rp
b25hbExheW91dFVuaXQmIEZyYWN0aW9uYWxMYXlvdXRCb3hFeHRlbnQ6Om11dGFibGVMb2dpY2Fs
UmlnaHQoV3JpdGluZ01vZGUgd3JpdGluZ01vZGUpCiB7Ci0gICAgcmV0dXJuIHN0eWxlLT5pc0hv
cml6b250YWxXcml0aW5nTW9kZSgpID8gbV9yaWdodCA6IG1fYm90dG9tOworICAgIHJldHVybiBp
c0hvcml6b250YWxXcml0aW5nTW9kZSh3cml0aW5nTW9kZSkgPyBtX3JpZ2h0IDogbV9ib3R0b207
CiB9CiAKLUZyYWN0aW9uYWxMYXlvdXRVbml0JiBGcmFjdGlvbmFsTGF5b3V0Qm94RXh0ZW50Ojpt
dXRhYmxlQmVmb3JlKGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSkKK0ZyYWN0aW9uYWxMYXlvdXRV
bml0JiBGcmFjdGlvbmFsTGF5b3V0Qm94RXh0ZW50OjptdXRhYmxlQmVmb3JlKFdyaXRpbmdNb2Rl
IHdyaXRpbmdNb2RlKQogewotICAgIHJldHVybiBzdHlsZS0+aXNIb3Jpem9udGFsV3JpdGluZ01v
ZGUoKSA/IChzdHlsZS0+aXNGbGlwcGVkQmxvY2tzV3JpdGluZ01vZGUoKSA/IG1fYm90dG9tIDog
bV90b3ApIDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo
c3R5bGUtPmlzRmxpcHBlZEJsb2Nrc1dyaXRpbmdNb2RlKCkgPyBtX3JpZ2h0OiBtX2xlZnQpOwor
ICAgIHJldHVybiBpc0hvcml6b250YWxXcml0aW5nTW9kZSh3cml0aW5nTW9kZSkgPyAoaXNGbGlw
cGVkQmxvY2tzV3JpdGluZ01vZGUod3JpdGluZ01vZGUpID8gbV9ib3R0b20gOiBtX3RvcCkgOgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaXNGbGlw
cGVkQmxvY2tzV3JpdGluZ01vZGUod3JpdGluZ01vZGUpID8gbV9yaWdodDogbV9sZWZ0KTsKIH0K
IAotRnJhY3Rpb25hbExheW91dFVuaXQmIEZyYWN0aW9uYWxMYXlvdXRCb3hFeHRlbnQ6Om11dGFi
bGVBZnRlcihjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUpCitGcmFjdGlvbmFsTGF5b3V0VW5pdCYg
RnJhY3Rpb25hbExheW91dEJveEV4dGVudDo6bXV0YWJsZUFmdGVyKFdyaXRpbmdNb2RlIHdyaXRp
bmdNb2RlKQogewotICAgIHJldHVybiBzdHlsZS0+aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/
IChzdHlsZS0+aXNGbGlwcGVkQmxvY2tzV3JpdGluZ01vZGUoKSA/IG1fdG9wIDogbV9ib3R0b20p
IDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3R5bGUt
PmlzRmxpcHBlZEJsb2Nrc1dyaXRpbmdNb2RlKCkgPyBtX2xlZnQ6IG1fcmlnaHQpOworICAgIHJl
dHVybiBpc0hvcml6b250YWxXcml0aW5nTW9kZSh3cml0aW5nTW9kZSkgPyAoaXNGbGlwcGVkQmxv
Y2tzV3JpdGluZ01vZGUod3JpdGluZ01vZGUpID8gbV90b3AgOiBtX2JvdHRvbSkgOgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaXNGbGlwcGVkQmxv
Y2tzV3JpdGluZ01vZGUod3JpdGluZ01vZGUpID8gbV9sZWZ0OiBtX3JpZ2h0KTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRnJhY3Rpb25hbExheW91dEJveEV4dGVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZyYWN0aW9uYWxMYXlvdXRCb3hFeHRlbnQuaAkocmV2aXNp
b24gMTI1Njg0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRnJhY3Rpb25h
bExheW91dEJveEV4dGVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiwxMSArMzIsMTEgQEAKICNk
ZWZpbmUgRnJhY3Rpb25hbExheW91dEJveEV4dGVudF9oCiAKICNpbmNsdWRlICJGcmFjdGlvbmFs
TGF5b3V0VW5pdC5oIgorI2luY2x1ZGUgIlRleHREaXJlY3Rpb24uaCIKKyNpbmNsdWRlICJXcml0
aW5nTW9kZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFJlbmRlclN0eWxlOwot
CiBjbGFzcyBGcmFjdGlvbmFsTGF5b3V0Qm94RXh0ZW50IHsKIHB1YmxpYzoKICAgICBGcmFjdGlv
bmFsTGF5b3V0Qm94RXh0ZW50KCkgOiBtX3RvcCgwKSwgbV9yaWdodCgwKSwgbV9ib3R0b20oMCks
IG1fbGVmdCgwKSB7IH0KQEAgLTUzLDI2ICs1MywyNiBAQCBwdWJsaWM6CiAgICAgaW5saW5lIHZv
aWQgc2V0Qm90dG9tKEZyYWN0aW9uYWxMYXlvdXRVbml0IHZhbHVlKSB7IG1fYm90dG9tID0gdmFs
dWU7IH0KICAgICBpbmxpbmUgdm9pZCBzZXRMZWZ0KEZyYWN0aW9uYWxMYXlvdXRVbml0IHZhbHVl
KSB7IG1fbGVmdCA9IHZhbHVlOyB9CiAKLSAgICBGcmFjdGlvbmFsTGF5b3V0VW5pdCBsb2dpY2Fs
VG9wKGNvbnN0IFJlbmRlclN0eWxlKikgY29uc3Q7Ci0gICAgRnJhY3Rpb25hbExheW91dFVuaXQg
bG9naWNhbEJvdHRvbShjb25zdCBSZW5kZXJTdHlsZSopIGNvbnN0OwotICAgIEZyYWN0aW9uYWxM
YXlvdXRVbml0IGxvZ2ljYWxMZWZ0KGNvbnN0IFJlbmRlclN0eWxlKikgY29uc3Q7Ci0gICAgRnJh
Y3Rpb25hbExheW91dFVuaXQgbG9naWNhbFJpZ2h0KGNvbnN0IFJlbmRlclN0eWxlKikgY29uc3Q7
Ci0KLSAgICBGcmFjdGlvbmFsTGF5b3V0VW5pdCBiZWZvcmUoY29uc3QgUmVuZGVyU3R5bGUqKSBj
b25zdDsKLSAgICBGcmFjdGlvbmFsTGF5b3V0VW5pdCBhZnRlcihjb25zdCBSZW5kZXJTdHlsZSop
IGNvbnN0OwotICAgIEZyYWN0aW9uYWxMYXlvdXRVbml0IHN0YXJ0KGNvbnN0IFJlbmRlclN0eWxl
KikgY29uc3Q7Ci0gICAgRnJhY3Rpb25hbExheW91dFVuaXQgZW5kKGNvbnN0IFJlbmRlclN0eWxl
KikgY29uc3Q7Ci0KLSAgICB2b2lkIHNldEJlZm9yZShjb25zdCBSZW5kZXJTdHlsZSosIEZyYWN0
aW9uYWxMYXlvdXRVbml0KTsKLSAgICB2b2lkIHNldEFmdGVyKGNvbnN0IFJlbmRlclN0eWxlKiwg
RnJhY3Rpb25hbExheW91dFVuaXQpOwotICAgIHZvaWQgc2V0U3RhcnQoY29uc3QgUmVuZGVyU3R5
bGUqLCBGcmFjdGlvbmFsTGF5b3V0VW5pdCk7Ci0gICAgdm9pZCBzZXRFbmQoY29uc3QgUmVuZGVy
U3R5bGUqLCBGcmFjdGlvbmFsTGF5b3V0VW5pdCk7CisgICAgRnJhY3Rpb25hbExheW91dFVuaXQg
bG9naWNhbFRvcChXcml0aW5nTW9kZSkgY29uc3Q7CisgICAgRnJhY3Rpb25hbExheW91dFVuaXQg
bG9naWNhbEJvdHRvbShXcml0aW5nTW9kZSkgY29uc3Q7CisgICAgRnJhY3Rpb25hbExheW91dFVu
aXQgbG9naWNhbExlZnQoV3JpdGluZ01vZGUpIGNvbnN0OworICAgIEZyYWN0aW9uYWxMYXlvdXRV
bml0IGxvZ2ljYWxSaWdodChXcml0aW5nTW9kZSkgY29uc3Q7CisKKyAgICBGcmFjdGlvbmFsTGF5
b3V0VW5pdCBiZWZvcmUoV3JpdGluZ01vZGUpIGNvbnN0OworICAgIEZyYWN0aW9uYWxMYXlvdXRV
bml0IGFmdGVyKFdyaXRpbmdNb2RlKSBjb25zdDsKKyAgICBGcmFjdGlvbmFsTGF5b3V0VW5pdCBz
dGFydChXcml0aW5nTW9kZSwgVGV4dERpcmVjdGlvbikgY29uc3Q7CisgICAgRnJhY3Rpb25hbExh
eW91dFVuaXQgZW5kKFdyaXRpbmdNb2RlLCBUZXh0RGlyZWN0aW9uKSBjb25zdDsKKworICAgIHZv
aWQgc2V0QmVmb3JlKFdyaXRpbmdNb2RlLCBGcmFjdGlvbmFsTGF5b3V0VW5pdCk7CisgICAgdm9p
ZCBzZXRBZnRlcihXcml0aW5nTW9kZSwgRnJhY3Rpb25hbExheW91dFVuaXQpOworICAgIHZvaWQg
c2V0U3RhcnQoV3JpdGluZ01vZGUsIFRleHREaXJlY3Rpb24sIEZyYWN0aW9uYWxMYXlvdXRVbml0
KTsKKyAgICB2b2lkIHNldEVuZChXcml0aW5nTW9kZSwgVGV4dERpcmVjdGlvbiwgRnJhY3Rpb25h
bExheW91dFVuaXQpOwogCi0gICAgRnJhY3Rpb25hbExheW91dFVuaXQmIG11dGFibGVMb2dpY2Fs
TGVmdChjb25zdCBSZW5kZXJTdHlsZSopOwotICAgIEZyYWN0aW9uYWxMYXlvdXRVbml0JiBtdXRh
YmxlTG9naWNhbFJpZ2h0KGNvbnN0IFJlbmRlclN0eWxlKik7CisgICAgRnJhY3Rpb25hbExheW91
dFVuaXQmIG11dGFibGVMb2dpY2FsTGVmdChXcml0aW5nTW9kZSk7CisgICAgRnJhY3Rpb25hbExh
eW91dFVuaXQmIG11dGFibGVMb2dpY2FsUmlnaHQoV3JpdGluZ01vZGUpOwogCi0gICAgRnJhY3Rp
b25hbExheW91dFVuaXQmIG11dGFibGVCZWZvcmUoY29uc3QgUmVuZGVyU3R5bGUqKTsKLSAgICBG
cmFjdGlvbmFsTGF5b3V0VW5pdCYgbXV0YWJsZUFmdGVyKGNvbnN0IFJlbmRlclN0eWxlKik7Cisg
ICAgRnJhY3Rpb25hbExheW91dFVuaXQmIG11dGFibGVCZWZvcmUoV3JpdGluZ01vZGUpOworICAg
IEZyYWN0aW9uYWxMYXlvdXRVbml0JiBtdXRhYmxlQWZ0ZXIoV3JpdGluZ01vZGUpOwogCiBwcml2
YXRlOgogICAgIEZyYWN0aW9uYWxMYXlvdXRVbml0IG1fdG9wOwpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9UZXh0RGlyZWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0RGlyZWN0aW9uLmgJKHJldmlzaW9uIDEyNTY4NCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dERpcmVjdGlvbi5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yOCw3ICsyOCw5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotICAgIGVudW0g
VGV4dERpcmVjdGlvbiB7IFJUTCwgTFRSIH07CitlbnVtIFRleHREaXJlY3Rpb24geyBSVEwsIExU
UiB9OworCitpbmxpbmUgYm9vbCBpc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKFRleHREaXJlY3Rpb24g
ZGlyZWN0aW9uKSB7IHJldHVybiBkaXJlY3Rpb24gPT0gTFRSOyB9CiAKIH0KIApJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Xcml0aW5nTW9kZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvV3JpdGluZ01vZGUuaAkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvV3JpdGluZ01vZGUuaAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxMiwgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
KyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdyaXRpbmdNb2RlX2gKKyNkZWZpbmUgV3JpdGluZ01v
ZGVfaAorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2VudW0gV3JpdGluZ01vZGUgeworICAgIFRv
cFRvQm90dG9tV3JpdGluZ01vZGUsIFJpZ2h0VG9MZWZ0V3JpdGluZ01vZGUsIExlZnRUb1JpZ2h0
V3JpdGluZ01vZGUsIEJvdHRvbVRvVG9wV3JpdGluZ01vZGUKK307CisKK2lubGluZSBib29sIGlz
SG9yaXpvbnRhbFdyaXRpbmdNb2RlKFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlKQoreworICAgIHJl
dHVybiB3cml0aW5nTW9kZSA9PSBUb3BUb0JvdHRvbVdyaXRpbmdNb2RlIHx8IHdyaXRpbmdNb2Rl
ID09IEJvdHRvbVRvVG9wV3JpdGluZ01vZGU7Cit9CisKK2lubGluZSBib29sIGlzRmxpcHBlZExp
bmVzV3JpdGluZ01vZGUoV3JpdGluZ01vZGUgd3JpdGluZ01vZGUpCit7CisgICAgcmV0dXJuIHdy
aXRpbmdNb2RlID09IExlZnRUb1JpZ2h0V3JpdGluZ01vZGUgfHwgd3JpdGluZ01vZGUgPT0gQm90
dG9tVG9Ub3BXcml0aW5nTW9kZTsKK30KKworaW5saW5lIGJvb2wgaXNGbGlwcGVkQmxvY2tzV3Jp
dGluZ01vZGUoV3JpdGluZ01vZGUgd3JpdGluZ01vZGUpCit7CisgICAgcmV0dXJuIHdyaXRpbmdN
b2RlID09IFJpZ2h0VG9MZWZ0V3JpdGluZ01vZGUgfHwgd3JpdGluZ01vZGUgPT0gQm90dG9tVG9U
b3BXcml0aW5nTW9kZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8g
V3JpdGluZ01vZGVfaApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dC
b3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93
Qm94LmNwcAkocmV2aXNpb24gMTI1Njg0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lu
bGluZUZsb3dCb3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OTEsMTAgKzc5MSwxMCBAQCBpbmxp
bmUgdm9pZCBJbmxpbmVGbG93Qm94OjphZGRCb3JkZXJPdXRzCiAKICAgICBGcmFjdGlvbmFsTGF5
b3V0Qm94RXh0ZW50IGJvcmRlck91dHNldHMgPSBzdHlsZS0+Ym9yZGVySW1hZ2VPdXRzZXRzKCk7
CiAKLSAgICBMYXlvdXRVbml0IGJvcmRlck91dHNldExvZ2ljYWxUb3AgPSBib3JkZXJPdXRzZXRz
LmxvZ2ljYWxUb3Aoc3R5bGUpOwotICAgIExheW91dFVuaXQgYm9yZGVyT3V0c2V0TG9naWNhbEJv
dHRvbSA9IGJvcmRlck91dHNldHMubG9naWNhbEJvdHRvbShzdHlsZSk7Ci0gICAgTGF5b3V0VW5p
dCBib3JkZXJPdXRzZXRMb2dpY2FsTGVmdCA9IGJvcmRlck91dHNldHMubG9naWNhbExlZnQoc3R5
bGUpOwotICAgIExheW91dFVuaXQgYm9yZGVyT3V0c2V0TG9naWNhbFJpZ2h0ID0gYm9yZGVyT3V0
c2V0cy5sb2dpY2FsUmlnaHQoc3R5bGUpOworICAgIExheW91dFVuaXQgYm9yZGVyT3V0c2V0TG9n
aWNhbFRvcCA9IGJvcmRlck91dHNldHMubG9naWNhbFRvcChzdHlsZS0+d3JpdGluZ01vZGUoKSk7
CisgICAgTGF5b3V0VW5pdCBib3JkZXJPdXRzZXRMb2dpY2FsQm90dG9tID0gYm9yZGVyT3V0c2V0
cy5sb2dpY2FsQm90dG9tKHN0eWxlLT53cml0aW5nTW9kZSgpKTsKKyAgICBMYXlvdXRVbml0IGJv
cmRlck91dHNldExvZ2ljYWxMZWZ0ID0gYm9yZGVyT3V0c2V0cy5sb2dpY2FsTGVmdChzdHlsZS0+
d3JpdGluZ01vZGUoKSk7CisgICAgTGF5b3V0VW5pdCBib3JkZXJPdXRzZXRMb2dpY2FsUmlnaHQg
PSBib3JkZXJPdXRzZXRzLmxvZ2ljYWxSaWdodChzdHlsZS0+d3JpdGluZ01vZGUoKSk7CiAKICAg
ICAvLyBTaW1pbGFyIHRvIGhvdyBnbHlwaCBvdmVyZmxvdyB3b3JrcywgaWYgb3VyIGxpbmVzIGFy
ZSBmbGlwcGVkLCB0aGVuIGl0J3MgYWN0dWFsbHkgdGhlIG9wcG9zaXRlIGJvcmRlciB0aGF0IGFw
cGxpZXMsIHNpbmNlCiAgICAgLy8gdGhlIGxpbmUgaXMgInVwc2lkZSBkb3duIiBpbiB0ZXJtcyBv
ZiBibG9jayBjb29yZGluYXRlcy4gdmVydGljYWwtcmwgYW5kIGhvcml6b250YWwtYnQgYXJlIHRo
ZSBmbGlwcGVkIGxpbmUgbW9kZXMuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQm94LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Qm94LmNwcAkocmV2aXNpb24gMTI1Njg0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJveC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1MzMsOCArMjUzMyw4IEBAIHZvaWQgUmVu
ZGVyQm94Ojpjb21wdXRlUG9zaXRpb25lZExvZ2ljYWwKICAgICBjb25zdCBMYXlvdXRVbml0IGJv
cmRlcnNQbHVzUGFkZGluZyA9IGJvcmRlckFuZFBhZGRpbmdMb2dpY2FsV2lkdGgoKTsKICAgICBj
b25zdCBMZW5ndGggbWFyZ2luTG9naWNhbExlZnQgPSBpc0hvcml6b250YWwgPyBzdHlsZSgpLT5t
YXJnaW5MZWZ0KCkgOiBzdHlsZSgpLT5tYXJnaW5Ub3AoKTsKICAgICBjb25zdCBMZW5ndGggbWFy
Z2luTG9naWNhbFJpZ2h0ID0gaXNIb3Jpem9udGFsID8gc3R5bGUoKS0+bWFyZ2luUmlnaHQoKSA6
IHN0eWxlKCktPm1hcmdpbkJvdHRvbSgpOwotICAgIExheW91dFVuaXQmIG1hcmdpbkxvZ2ljYWxM
ZWZ0QWxpYXMgPSBtX21hcmdpbkJveC5tdXRhYmxlTG9naWNhbExlZnQoc3R5bGUoKSk7Ci0gICAg
TGF5b3V0VW5pdCYgbWFyZ2luTG9naWNhbFJpZ2h0QWxpYXMgPSBtX21hcmdpbkJveC5tdXRhYmxl
TG9naWNhbFJpZ2h0KHN0eWxlKCkpOworICAgIExheW91dFVuaXQmIG1hcmdpbkxvZ2ljYWxMZWZ0
QWxpYXMgPSBtX21hcmdpbkJveC5tdXRhYmxlTG9naWNhbExlZnQoc3R5bGUoKS0+d3JpdGluZ01v
ZGUoKSk7CisgICAgTGF5b3V0VW5pdCYgbWFyZ2luTG9naWNhbFJpZ2h0QWxpYXMgPSBtX21hcmdp
bkJveC5tdXRhYmxlTG9naWNhbFJpZ2h0KHN0eWxlKCktPndyaXRpbmdNb2RlKCkpOwogCiAgICAg
TGVuZ3RoIGxvZ2ljYWxMZWZ0TGVuZ3RoID0gc3R5bGUoKS0+bG9naWNhbExlZnQoKTsKICAgICBM
ZW5ndGggbG9naWNhbFJpZ2h0TGVuZ3RoID0gc3R5bGUoKS0+bG9naWNhbFJpZ2h0KCk7CkBAIC0y
ODczLDggKzI4NzMsOCBAQCB2b2lkIFJlbmRlckJveDo6Y29tcHV0ZVBvc2l0aW9uZWRMb2dpY2Fs
CiAgICAgY29uc3QgTGF5b3V0VW5pdCBib3JkZXJzUGx1c1BhZGRpbmcgPSBib3JkZXJBbmRQYWRk
aW5nTG9naWNhbEhlaWdodCgpOwogICAgIGNvbnN0IExlbmd0aCBtYXJnaW5CZWZvcmUgPSBzdHls
ZVRvVXNlLT5tYXJnaW5CZWZvcmUoKTsKICAgICBjb25zdCBMZW5ndGggbWFyZ2luQWZ0ZXIgPSBz
dHlsZVRvVXNlLT5tYXJnaW5BZnRlcigpOwotICAgIExheW91dFVuaXQmIG1hcmdpbkJlZm9yZUFs
aWFzID0gbV9tYXJnaW5Cb3gubXV0YWJsZUJlZm9yZShzdHlsZVRvVXNlKTsKLSAgICBMYXlvdXRV
bml0JiBtYXJnaW5BZnRlckFsaWFzID0gbV9tYXJnaW5Cb3gubXV0YWJsZUFmdGVyKHN0eWxlVG9V
c2UpOworICAgIExheW91dFVuaXQmIG1hcmdpbkJlZm9yZUFsaWFzID0gbV9tYXJnaW5Cb3gubXV0
YWJsZUJlZm9yZShzdHlsZVRvVXNlLT53cml0aW5nTW9kZSgpKTsKKyAgICBMYXlvdXRVbml0JiBt
YXJnaW5BZnRlckFsaWFzID0gbV9tYXJnaW5Cb3gubXV0YWJsZUFmdGVyKHN0eWxlVG9Vc2UtPndy
aXRpbmdNb2RlKCkpOwogCiAgICAgTGVuZ3RoIGxvZ2ljYWxUb3BMZW5ndGggPSBzdHlsZVRvVXNl
LT5sb2dpY2FsVG9wKCk7CiAgICAgTGVuZ3RoIGxvZ2ljYWxCb3R0b21MZW5ndGggPSBzdHlsZVRv
VXNlLT5sb2dpY2FsQm90dG9tKCk7CkBAIC0zMTQwLDggKzMxNDAsOCBAQCB2b2lkIFJlbmRlckJv
eDo6Y29tcHV0ZVBvc2l0aW9uZWRMb2dpY2FsCiAgICAgTGVuZ3RoIGxvZ2ljYWxSaWdodCA9IHN0
eWxlKCktPmxvZ2ljYWxSaWdodCgpOwogICAgIExlbmd0aCBtYXJnaW5Mb2dpY2FsTGVmdCA9IGlz
SG9yaXpvbnRhbCA/IHN0eWxlKCktPm1hcmdpbkxlZnQoKSA6IHN0eWxlKCktPm1hcmdpblRvcCgp
OwogICAgIExlbmd0aCBtYXJnaW5Mb2dpY2FsUmlnaHQgPSBpc0hvcml6b250YWwgPyBzdHlsZSgp
LT5tYXJnaW5SaWdodCgpIDogc3R5bGUoKS0+bWFyZ2luQm90dG9tKCk7Ci0gICAgTGF5b3V0VW5p
dCYgbWFyZ2luTG9naWNhbExlZnRBbGlhcyA9IG1fbWFyZ2luQm94Lm11dGFibGVMb2dpY2FsTGVm
dChzdHlsZSgpKTsKLSAgICBMYXlvdXRVbml0JiBtYXJnaW5Mb2dpY2FsUmlnaHRBbGlhcyA9IG1f
bWFyZ2luQm94Lm11dGFibGVMb2dpY2FsUmlnaHQoc3R5bGUoKSk7CisgICAgTGF5b3V0VW5pdCYg
bWFyZ2luTG9naWNhbExlZnRBbGlhcyA9IG1fbWFyZ2luQm94Lm11dGFibGVMb2dpY2FsTGVmdChz
dHlsZSgpLT53cml0aW5nTW9kZSgpKTsKKyAgICBMYXlvdXRVbml0JiBtYXJnaW5Mb2dpY2FsUmln
aHRBbGlhcyA9IG1fbWFyZ2luQm94Lm11dGFibGVMb2dpY2FsUmlnaHQoc3R5bGUoKS0+d3JpdGlu
Z01vZGUoKSk7CiAKICAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlwKICAgICAgKiAxLiBUaGUgdXNlZCB2
YWx1ZSBvZiAnd2lkdGgnIGlzIGRldGVybWluZWQgYXMgZm9yIGlubGluZSByZXBsYWNlZApAQCAt
MzMwMSw4ICszMzAxLDggQEAgdm9pZCBSZW5kZXJCb3g6OmNvbXB1dGVQb3NpdGlvbmVkTG9naWNh
bAogICAgIC8vIFZhcmlhYmxlcyB0byBzb2x2ZS4KICAgICBMZW5ndGggbWFyZ2luQmVmb3JlID0g
c3R5bGUoKS0+bWFyZ2luQmVmb3JlKCk7CiAgICAgTGVuZ3RoIG1hcmdpbkFmdGVyID0gc3R5bGUo
KS0+bWFyZ2luQWZ0ZXIoKTsKLSAgICBMYXlvdXRVbml0JiBtYXJnaW5CZWZvcmVBbGlhcyA9IG1f
bWFyZ2luQm94Lm11dGFibGVCZWZvcmUoc3R5bGUoKSk7Ci0gICAgTGF5b3V0VW5pdCYgbWFyZ2lu
QWZ0ZXJBbGlhcyA9IG1fbWFyZ2luQm94Lm11dGFibGVBZnRlcihzdHlsZSgpKTsKKyAgICBMYXlv
dXRVbml0JiBtYXJnaW5CZWZvcmVBbGlhcyA9IG1fbWFyZ2luQm94Lm11dGFibGVCZWZvcmUoc3R5
bGUoKS0+d3JpdGluZ01vZGUoKSk7CisgICAgTGF5b3V0VW5pdCYgbWFyZ2luQWZ0ZXJBbGlhcyA9
IG1fbWFyZ2luQm94Lm11dGFibGVBZnRlcihzdHlsZSgpLT53cml0aW5nTW9kZSgpKTsKIAogICAg
IExlbmd0aCBsb2dpY2FsVG9wID0gc3R5bGUoKS0+bG9naWNhbFRvcCgpOwogICAgIExlbmd0aCBs
b2dpY2FsQm90dG9tID0gc3R5bGUoKS0+bG9naWNhbEJvdHRvbSgpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCb3guaAkocmV2aXNpb24gMTI1Njg0KQorKysgU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMzAsMTcgKzIzMCwz
MyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRNYXJnaW5MZWZ0KExheW91dFVuaXQgbWFyZ2luKSB7
IG1fbWFyZ2luQm94LnNldExlZnQobWFyZ2luKTsgfQogICAgIHZvaWQgc2V0TWFyZ2luUmlnaHQo
TGF5b3V0VW5pdCBtYXJnaW4pIHsgbV9tYXJnaW5Cb3guc2V0UmlnaHQobWFyZ2luKTsgfQogCi0g
ICAgdmlydHVhbCBMYXlvdXRVbml0IG1hcmdpbkxvZ2ljYWxMZWZ0KCkgY29uc3QgeyByZXR1cm4g
bV9tYXJnaW5Cb3gubG9naWNhbExlZnQoc3R5bGUoKSk7IH0KLSAgICB2aXJ0dWFsIExheW91dFVu
aXQgbWFyZ2luTG9naWNhbFJpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9tYXJnaW5Cb3gubG9naWNh
bFJpZ2h0KHN0eWxlKCkpOyB9CisgICAgdmlydHVhbCBMYXlvdXRVbml0IG1hcmdpbkxvZ2ljYWxM
ZWZ0KCkgY29uc3QgeyByZXR1cm4gbV9tYXJnaW5Cb3gubG9naWNhbExlZnQoc3R5bGUoKS0+d3Jp
dGluZ01vZGUoKSk7IH0KKyAgICB2aXJ0dWFsIExheW91dFVuaXQgbWFyZ2luTG9naWNhbFJpZ2h0
KCkgY29uc3QgeyByZXR1cm4gbV9tYXJnaW5Cb3gubG9naWNhbFJpZ2h0KHN0eWxlKCktPndyaXRp
bmdNb2RlKCkpOyB9CiAgICAgCi0gICAgdmlydHVhbCBMYXlvdXRVbml0IG1hcmdpbkJlZm9yZShj
b25zdCBSZW5kZXJTdHlsZSogb3ZlcnJpZGVTdHlsZSA9IDApIGNvbnN0IE9WRVJSSURFIHsgcmV0
dXJuIG1fbWFyZ2luQm94LmJlZm9yZShvdmVycmlkZVN0eWxlID8gb3ZlcnJpZGVTdHlsZSA6IHN0
eWxlKCkpOyB9Ci0gICAgdmlydHVhbCBMYXlvdXRVbml0IG1hcmdpbkFmdGVyKGNvbnN0IFJlbmRl
clN0eWxlKiBvdmVycmlkZVN0eWxlID0gMCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9tYXJn
aW5Cb3guYWZ0ZXIob3ZlcnJpZGVTdHlsZSA/IG92ZXJyaWRlU3R5bGUgOiBzdHlsZSgpKTsgfQot
ICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBtYXJnaW5TdGFydChjb25zdCBSZW5kZXJTdHlsZSogb3Zl
cnJpZGVTdHlsZSA9IDApIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fbWFyZ2luQm94LnN0YXJ0
KG92ZXJyaWRlU3R5bGUgPyBvdmVycmlkZVN0eWxlIDogc3R5bGUoKSk7IH0KLSAgICB2aXJ0dWFs
IExheW91dFVuaXQgbWFyZ2luRW5kKGNvbnN0IFJlbmRlclN0eWxlKiBvdmVycmlkZVN0eWxlID0g
MCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9tYXJnaW5Cb3guZW5kKG92ZXJyaWRlU3R5bGUg
PyBvdmVycmlkZVN0eWxlIDogc3R5bGUoKSk7IH0KLSAgICB2b2lkIHNldE1hcmdpbkJlZm9yZShM
YXlvdXRVbml0IHZhbHVlLCBjb25zdCBSZW5kZXJTdHlsZSogb3ZlcnJpZGVTdHlsZSA9IDApIHsg
bV9tYXJnaW5Cb3guc2V0QmVmb3JlKG92ZXJyaWRlU3R5bGUgPyBvdmVycmlkZVN0eWxlIDogc3R5
bGUoKSwgdmFsdWUpOyB9Ci0gICAgdm9pZCBzZXRNYXJnaW5BZnRlcihMYXlvdXRVbml0IHZhbHVl
LCBjb25zdCBSZW5kZXJTdHlsZSogb3ZlcnJpZGVTdHlsZSA9IDApIHsgbV9tYXJnaW5Cb3guc2V0
QWZ0ZXIob3ZlcnJpZGVTdHlsZSA/IG92ZXJyaWRlU3R5bGUgOiBzdHlsZSgpLCB2YWx1ZSk7IH0K
LSAgICB2b2lkIHNldE1hcmdpblN0YXJ0KExheW91dFVuaXQgdmFsdWUsIGNvbnN0IFJlbmRlclN0
eWxlKiBvdmVycmlkZVN0eWxlID0gMCkgeyBtX21hcmdpbkJveC5zZXRTdGFydChvdmVycmlkZVN0
eWxlID8gb3ZlcnJpZGVTdHlsZSA6IHN0eWxlKCksIHZhbHVlKTsgfQotICAgIHZvaWQgc2V0TWFy
Z2luRW5kKExheW91dFVuaXQgdmFsdWUsIGNvbnN0IFJlbmRlclN0eWxlKiBvdmVycmlkZVN0eWxl
ID0gMCkgeyBtX21hcmdpbkJveC5zZXRFbmQob3ZlcnJpZGVTdHlsZSA/IG92ZXJyaWRlU3R5bGUg
OiBzdHlsZSgpLCB2YWx1ZSk7IH0KKyAgICB2aXJ0dWFsIExheW91dFVuaXQgbWFyZ2luQmVmb3Jl
KGNvbnN0IFJlbmRlclN0eWxlKiBvdmVycmlkZVN0eWxlID0gMCkgY29uc3QgT1ZFUlJJREUgeyBy
ZXR1cm4gbV9tYXJnaW5Cb3guYmVmb3JlKChvdmVycmlkZVN0eWxlID8gb3ZlcnJpZGVTdHlsZSA6
IHN0eWxlKCkpLT53cml0aW5nTW9kZSgpKTsgfQorICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBtYXJn
aW5BZnRlcihjb25zdCBSZW5kZXJTdHlsZSogb3ZlcnJpZGVTdHlsZSA9IDApIGNvbnN0IE9WRVJS
SURFIHsgcmV0dXJuIG1fbWFyZ2luQm94LmFmdGVyKChvdmVycmlkZVN0eWxlID8gb3ZlcnJpZGVT
dHlsZSA6IHN0eWxlKCkpLT53cml0aW5nTW9kZSgpKTsgfQorICAgIHZpcnR1YWwgTGF5b3V0VW5p
dCBtYXJnaW5TdGFydChjb25zdCBSZW5kZXJTdHlsZSogb3ZlcnJpZGVTdHlsZSA9IDApIGNvbnN0
IE9WRVJSSURFCisgICAgeworICAgICAgICBjb25zdCBSZW5kZXJTdHlsZSogc3R5bGVUb1VzZSA9
IG92ZXJyaWRlU3R5bGUgPyBvdmVycmlkZVN0eWxlIDogc3R5bGUoKTsKKyAgICAgICAgcmV0dXJu
IG1fbWFyZ2luQm94LnN0YXJ0KHN0eWxlVG9Vc2UtPndyaXRpbmdNb2RlKCksIHN0eWxlVG9Vc2Ut
PmRpcmVjdGlvbigpKTsKKyAgICB9CisgICAgdmlydHVhbCBMYXlvdXRVbml0IG1hcmdpbkVuZChj
b25zdCBSZW5kZXJTdHlsZSogb3ZlcnJpZGVTdHlsZSA9IDApIGNvbnN0IE9WRVJSSURFCisgICAg
eworICAgICAgICBjb25zdCBSZW5kZXJTdHlsZSogc3R5bGVUb1VzZSA9IG92ZXJyaWRlU3R5bGUg
PyBvdmVycmlkZVN0eWxlIDogc3R5bGUoKTsKKyAgICAgICAgcmV0dXJuIG1fbWFyZ2luQm94LmVu
ZChzdHlsZVRvVXNlLT53cml0aW5nTW9kZSgpLCBzdHlsZVRvVXNlLT5kaXJlY3Rpb24oKSk7Cisg
ICAgfQorICAgIHZvaWQgc2V0TWFyZ2luQmVmb3JlKExheW91dFVuaXQgdmFsdWUsIGNvbnN0IFJl
bmRlclN0eWxlKiBvdmVycmlkZVN0eWxlID0gMCkgeyBtX21hcmdpbkJveC5zZXRCZWZvcmUoKG92
ZXJyaWRlU3R5bGUgPyBvdmVycmlkZVN0eWxlIDogc3R5bGUoKSktPndyaXRpbmdNb2RlKCksIHZh
bHVlKTsgfQorICAgIHZvaWQgc2V0TWFyZ2luQWZ0ZXIoTGF5b3V0VW5pdCB2YWx1ZSwgY29uc3Qg
UmVuZGVyU3R5bGUqIG92ZXJyaWRlU3R5bGUgPSAwKSB7IG1fbWFyZ2luQm94LnNldEFmdGVyKChv
dmVycmlkZVN0eWxlID8gb3ZlcnJpZGVTdHlsZSA6IHN0eWxlKCkpLT53cml0aW5nTW9kZSgpLCB2
YWx1ZSk7IH0KKyAgICB2b2lkIHNldE1hcmdpblN0YXJ0KExheW91dFVuaXQgdmFsdWUsIGNvbnN0
IFJlbmRlclN0eWxlKiBvdmVycmlkZVN0eWxlID0gMCkKKyAgICB7CisgICAgICAgIGNvbnN0IFJl
bmRlclN0eWxlKiBzdHlsZVRvVXNlID0gb3ZlcnJpZGVTdHlsZSA/IG92ZXJyaWRlU3R5bGUgOiBz
dHlsZSgpOworICAgICAgICBtX21hcmdpbkJveC5zZXRTdGFydChzdHlsZVRvVXNlLT53cml0aW5n
TW9kZSgpLCBzdHlsZVRvVXNlLT5kaXJlY3Rpb24oKSwgdmFsdWUpOworICAgIH0KKyAgICB2b2lk
IHNldE1hcmdpbkVuZChMYXlvdXRVbml0IHZhbHVlLCBjb25zdCBSZW5kZXJTdHlsZSogb3ZlcnJp
ZGVTdHlsZSA9IDApCisgICAgeworICAgICAgICBjb25zdCBSZW5kZXJTdHlsZSogc3R5bGVUb1Vz
ZSA9IG92ZXJyaWRlU3R5bGUgPyBvdmVycmlkZVN0eWxlIDogc3R5bGUoKTsKKyAgICAgICAgbV9t
YXJnaW5Cb3guc2V0RW5kKHN0eWxlVG9Vc2UtPndyaXRpbmdNb2RlKCksIHN0eWxlVG9Vc2UtPmRp
cmVjdGlvbigpLCB2YWx1ZSk7CisgICAgfQogCiAgICAgLy8gVGhlIGZvbGxvd2luZyBmaXZlIGZ1
bmN0aW9ucyBhcmUgdXNlZCB0byBpbXBsZW1lbnQgY29sbGFwc2luZyBtYXJnaW5zLgogICAgIC8v
IEFsbCBvYmplY3RzIGtub3cgdGhlaXIgbWF4aW1hbCBwb3NpdGl2ZSBhbmQgbmVnYXRpdmUgbWFy
Z2lucy4gIFRoZQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0
eWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRl
clN0eWxlLmgJKHJldmlzaW9uIDEyNTY4NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9SZW5kZXJTdHlsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00OTMsMTAgKzQ5MywxMCBAQCBw
dWJsaWM6CiAgICAgTGVuZ3RoIGJvdHRvbSgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5vZmZz
ZXQuYm90dG9tKCk7IH0KIAogICAgIC8vIEFjY2Vzc29ycyBmb3IgcG9zaXRpb25lZCBvYmplY3Qg
ZWRnZXMgdGhhdCB0YWtlIGludG8gYWNjb3VudCB3cml0aW5nIG1vZGUuCi0gICAgTGVuZ3RoIGxv
Z2ljYWxMZWZ0KCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPm9mZnNldC5sb2dpY2FsTGVmdCh0
aGlzKTsgfQotICAgIExlbmd0aCBsb2dpY2FsUmlnaHQoKSBjb25zdCB7IHJldHVybiBzdXJyb3Vu
ZC0+b2Zmc2V0LmxvZ2ljYWxSaWdodCh0aGlzKTsgfQotICAgIExlbmd0aCBsb2dpY2FsVG9wKCkg
Y29uc3QgeyByZXR1cm4gc3Vycm91bmQtPm9mZnNldC5iZWZvcmUodGhpcyk7IH0KLSAgICBMZW5n
dGggbG9naWNhbEJvdHRvbSgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5vZmZzZXQuYWZ0ZXIo
dGhpcyk7IH0KKyAgICBMZW5ndGggbG9naWNhbExlZnQoKSBjb25zdCB7IHJldHVybiBzdXJyb3Vu
ZC0+b2Zmc2V0LmxvZ2ljYWxMZWZ0KHdyaXRpbmdNb2RlKCkpOyB9CisgICAgTGVuZ3RoIGxvZ2lj
YWxSaWdodCgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5vZmZzZXQubG9naWNhbFJpZ2h0KHdy
aXRpbmdNb2RlKCkpOyB9CisgICAgTGVuZ3RoIGxvZ2ljYWxUb3AoKSBjb25zdCB7IHJldHVybiBz
dXJyb3VuZC0+b2Zmc2V0LmJlZm9yZSh3cml0aW5nTW9kZSgpKTsgfQorICAgIExlbmd0aCBsb2dp
Y2FsQm90dG9tKCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPm9mZnNldC5hZnRlcih3cml0aW5n
TW9kZSgpKTsgfQogCiAgICAgLy8gV2hldGhlciBvciBub3QgYSBwb3NpdGlvbmVkIGVsZW1lbnQg
cmVxdWlyZXMgbm9ybWFsIGZsb3cgeC95IHRvIGJlIGNvbXB1dGVkCiAgICAgLy8gdG8gZGV0ZXJt
aW5lIGl0cyBwb3NpdGlvbi4KQEAgLTcxOCwyNCArNzE4LDI0IEBAIHB1YmxpYzoKICAgICBMZW5n
dGggbWFyZ2luQm90dG9tKCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPm1hcmdpbi5ib3R0b20o
KTsgfQogICAgIExlbmd0aCBtYXJnaW5MZWZ0KCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPm1h
cmdpbi5sZWZ0KCk7IH0KICAgICBMZW5ndGggbWFyZ2luUmlnaHQoKSBjb25zdCB7IHJldHVybiBz
dXJyb3VuZC0+bWFyZ2luLnJpZ2h0KCk7IH0KLSAgICBMZW5ndGggbWFyZ2luQmVmb3JlKCkgY29u
c3QgeyByZXR1cm4gc3Vycm91bmQtPm1hcmdpbi5iZWZvcmUodGhpcyk7IH0KLSAgICBMZW5ndGgg
bWFyZ2luQWZ0ZXIoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+bWFyZ2luLmFmdGVyKHRoaXMp
OyB9Ci0gICAgTGVuZ3RoIG1hcmdpblN0YXJ0KCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPm1h
cmdpbi5zdGFydCh0aGlzKTsgfQotICAgIExlbmd0aCBtYXJnaW5FbmQoKSBjb25zdCB7IHJldHVy
biBzdXJyb3VuZC0+bWFyZ2luLmVuZCh0aGlzKTsgfQotICAgIExlbmd0aCBtYXJnaW5TdGFydFVz
aW5nKGNvbnN0IFJlbmRlclN0eWxlKiBvdGhlclN0eWxlKSBjb25zdCB7IHJldHVybiBzdXJyb3Vu
ZC0+bWFyZ2luLnN0YXJ0KG90aGVyU3R5bGUpOyB9Ci0gICAgTGVuZ3RoIG1hcmdpbkVuZFVzaW5n
KGNvbnN0IFJlbmRlclN0eWxlKiBvdGhlclN0eWxlKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+
bWFyZ2luLmVuZChvdGhlclN0eWxlKTsgfQotICAgIExlbmd0aCBtYXJnaW5CZWZvcmVVc2luZyhj
b25zdCBSZW5kZXJTdHlsZSogb3RoZXJTdHlsZSkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPm1h
cmdpbi5iZWZvcmUob3RoZXJTdHlsZSk7IH0KLSAgICBMZW5ndGggbWFyZ2luQWZ0ZXJVc2luZyhj
b25zdCBSZW5kZXJTdHlsZSogb3RoZXJTdHlsZSkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPm1h
cmdpbi5hZnRlcihvdGhlclN0eWxlKTsgfQorICAgIExlbmd0aCBtYXJnaW5CZWZvcmUoKSBjb25z
dCB7IHJldHVybiBzdXJyb3VuZC0+bWFyZ2luLmJlZm9yZSh3cml0aW5nTW9kZSgpKTsgfQorICAg
IExlbmd0aCBtYXJnaW5BZnRlcigpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5tYXJnaW4uYWZ0
ZXIod3JpdGluZ01vZGUoKSk7IH0KKyAgICBMZW5ndGggbWFyZ2luU3RhcnQoKSBjb25zdCB7IHJl
dHVybiBzdXJyb3VuZC0+bWFyZ2luLnN0YXJ0KHdyaXRpbmdNb2RlKCksIGRpcmVjdGlvbigpKTsg
fQorICAgIExlbmd0aCBtYXJnaW5FbmQoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+bWFyZ2lu
LmVuZCh3cml0aW5nTW9kZSgpLCBkaXJlY3Rpb24oKSk7IH0KKyAgICBMZW5ndGggbWFyZ2luU3Rh
cnRVc2luZyhjb25zdCBSZW5kZXJTdHlsZSogb3RoZXJTdHlsZSkgY29uc3QgeyByZXR1cm4gc3Vy
cm91bmQtPm1hcmdpbi5zdGFydChvdGhlclN0eWxlLT53cml0aW5nTW9kZSgpLCBvdGhlclN0eWxl
LT5kaXJlY3Rpb24oKSk7IH0KKyAgICBMZW5ndGggbWFyZ2luRW5kVXNpbmcoY29uc3QgUmVuZGVy
U3R5bGUqIG90aGVyU3R5bGUpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5tYXJnaW4uZW5kKG90
aGVyU3R5bGUtPndyaXRpbmdNb2RlKCksIG90aGVyU3R5bGUtPmRpcmVjdGlvbigpKTsgfQorICAg
IExlbmd0aCBtYXJnaW5CZWZvcmVVc2luZyhjb25zdCBSZW5kZXJTdHlsZSogb3RoZXJTdHlsZSkg
Y29uc3QgeyByZXR1cm4gc3Vycm91bmQtPm1hcmdpbi5iZWZvcmUob3RoZXJTdHlsZS0+d3JpdGlu
Z01vZGUoKSk7IH0KKyAgICBMZW5ndGggbWFyZ2luQWZ0ZXJVc2luZyhjb25zdCBSZW5kZXJTdHls
ZSogb3RoZXJTdHlsZSkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPm1hcmdpbi5hZnRlcihvdGhl
clN0eWxlLT53cml0aW5nTW9kZSgpKTsgfQogCiAgICAgTGVuZ3RoQm94IHBhZGRpbmdCb3goKSBj
b25zdCB7IHJldHVybiBzdXJyb3VuZC0+cGFkZGluZzsgfQogICAgIExlbmd0aCBwYWRkaW5nVG9w
KCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPnBhZGRpbmcudG9wKCk7IH0KICAgICBMZW5ndGgg
cGFkZGluZ0JvdHRvbSgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5wYWRkaW5nLmJvdHRvbSgp
OyB9CiAgICAgTGVuZ3RoIHBhZGRpbmdMZWZ0KCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPnBh
ZGRpbmcubGVmdCgpOyB9CiAgICAgTGVuZ3RoIHBhZGRpbmdSaWdodCgpIGNvbnN0IHsgcmV0dXJu
IHN1cnJvdW5kLT5wYWRkaW5nLnJpZ2h0KCk7IH0KLSAgICBMZW5ndGggcGFkZGluZ0JlZm9yZSgp
IGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5wYWRkaW5nLmJlZm9yZSh0aGlzKTsgfQotICAgIExl
bmd0aCBwYWRkaW5nQWZ0ZXIoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+cGFkZGluZy5hZnRl
cih0aGlzKTsgfQotICAgIExlbmd0aCBwYWRkaW5nU3RhcnQoKSBjb25zdCB7IHJldHVybiBzdXJy
b3VuZC0+cGFkZGluZy5zdGFydCh0aGlzKTsgfQotICAgIExlbmd0aCBwYWRkaW5nRW5kKCkgY29u
c3QgeyByZXR1cm4gc3Vycm91bmQtPnBhZGRpbmcuZW5kKHRoaXMpOyB9CisgICAgTGVuZ3RoIHBh
ZGRpbmdCZWZvcmUoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+cGFkZGluZy5iZWZvcmUod3Jp
dGluZ01vZGUoKSk7IH0KKyAgICBMZW5ndGggcGFkZGluZ0FmdGVyKCkgY29uc3QgeyByZXR1cm4g
c3Vycm91bmQtPnBhZGRpbmcuYWZ0ZXIod3JpdGluZ01vZGUoKSk7IH0KKyAgICBMZW5ndGggcGFk
ZGluZ1N0YXJ0KCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPnBhZGRpbmcuc3RhcnQod3JpdGlu
Z01vZGUoKSwgZGlyZWN0aW9uKCkpOyB9CisgICAgTGVuZ3RoIHBhZGRpbmdFbmQoKSBjb25zdCB7
IHJldHVybiBzdXJyb3VuZC0+cGFkZGluZy5lbmQod3JpdGluZ01vZGUoKSwgZGlyZWN0aW9uKCkp
OyB9CiAKICAgICBFQ3Vyc29yIGN1cnNvcigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVD
dXJzb3I+KGluaGVyaXRlZF9mbGFncy5fY3Vyc29yX3N0eWxlKTsgfQogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMu
aAkocmV2aXNpb24gMTI1Njg0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1Jl
bmRlclN0eWxlQ29uc3RhbnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzMCwxMSArMTMwLDYgQEAg
ZW51bSBFVGFibGVMYXlvdXQgewogICAgIFRBVVRPLCBURklYRUQKIH07CiAKLS8vIENTUyBUZXh0
IExheW91dCBNb2R1bGUgTGV2ZWwgMzogVmVydGljYWwgd3JpdGluZyBzdXBwb3J0Ci1lbnVtIFdy
aXRpbmdNb2RlIHsKLSAgICBUb3BUb0JvdHRvbVdyaXRpbmdNb2RlLCBSaWdodFRvTGVmdFdyaXRp
bmdNb2RlLCBMZWZ0VG9SaWdodFdyaXRpbmdNb2RlLCBCb3R0b21Ub1RvcFdyaXRpbmdNb2RlCi19
OwotCiBlbnVtIFRleHRDb21iaW5lIHsKICAgICBUZXh0Q29tYmluZU5vbmUsIFRleHRDb21iaW5l
SG9yaXpvbnRhbAogfTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>