<?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>72179</bug_id>
          
          <creation_ts>2011-11-11 13:52:52 -0800</creation_ts>
          <short_desc>JSC wrappers for TextTrack and TextTrackCue should not be collected during event dispatch or when owner is reachable</short_desc>
          <delta_ts>2011-12-23 19:49:46 -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>Media</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>43668</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Anna Cavender">annacc</reporter>
          <assigned_to name="Eric Carlson">eric.carlson</assigned_to>
          <cc>abarth</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ojan</cc>
    
    <cc>rniwa</cc>
    
    <cc>tonyg</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>501065</commentid>
    <comment_count>0</comment_count>
    <who name="Anna Cavender">annacc</who>
    <bug_when>2011-11-11 13:52:52 -0800</bug_when>
    <thetext>According to eric.carlson:
Every non-DOM object that is an EventTarget needs code (for JSC at lease, I don&apos;t know about V8) to make sure that the wrapper isn&apos;t collected during event dispatch or while the parent/owner object is reachable. For example, see JSTextTrackListOwner::isReachableFromOpaqueRoots and the tracklist-is-reachable.html test added in https://bugs.webkit.org/show_bug.cgi?id=71123.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>502242</commentid>
    <comment_count>1</comment_count>
    <who name="Anna Cavender">annacc</who>
    <bug_when>2011-11-14 13:22:32 -0800</bug_when>
    <thetext>*** Bug 72149 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>505107</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2011-11-17 12:38:31 -0800</bug_when>
    <thetext>&lt;rdar://problem/10464469&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>515387</commentid>
    <comment_count>3</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2011-12-05 14:15:18 -0800</bug_when>
    <thetext>Wrote up 73865 for the V8 changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>515550</commentid>
    <comment_count>4</comment_count>
      <attachid>117966</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2011-12-05 17:46:29 -0800</bug_when>
    <thetext>Created attachment 117966
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>515556</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-05 17:52:16 -0800</bug_when>
    <thetext>Attachment 117966 did not pass style-queue:

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

LayoutTests/ChangeLog:8:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
LayoutTests/ChangeLog:10:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
Total errors found: 2 in 19 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>515621</commentid>
    <comment_count>6</comment_count>
      <attachid>117985</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2011-12-05 20:52:46 -0800</bug_when>
    <thetext>Created attachment 117985
Updated patch

Fix the malformed ChangeLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>516473</commentid>
    <comment_count>7</comment_count>
      <attachid>117985</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-12-06 20:36:02 -0800</bug_when>
    <thetext>Comment on attachment 117985
Updated patch

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

r=me

&gt; Source/WebCore/bindings/js/JSTextTrackCueCustom.cpp:57
&gt; +    return visitor.containsOpaqueRoot(root(textTrackCue-&gt;track()-&gt;mediaElement()));

Slightly nicer to call &quot;root(textTrackCue-&gt;track())&quot;, and put root(TextTrack*) inline in a header. That way, if a text track ever changes its mind about what its root is, we only have to update one function.

&gt; Source/WebCore/bindings/js/JSTextTrackCustom.cpp:52
&gt; +    return visitor.containsOpaqueRoot(root(textTrack-&gt;mediaElement()));

This would be &quot;root(textTrack)&quot;, if you followed my advice above.

&gt; Source/WebCore/html/track/TextTrackList.cpp:93
&gt; +    scheduleAddTrackEvent(track);

Can this be &quot;track.release()&quot;?

&gt; Source/WebCore/html/track/TextTrackList.cpp:96
&gt; +void TextTrackList::remove(PassRefPtr&lt;TextTrack&gt; prpTrack)

Seems like prpTrack should just be a raw pointer, since we don&apos;t take ownership.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>518457</commentid>
    <comment_count>8</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2011-12-09 13:35:17 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/102471</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>526937</commentid>
    <comment_count>9</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-12-23 19:49:46 -0800</bug_when>
    <thetext>Mac rebaseline done in http://trac.webkit.org/changeset/103642.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>117966</attachid>
            <date>2011-12-05 17:46:29 -0800</date>
            <delta_ts>2011-12-05 20:52:46 -0800</delta_ts>
            <desc>Proposed patch</desc>
            <filename>patch_ready_state_4.txt</filename>
            <type>text/plain</type>
            <size>26626</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMjA0NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM5IEBACisyMDExLTEyLTA1ICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIEpTQyB3cmFwcGVycyBm
b3IgVGV4dFRyYWNrIGFuZCBUZXh0VHJhY2tDdWUgc2hvdWxkIG5vdCBiZSBjb2xsZWN0ZWQgb24g
ZXZlbnQgZGlzcGF0Y2ggYW5kIHdoZW4gcGFyZW50L293bmVyIGFyZSBzdGlsbCByZWFjaGFibGUK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcyMTc5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdHM6IG1l
ZGlhL3RyYWNrL3RleHQtdHJhY2stY3VlLWlzLXJlYWNoYWJsZS5odG1sCisgICAgICAgICAgICAg
ICBtZWRpYS90cmFjay90ZXh0LXRyYWNrLWlzLXJlYWNoYWJsZS5odG1sCisKKyAgICAgICAgKiBH
TlVtYWtlZmlsZS5saXN0LmFtOiBBZGQgSlNUZXh0VHJhY2tDdWVDdXN0b20uY3BwIGFuZCBKU1Rl
eHRUcmFja0N1c3RvbS5jcHAuCisgICAgICAgICogVGFyZ2V0LnByaTogRGl0dG8uCisgICAgICAg
ICogV2ViQ29yZS5neXBpOiBEaXR0by4KKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6IERpdHRvCisgICAgICAgICogYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbElu
T25lLmNwcDogRGl0dG8uCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1RleHRUcmFja0N1ZUN1
c3RvbS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SlNUZXh0VHJhY2tDdWVPd25lcjo6
aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMpOgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNU
ZXh0VHJhY2tDdXN0b20uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkpTVGV4dFRyYWNr
T3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKToKKworICAgICAgICAqIGh0bWwvVGV4
dFRyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFjazo6VGV4dFRyYWNrKTogSW5p
dGlhbGl6ZSBtX21lZGlhRWxlbWVudC4KKyAgICAgICAgKiBodG1sL1RleHRUcmFjay5oOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjpzZXRNZWRpYUVsZW1lbnQpOiBOZXcuCisgICAgICAg
IChXZWJDb3JlOjpUZXh0VHJhY2s6Om1lZGlhRWxlbWVudCk6IERpdHRvLgorCisgICAgICAgICog
aHRtbC9UZXh0VHJhY2suaWRsOiBBZGQgQ3VzdG9tSXNSZWFjaGFibGUuCisKKyAgICAgICAgKiBo
dG1sL1RleHRUcmFja0N1ZS5pZGw6IERpdHRvLgorCisgICAgICAgICogaHRtbC90cmFjay9UZXh0
VHJhY2tMaXN0LmNwcDoKKyAgICAgICAgKFRleHRUcmFja0xpc3Q6OmFwcGVuZCk6IFNldCB0cmFj
aydzIG1lZGlhIGVsZW1lbnQuCisgICAgICAgIChUZXh0VHJhY2tMaXN0OjpyZW1vdmUpOiBDbGVh
ciB0cmFjaydzIG1lZGlhIGVsZW1lbnQuCisKIDIwMTEtMTItMDUgIEFuZGVycyBDYXJsc3NvbiAg
PGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBNYWtlIExheWVyRmx1c2hTY2hlZHVsZXJD
bGllbnQ6OmZsdXNoTGF5ZXJzIGluZGljYXRlIHdoZXRoZXIgdGhlIGZsdXNoIHdhcyBzdWNjZXNz
ZnVsIG9yIG5vdApJbmRleDogU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiAx
MDIwMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNv
cHkpCkBAIC04NTEsNiArODUxLDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1N0eWxlU2hlZXRDdXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1N0eWxlU2hlZXRMaXN0Q3VzdG9tLmNwcCBcCiAJU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNUZXh0Q3VzdG9tLmNwcCBcCisJU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNUZXh0VHJhY2tDdWVDdXN0b20uY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1RleHRUcmFja0N1c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTVGV4dFRyYWNrTGlzdEN1c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTVG91Y2hDdXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RvdWNo
TGlzdEN1c3RvbS5jcHAgXApJbmRleDogU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCShyZXZpc2lvbiAxMDIwMTYpCisrKyBT
b3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCSh3b3JraW5nIGNvcHkpCkBAIC0zNTY2LDkgKzM1NjYs
MTEgQEAgY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1ZJREVPX1RSQUNLPTEpIAogICAgICAgICAg
ICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4VHJhY2tFdmVudEN1c3RvbS5jcHAKICAgICB9IGVsc2Ug
ewogICAgICAgICBTT1VSQ0VTICs9IFwKKyAgICAgICAgICAgIGJpbmRpbmdzL2pzL0pTVGV4dFRy
YWNrQ3VlQ3VzdG9tLmNwcCBcCisgICAgICAgICAgICBiaW5kaW5ncy9qcy9KU1RleHRUcmFja0N1
c3RvbS5jcHAgXAogICAgICAgICAgICAgYmluZGluZ3MvanMvSlNUcmFja0N1c3RvbS5jcHAgXAog
ICAgICAgICAgICAgYmluZGluZ3MvanMvSlNUcmFja0N1c3RvbS5oIFwKLSAgICAgICAgICAgIGJp
bmRpbmdzL2pzL0pTVHJhY2tFdmVudEN1c3RvbS5jcHAKKyAgICAgICAgICAgIGJpbmRpbmdzL2pz
L0pTVHJhY2tFdmVudEN1c3RvbS5jcHAgXAogICAgICAgICAgICAgYmluZGluZ3MvanMvSlNUZXh0
VHJhY2tMaXN0Q3VzdG9tLmNwcAogICAgIH0KIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJldmlz
aW9uIDEwMjAxNikKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29ya2luZyBjb3B5
KQpAQCAtMTk1MCw2ICsxOTUwLDggQEAKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU1N0eWxl
U2hlZXRDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU1N0eWxlU2hlZXRM
aXN0Q3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNUZXh0Q3VzdG9tLmNw
cCcsCisgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNUZXh0VHJhY2tDdWVDdXN0b20uY3BwJywK
KyAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU1RleHRUcmFja0N1c3RvbS5jcHAnLAogICAgICAg
ICAgICAgJ2JpbmRpbmdzL2pzL0pTVGV4dFRyYWNrTGlzdEN1c3RvbS5jcHAnLAogICAgICAgICAg
ICAgJ2JpbmRpbmdzL2pzL0pTVG91Y2hDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5n
cy9qcy9KU1RvdWNoTGlzdEN1c3RvbS5jcHAnLApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTAyMDE2KQorKysg
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5n
IGNvcHkpCkBAIC0xMTYsNiArMTE2LDggQEAKIAkJMDdCNUEyREMxNDY0MzIwQTAwQTgxRUNFIC8q
IEpTVGV4dFRyYWNrTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMDdCNUEyREExNDY0MzIwQTAwQTgxRUNFIC8qIEpTVGV4dFRyYWNrTGlzdC5oICov
OyB9OwogCQkwN0I1QTMwRDE0Njg3RDcxMDBBODFFQ0UgLyogSlNUZXh0VHJhY2tMaXN0Q3VzdG9t
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3QjVB
MzBDMTQ2ODdENzEwMEE4MUVDRSAvKiBKU1RleHRUcmFja0xpc3RDdXN0b20uY3BwICovOyB9Owog
CQkwN0JERDZFQzE0NjlCNEMyMDA5QzlGODUgLyogSlNUcmFja0V2ZW50Q3VzdG9tLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3QjVBMzBBMTQ2ODdC
ODQwMEE4MUVDRSAvKiBKU1RyYWNrRXZlbnRDdXN0b20uY3BwICovOyB9OworCQkwN0UxMTZCMTE0
ODlDOUExMDBFQzVBQ0UgLyogSlNUZXh0VHJhY2tDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdFMTE2QjAxNDg5QzlBMTAwRUM1QUNFIC8q
IEpTVGV4dFRyYWNrQ3VzdG9tLmNwcCAqLzsgfTsKKwkJMDdFMTE3MDcxNDg5RUJFQjAwRUM1QUNF
IC8qIEpTVGV4dFRyYWNrQ3VlQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDA3RTExNzA2MTQ4OUVCRUIwMEVDNUFDRSAvKiBKU1RleHRUcmFj
a0N1ZUN1c3RvbS5jcHAgKi87IH07CiAJCTA4MDZFNTdBMTI4OTMwNDUwMDdDRUQzMiAvKiBTVkdN
YXRyaXguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4
MDZFNTc5MTI4OTMwNDUwMDdDRUQzMiAvKiBTVkdNYXRyaXguaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwODBFNDkyNjEyNTVGM0JEMDBFRkNBMjcg
LyogU1ZHVGV4dExheW91dEVuZ2luZUJhc2VsaW5lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODBFNDkyMjEyNTVGM0JEMDBFRkNBMjcgLyogU1ZHVGV4
dExheW91dEVuZ2luZUJhc2VsaW5lLmggKi87IH07CiAJCTA4MEU0OTI4MTI1NUYzQkQwMEVGQ0Ey
NyAvKiBTVkdUZXh0TGF5b3V0RW5naW5lU3BhY2luZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDgwRTQ5MjQxMjU1RjNCRDAwRUZDQTI3IC8qIFNWR1Rl
eHRMYXlvdXRFbmdpbmVTcGFjaW5nLmggKi87IH07CkBAIC03MTYwLDYgKzcxNjIsOCBAQAogCQkw
N0I1QTMwNjE0Njg1MzcxMDBBODFFQ0UgLyogVGV4dFRyYWNrTGlzdC5pZGwgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBwYXRoID0gVGV4dFRyYWNrTGlzdC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTA3QjVBMzBBMTQ2ODdCODQwMEE4MUVDRSAvKiBKU1RyYWNrRXZlbnRDdXN0b20uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNUcmFja0V2ZW50Q3VzdG9tLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDdCNUEzMEMxNDY4N0Q3MTAwQTgxRUNF
IC8qIEpTVGV4dFRyYWNrTGlzdEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKU1RleHRUcmFja0xpc3RDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkwN0UxMTZCMDE0ODlDOUExMDBFQzVBQ0UgLyogSlNUZXh0VHJhY2tDdXN0b20u
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNUZXh0VHJhY2tDdXN0
b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwN0UxMTcwNjE0ODlFQkVCMDBF
QzVBQ0UgLyogSlNUZXh0VHJhY2tDdWVDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSlNUZXh0VHJhY2tDdWVDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwODA2RTU3OTEyODkzMDQ1MDA3Q0VEMzIgLyogU1ZHTWF0cml4LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR01hdHJpeC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwODBFNDkyMTEyNTVGM0JEMDBFRkNBMjcgLyogU1ZHVGV4dExheW91
dEVuZ2luZUJhc2VsaW5lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFNWR1RleHRMYXlvdXRFbmdpbmVCYXNlbGluZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTA4MEU0OTIyMTI1NUYzQkQwMEVGQ0EyNyAvKiBTVkdUZXh0TGF5b3V0RW5naW5lQmFz
ZWxpbmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHVGV4dExheW91dEVu
Z2luZUJhc2VsaW5lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xOTc1Niw2ICsx
OTc2MCw4IEBACiAJCQkJMDhFNEZFNDUwRTJCRDQxNDAwRjRDQUUwIC8qIEpTU1ZHTGVuZ3RoQ3Vz
dG9tLmNwcCAqLywKIAkJCQlCMkM5NkQ4QzBCM0FGMkI3MDA1RTgwRUMgLyogSlNTVkdQYXRoU2Vn
Q3VzdG9tLmNwcCAqLywKIAkJCQkxQTJDNDBBQTBERUI1NUFBMDA1QUYxOUUgLyogSlNUZXh0Q3Vz
dG9tLmNwcCAqLywKKwkJCQkwN0UxMTZCMDE0ODlDOUExMDBFQzVBQ0UgLyogSlNUZXh0VHJhY2tD
dXN0b20uY3BwICovLAorCQkJCTA3RTExNzA2MTQ4OUVCRUIwMEVDNUFDRSAvKiBKU1RleHRUcmFj
a0N1ZUN1c3RvbS5jcHAgKi8sCiAJCQkJMDdCNUEzMEMxNDY4N0Q3MTAwQTgxRUNFIC8qIEpTVGV4
dFRyYWNrTGlzdEN1c3RvbS5jcHAgKi8sCiAJCQkJMDcwMzM0RTgxNDVBMUYzNTAwOEQ4RDQ1IC8q
IEpTVHJhY2tDdXN0b20uY3BwICovLAogCQkJCTA3ODQ2Mzg0MTQ1QjFCOEUwMEE1OERGMSAvKiBK
U1RyYWNrQ3VzdG9tLmggKi8sCkBAIC0yNzYxNyw2ICsyNzYyMyw4IEBACiAJCQkJMzEyOENBNjgx
NDczMzE1MjAwNzRDNzJBIC8qIE5vdGlmaWNhdGlvbkNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNTAzOEJGMkExNDc1MEYxOTAwOTVFMEQxIC8qIEZpbHRlck9wZXJhdGlvbnMuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNkUzRkFEMzgxNDczM0Y0MDAwRTQyMzA2IC8qIEpTV2ViR0xD
b21wcmVzc2VkVGV4dHVyZXMuY3BwIGluIFNvdXJjZXMgKi8sCisgCQkJCTA3RTExNkIxMTQ4OUM5
QTEwMEVDNUFDRSAvKiBKU1RleHRUcmFja0N1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKKyAJCQkJ
MDdFMTE3MDcxNDg5RUJFQjAwRUM1QUNFIC8qIEpTVGV4dFRyYWNrQ3VlQ3VzdG9tLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTZFM0ZBRThFMTQ3MzNGREIwMEU0MjMwNiAvKiBXZWJHTENvbXByZXNz
ZWRUZXh0dXJlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyNjU1NDEzQTE0ODk4MTFDMDAwREZD
NUQgLyogS2V5RXZlbnRJT1MubW0gaW4gU291cmNlcyAqLywKIAkJCSk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAJKHJldmlz
aW9uIDEwMjAxNikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJ
bk9uZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNiw2ICsxMzYsOCBAQAogI2luY2x1ZGUgIkpT
U3R5bGVTaGVldEN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNTdHlsZVNoZWV0TGlzdEN1c3RvbS5j
cHAiCiAjaW5jbHVkZSAiSlNUZXh0Q3VzdG9tLmNwcCIKKyNpbmNsdWRlICJKU1RleHRUcmFja0N1
ZUN1c3RvbS5jcHAiCisjaW5jbHVkZSAiSlNUZXh0VHJhY2tDdXN0b20uY3BwIgogI2luY2x1ZGUg
IkpTVGV4dFRyYWNrTGlzdEN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNUb3VjaEN1c3RvbS5jcHAi
CiAjaW5jbHVkZSAiSlNUb3VjaExpc3RDdXN0b20uY3BwIgpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNUZXh0VHJhY2tDdWVDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVGV4dFRyYWNrQ3VlQ3VzdG9tLmNwcAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVGV4dFRyYWNrQ3VlQ3VzdG9tLmNw
cAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKworI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyNpbmNsdWRlICJKU1RleHRUcmFja0N1
ZS5oIgorCisjaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgorI2luY2x1ZGUgIlRleHRUcmFj
ay5oIgorCit1c2luZyBuYW1lc3BhY2UgSlNDOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Jv
b2wgSlNUZXh0VHJhY2tDdWVPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpI
YW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqLCBTbG90VmlzaXRvciYgdmlzaXRvcikK
K3sKKyAgICBKU1RleHRUcmFja0N1ZSoganNUZXh0VHJhY2tDdWUgPSBzdGF0aWNfY2FzdDxKU1Rl
eHRUcmFja0N1ZSo+KGhhbmRsZS5nZXQoKS5hc0NlbGwoKSk7CisgICAgVGV4dFRyYWNrQ3VlKiB0
ZXh0VHJhY2tDdWUgPSBzdGF0aWNfY2FzdDxUZXh0VHJhY2tDdWUqPihqc1RleHRUcmFja0N1ZS0+
aW1wbCgpKTsKKworICAgIC8vIElmIHRoZSBjdWUgaXMgZmlyaW5nIGV2ZW50IGxpc3RlbmVycywg
aXRzIHdyYXBwZXIgaXMgcmVhY2hhYmxlIGJlY2F1c2UKKyAgICAvLyB0aGUgd3JhcHBlciBpcyBy
ZXNwb25zaWJsZSBmb3IgbWFya2luZyB0aG9zZSBldmVudCBsaXN0ZW5lcnMuCisgICAgaWYgKHRl
eHRUcmFja0N1ZS0+aXNGaXJpbmdFdmVudExpc3RlbmVycygpKQorICAgICAgICByZXR1cm4gdHJ1
ZTsKKworICAgIC8vIElmIHRoZSBjdWUgaGFzIG5vIGV2ZW50IGxpc3RlbmVycyBhbmQgaGFzIG5v
IGN1c3RvbSBwcm9wZXJ0aWVzLCBpdCBpcyBub3QgcmVhY2hhYmxlLgorICAgIGlmICghdGV4dFRy
YWNrQ3VlLT5oYXNFdmVudExpc3RlbmVycygpICYmICFqc1RleHRUcmFja0N1ZS0+aGFzQ3VzdG9t
UHJvcGVydGllcygpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBJZiB0aGUgY3Vl
IGlzIG5vdCBhc3NvY2lhdGVkIHdpdGggYSB0cmFjaywgaXQgaXMgbm90IHJlYWNoYWJsZS4KKyAg
ICBpZiAoIXRleHRUcmFja0N1ZS0+dHJhY2soKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgLy8gSXQgaXMgcmVhY2hhYmxlIGlmIHRoZSBjdWUncyB0cmFjaydzIG1lZGlhIGVsZW1lbnQg
cGFyZW50IGlzIHJlYWNoYWJsZS4KKyAgICByZXR1cm4gdmlzaXRvci5jb250YWluc09wYXF1ZVJv
b3Qocm9vdCh0ZXh0VHJhY2tDdWUtPnRyYWNrKCktPm1lZGlhRWxlbWVudCgpKSk7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1RleHRUcmFja0N1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNUZXh0VHJhY2tDdXN0b20uY3BwCShyZXZpc2lvbiAwKQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUZXh0VHJhY2tDdXN0b20uY3BwCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYg
RU5BQkxFKFZJREVPX1RSQUNLKQorI2luY2x1ZGUgIkpTVGV4dFRyYWNrLmgiCisKKyNpbmNsdWRl
ICJIVE1MTWVkaWFFbGVtZW50LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworYm9vbCBKU1RleHRUcmFja093bmVyOjppc1JlYWNoYWJsZUZyb21PcGFx
dWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCosIFNsb3RWaXNp
dG9yJiB2aXNpdG9yKQoreworICAgIEpTVGV4dFRyYWNrKiBqc1RleHRUcmFjayA9IHN0YXRpY19j
YXN0PEpTVGV4dFRyYWNrKj4oaGFuZGxlLmdldCgpLmFzQ2VsbCgpKTsKKyAgICBUZXh0VHJhY2sq
IHRleHRUcmFjayA9IHN0YXRpY19jYXN0PFRleHRUcmFjayo+KGpzVGV4dFRyYWNrLT5pbXBsKCkp
OworCisgICAgLy8gSWYgdGhlIGN1ZSBpcyBmaXJpbmcgZXZlbnQgbGlzdGVuZXJzLCBpdHMgd3Jh
cHBlciBpcyByZWFjaGFibGUgYmVjYXVzZQorICAgIC8vIHRoZSB3cmFwcGVyIGlzIHJlc3BvbnNp
YmxlIGZvciBtYXJraW5nIHRob3NlIGV2ZW50IGxpc3RlbmVycy4KKyAgICBpZiAodGV4dFRyYWNr
LT5pc0ZpcmluZ0V2ZW50TGlzdGVuZXJzKCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAg
Ly8gSWYgdGhlIGN1ZSBoYXMgbm8gZXZlbnQgbGlzdGVuZXJzIGFuZCBoYXMgbm8gY3VzdG9tIHBy
b3BlcnRpZXMsIGl0IGlzIG5vdCByZWFjaGFibGUuCisgICAgaWYgKCF0ZXh0VHJhY2stPmhhc0V2
ZW50TGlzdGVuZXJzKCkgJiYgIWpzVGV4dFRyYWNrLT5oYXNDdXN0b21Qcm9wZXJ0aWVzKCkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIEl0IGlzIHJlYWNoYWJsZSBpZiB0aGUgdHJh
Y2sncyBtZWRpYSBlbGVtZW50IHBhcmVudCBpcyByZWFjaGFibGUuCisgICAgcmV0dXJuIHZpc2l0
b3IuY29udGFpbnNPcGFxdWVSb290KHJvb3QodGV4dFRyYWNrLT5tZWRpYUVsZW1lbnQoKSkpOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNv
cmUvaHRtbC9UZXh0VHJhY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwv
VGV4dFRyYWNrLmNwcAkocmV2aXNpb24gMTAyMDE2KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9U
ZXh0VHJhY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHly
aWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtNzMsNiArNzQsNyBAQCBjb25zdCBBdG9taWNT
dHJpbmcmIFRleHRUcmFjazo6bWV0YWRhdGFLCiAKIFRleHRUcmFjazo6VGV4dFRyYWNrKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFRleHRUcmFja0NsaWVudCogY2xpZW50LCBjb25z
dCBTdHJpbmcmIGtpbmQsIGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IFN0cmluZyYgbGFuZ3Vh
Z2UsIFRleHRUcmFja1R5cGUgdHlwZSkKICAgICA6IFRyYWNrQmFzZShjb250ZXh0LCBUcmFja0Jh
c2U6OlRleHRUcmFjaykKKyAgICAsIG1fbWVkaWFFbGVtZW50KDApCiAgICAgLCBtX2xhYmVsKGxh
YmVsKQogICAgICwgbV9sYW5ndWFnZShsYW5ndWFnZSkKICAgICAsIG1fbW9kZShUZXh0VHJhY2s6
OkhJRERFTikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dFRyYWNrLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJhY2suaAkocmV2aXNpb24gMTAyMDE2KQor
KysgU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJhY2suaAkod29ya2luZyBjb3B5KQpAQCAtMzYs
NiArMzYsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEhUTUxNZWRpYUVsZW1l
bnQ7CiBjbGFzcyBUZXh0VHJhY2s7CiBjbGFzcyBUZXh0VHJhY2tDdWU7CiBjbGFzcyBUZXh0VHJh
Y2tDdWVMaXN0OwpAQCAtNTgsNiArNTksOSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgVGV4dFRyYWNrKGNvbnRleHQsIGNsaWVudCwga2luZCwgbGFiZWwsIGxhbmd1YWdl
LCBBZGRUcmFjaykpOwogICAgIH0KICAgICB2aXJ0dWFsIH5UZXh0VHJhY2soKTsKKyAgICAKKyAg
ICB2b2lkIHNldE1lZGlhRWxlbWVudChIVE1MTWVkaWFFbGVtZW50KiBlbGVtZW50KSB7IG1fbWVk
aWFFbGVtZW50ID0gZWxlbWVudDsgfQorICAgIEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVu
dCgpIHsgcmV0dXJuIG1fbWVkaWFFbGVtZW50OyB9CiAKICAgICBTdHJpbmcga2luZCgpIGNvbnN0
IHsgcmV0dXJuIG1fa2luZDsgfQogICAgIHZvaWQgc2V0S2luZChjb25zdCBTdHJpbmcmKTsKQEAg
LTEwNCw2ICsxMDgsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgUmVmUHRyPFRleHRUcmFja0N1ZUxpc3Q+
IG1fY3VlczsKIAogcHJpdmF0ZToKKyAgICBIVE1MTWVkaWFFbGVtZW50KiBtX21lZGlhRWxlbWVu
dDsKICAgICBTdHJpbmcgbV9raW5kOwogICAgIFN0cmluZyBtX2xhYmVsOwogICAgIFN0cmluZyBt
X2xhbmd1YWdlOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJhY2suaWRsCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dFRyYWNrLmlkbAkocmV2aXNpb24gMTAy
MDE2KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJhY2suaWRsCSh3b3JraW5nIGNvcHkp
CkBAIC0yOCw3ICsyOCw4IEBAIG1vZHVsZSBodG1sIHsKICAgICBpbnRlcmZhY2UgWwogICAgICAg
ICBDb25kaXRpb25hbD1WSURFT19UUkFDSywKICAgICAgICAgRW5hYmxlZEF0UnVudGltZT13ZWJr
aXRWaWRlb1RyYWNrLAotICAgICAgICBFdmVudFRhcmdldAorICAgICAgICBFdmVudFRhcmdldCwK
KyAgICAgICAgQ3VzdG9tSXNSZWFjaGFibGUKICAgICBdIFRleHRUcmFjayB7CiAgICAgICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcga2luZDsKICAgICAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIERPTVN0cmluZyBsYWJlbDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dFRyYWNr
Q3VlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL1RleHRUcmFja0N1ZS5p
ZGwJKHJldmlzaW9uIDEwMjAxNikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dFRyYWNrQ3Vl
LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsOCBAQCBtb2R1bGUgaHRtbCB7CiAgICAg
ICAgIEdlbmVyYXRlTmF0aXZlQ29udmVydGVyLAogICAgICAgICBDb25zdHJ1Y3RvcihpbiBET01T
dHJpbmcgaWQsIGluIGRvdWJsZSBzdGFydFRpbWUsIGluIGRvdWJsZSBlbmRUaW1lLCBpbiBET01T
dHJpbmcgdGV4dCwgaW4gW09wdGlvbmFsPUNhbGxXaXRoRGVmYXVsdFZhbHVlXSBET01TdHJpbmcg
c2V0dGluZ3MsIGluIFtPcHRpb25hbD1DYWxsV2l0aERlZmF1bHRWYWx1ZV0gYm9vbGVhbiBwYXVz
ZU9uRXhpdCksCiAgICAgICAgIENhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsCi0gICAg
ICAgIEV2ZW50VGFyZ2V0CisgICAgICAgIEV2ZW50VGFyZ2V0LAorICAgICAgICBDdXN0b21Jc1Jl
YWNoYWJsZQogICAgIF0gVGV4dFRyYWNrQ3VlIHsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRl
IFRleHRUcmFjayB0cmFjazsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBp
ZDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tMaXN0LmNwcAko
cmV2aXNpb24gMTAyMDE2KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tM
aXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzQsMjQgKzc0LDI4IEBAIFRleHRUcmFjayogVGV4
dFRyYWNrTGlzdDo6aXRlbSh1bnNpZ25lZCAKICAgICByZXR1cm4gMDsKIH0KIAotdm9pZCBUZXh0
VHJhY2tMaXN0OjphcHBlbmQoUGFzc1JlZlB0cjxUZXh0VHJhY2s+IHRyYWNrKQordm9pZCBUZXh0
VHJhY2tMaXN0OjphcHBlbmQoUGFzc1JlZlB0cjxUZXh0VHJhY2s+IHBycFRyYWNrKQogewotICAg
IFJlZlB0cjxUZXh0VHJhY2s+IHRyYWNrUmVmID0gdHJhY2s7CisgICAgUmVmUHRyPFRleHRUcmFj
az4gdHJhY2sgPSBwcnBUcmFjazsKICAgICAKLSAgICBpZiAodHJhY2tSZWYtPnRyYWNrVHlwZSgp
ID09IFRleHRUcmFjazo6QWRkVHJhY2spCi0gICAgICAgIG1fYWRkVHJhY2tUcmFja3MuYXBwZW5k
KHRyYWNrUmVmKTsKLSAgICBlbHNlIGlmICh0cmFja1JlZi0+dHJhY2tUeXBlKCkgPT0gVGV4dFRy
YWNrOjpUcmFja0VsZW1lbnQpIHsKKyAgICBpZiAodHJhY2stPnRyYWNrVHlwZSgpID09IFRleHRU
cmFjazo6QWRkVHJhY2spCisgICAgICAgIG1fYWRkVHJhY2tUcmFja3MuYXBwZW5kKHRyYWNrKTsK
KyAgICBlbHNlIGlmICh0cmFjay0+dHJhY2tUeXBlKCkgPT0gVGV4dFRyYWNrOjpUcmFja0VsZW1l
bnQpIHsKICAgICAgICAgLy8gSW5zZXJ0IHRyYWNrcyBhZGRlZCBmb3IgPHRyYWNrPiBlbGVtZW50
IGluIHRyZWUgb3JkZXIuCi0gICAgICAgIHNpemVfdCBpbmRleCA9IHN0YXRpY19jYXN0PExvYWRh
YmxlVGV4dFRyYWNrKj4odHJhY2tSZWYuZ2V0KCkpLT50cmFja0VsZW1lbnRJbmRleCgpOwotICAg
ICAgICBtX2VsZW1lbnRUcmFja3MuaW5zZXJ0KGluZGV4LCB0cmFja1JlZik7CisgICAgICAgIHNp
emVfdCBpbmRleCA9IHN0YXRpY19jYXN0PExvYWRhYmxlVGV4dFRyYWNrKj4odHJhY2suZ2V0KCkp
LT50cmFja0VsZW1lbnRJbmRleCgpOworICAgICAgICBtX2VsZW1lbnRUcmFja3MuaW5zZXJ0KGlu
ZGV4LCB0cmFjayk7CiAgICAgfSBlbHNlCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
Ci0gICAgc2NoZWR1bGVBZGRUcmFja0V2ZW50KHRyYWNrUmVmKTsKKyAgICBBU1NFUlQoIXRyYWNr
LT5tZWRpYUVsZW1lbnQoKSB8fCB0cmFjay0+bWVkaWFFbGVtZW50KCkgPT0gb3duZXIoKSk7Cisg
ICAgdHJhY2stPnNldE1lZGlhRWxlbWVudChvd25lcigpKTsKKworICAgIHNjaGVkdWxlQWRkVHJh
Y2tFdmVudCh0cmFjayk7CiB9CiAKLXZvaWQgVGV4dFRyYWNrTGlzdDo6cmVtb3ZlKFBhc3NSZWZQ
dHI8VGV4dFRyYWNrPiB0cmFjaykKK3ZvaWQgVGV4dFRyYWNrTGlzdDo6cmVtb3ZlKFBhc3NSZWZQ
dHI8VGV4dFRyYWNrPiBwcnBUcmFjaykKIHsKKyAgICBSZWZQdHI8VGV4dFRyYWNrPiB0cmFjayA9
IHBycFRyYWNrOwogICAgIFZlY3RvcjxSZWZQdHI8VGV4dFRyYWNrPiA+KiB0cmFja3MgPSAwOwog
CiAgICAgaWYgKHRyYWNrLT50cmFja1R5cGUoKSA9PSBUZXh0VHJhY2s6OlRyYWNrRWxlbWVudCkK
QEAgLTEwNCw4ICsxMDgsMTEgQEAgdm9pZCBUZXh0VHJhY2tMaXN0OjpyZW1vdmUoUGFzc1JlZlB0
cjxUZQogICAgIHNpemVfdCBpbmRleCA9IHRyYWNrcy0+ZmluZCh0cmFjayk7CiAgICAgaWYgKGlu
ZGV4ID09IG5vdEZvdW5kKQogICAgICAgICByZXR1cm47Ci0gICAgdHJhY2tzLT5yZW1vdmUoaW5k
ZXgpOwogCisgICAgQVNTRVJUKCF0cmFjay0+bWVkaWFFbGVtZW50KCkgfHwgdHJhY2stPm1lZGlh
RWxlbWVudCgpID09IG93bmVyKCkpOworICAgIHRyYWNrLT5zZXRNZWRpYUVsZW1lbnQoMCk7CisK
KyAgICB0cmFja3MtPnJlbW92ZShpbmRleCk7CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgVGV4
dFRyYWNrTGlzdDo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMDIw
NDUpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
NiBAQAorMjAxMS0xMi0wNSAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4K
KworICAgICAgICBKU0Mgd3JhcHBlcnMgZm9yIFRleHRUcmFjayBhbmQgVGV4dFRyYWNrQ3VlIHNo
b3VsZCBub3QgYmUgY29sbGVjdGVkIG9uIGV2ZW50IGRpc3BhdGNoIGFuZCB3aGVuIHBhcmVudC9v
d25lciBhcmUgc3RpbGwgcmVhY2hhYmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD03MjE3OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogbWVkaWEvdHJhY2svdGV4dC10cmFjay1jdWUtaXMtcmVhY2hhYmxl
LWV4cGVjdGVkLnR4dAorICAgICAgICAqIG1lZGlhL3RyYWNrL3RleHQtdHJhY2stY3VlLWlzLXJl
YWNoYWJsZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS90cmFjay90ZXh0LXRyYWNrLWlz
LXJlYWNoYWJsZS1leHBlY3RlZC50eHQKKyAgICAgICAgKiBtZWRpYS90cmFjay90ZXh0LXRyYWNr
LWlzLXJlYWNoYWJsZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS90
ZXN0X2V4cGVjdGF0aW9ucy50eHQ6CisKIDIwMTEtMTItMDUgIEp1bGllbiBDaGFmZnJhaXggIDxq
Y2hhZmZyYWl4QHdlYmtpdC5vcmc+CiAKICAgICAgICAgVEQgd2lkdGggaW4gcHJlY2VudGFnZSBk
b2Vzbid0IHdvcmsuCkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS90cmFjay90ZXh0LXRyYWNrLWN1
ZS1pcy1yZWFjaGFibGUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21l
ZGlhL3RyYWNrL3RleHQtdHJhY2stY3VlLWlzLXJlYWNoYWJsZS1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9tZWRpYS90cmFjay90ZXh0LXRyYWNrLWN1ZS1pcy1yZWFj
aGFibGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE2IEBACitFbnN1cmUg
dGhhdCBhIFRleHRUcmFja0N1ZSB3b24ndCBiZSBjb2xsZWN0ZWQgaWYgaXQgaGFzIGEgY3VzdG9t
IHByb3BlcnR5LgorCisqKiBWYWxpZGF0ZS4KK0VYUEVDVEVEICh2aWRlby50ZXh0VHJhY2tzWzBd
LmN1ZXMubGVuZ3RoID09ICc0JykgT0sKK0VYUEVDVEVEICh2aWRlby50ZXh0VHJhY2tzWzBdLmN1
ZXNbMV0uc3RhcnRUaW1lID09ICczMScpIE9LCisKKyoqIEFkZCBhIGN1c3RvbSBwcm9wZXJ0eSB0
byBhIGN1ZS4KK1JVTih2aWRlby50ZXh0VHJhY2tzWzBdLmN1ZXNbMV0ubXlQcm9wZXJ0eSA9ICd0
dW5hIHNhbGFkPycpCitFWFBFQ1RFRCAodmlkZW8udGV4dFRyYWNrc1swXS5jdWVzWzFdLm15UHJv
cGVydHkgPT0gJ3R1bmEgc2FsYWQ/JykgT0sKKworKiogRm9yY2UgZ2FyYmFnZSBjb2xsZWN0aW9u
LgorRVhQRUNURUQgKHZpZGVvLnRleHRUcmFja3NbMF0uY3Vlcy5sZW5ndGggPT0gJzQnKSBPSwor
RVhQRUNURUQgKHZpZGVvLnRleHRUcmFja3NbMF0uY3Vlc1sxXS5teVByb3BlcnR5ID09ICd0dW5h
IHNhbGFkPycpIE9LCisKK0VORCBPRiBURVNUCisKSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3Ry
YWNrL3RleHQtdHJhY2stY3VlLWlzLXJlYWNoYWJsZS5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL21lZGlhL3RyYWNrL3RleHQtdHJhY2stY3VlLWlzLXJlYWNoYWJsZS5odG1sCShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdGV4dC10cmFjay1jdWUtaXMtcmVh
Y2hhYmxlLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDggQEAKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQt
VHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04IiAvPgorCisgICAgICAgIDxz
Y3JpcHQgc3JjPS4uL3ZpZGVvLXRlc3QuanM+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisK
KyAgICAgICAgICAgIGZ1bmN0aW9uIGZvcmNlR0MoKQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIGlmICh3aW5kb3cuR0NDb250cm9sbGVyKQorICAgICAgICAgICAgICAgICAgICByZXR1
cm4gR0NDb250cm9sbGVyLmNvbGxlY3QoKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgICAg
IC8vIEZvcmNlIGdhcmJhZ2UgY29sbGVjdGlvbgorICAgICAgICAgICAgICAgIGZvciAodmFyIG5k
eCA9IDA7IG5keCA8IDk5MDAwOyBuZHgrKykKKyAgICAgICAgICAgICAgICAgICAgdmFyIHN0ciA9
IG5ldyBTdHJpbmcoIjEyMzQiKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rp
b24gdHJhY2tMb2FkZWQoKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGZpbmRNZWRp
YUVsZW1lbnQoKTsKKworICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiKiogVmFsaWRhdGUu
Iik7CisgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby50ZXh0VHJhY2tzWzBdLmN1
ZXMubGVuZ3RoIiwgNCk7CisgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby50ZXh0
VHJhY2tzWzBdLmN1ZXNbMV0uc3RhcnRUaW1lIiwgMzEpOworCisgICAgICAgICAgICAgICAgY29u
c29sZVdyaXRlKCI8YnI+KiogQWRkIGEgY3VzdG9tIHByb3BlcnR5IHRvIGEgY3VlLiIpOworICAg
ICAgICAgICAgICAgIHJ1bigidmlkZW8udGV4dFRyYWNrc1swXS5jdWVzWzFdLm15UHJvcGVydHkg
PSAndHVuYSBzYWxhZD8nIik7CisgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby50
ZXh0VHJhY2tzWzBdLmN1ZXNbMV0ubXlQcm9wZXJ0eSIsICJ0dW5hIHNhbGFkPyIpOworCisgICAg
ICAgICAgICAgICAgY29uc29sZVdyaXRlKCI8YnI+KiogRm9yY2UgZ2FyYmFnZSBjb2xsZWN0aW9u
LiIpOworICAgICAgICAgICAgICAgIGZvcmNlR0MoKTsKKyAgICAgICAgICAgICAgICB0ZXN0RXhw
ZWN0ZWQoInZpZGVvLnRleHRUcmFja3NbMF0uY3Vlcy5sZW5ndGgiLCA0KTsKKyAgICAgICAgICAg
ICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLnRleHRUcmFja3NbMF0uY3Vlc1sxXS5teVByb3BlcnR5
IiwgInR1bmEgc2FsYWQ/Iik7CisKKyAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIiIpOwor
ICAgICAgICAgICAgICAgIGVuZFRlc3QoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICA8L3Nj
cmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHk+CisgICAgICAgIDxwPkVuc3VyZSB0aGF0IGEg
VGV4dFRyYWNrQ3VlIHdvbid0IGJlIGNvbGxlY3RlZCBpZiBpdCBoYXMgYSBjdXN0b20gcHJvcGVy
dHkuPC9wPgorICAgICAgICA8dmlkZW8+CisgICAgICAgICAgICA8dHJhY2sgc3JjPSJjYXB0aW9u
cy13ZWJ2dHQvdGMwMTMtc2V0dGluZ3MudnR0IiBraW5kPSJjYXB0aW9ucyIgb25sb2FkPSJ0cmFj
a0xvYWRlZCgpIiBkZWZhdWx0PgorICAgICAgICA8L3ZpZGVvPgorICAgIDwvYm9keT4KKzwvaHRt
bD4KSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3RyYWNrL3RleHQtdHJhY2staXMtcmVhY2hhYmxl
LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS90cmFjay90ZXh0
LXRyYWNrLWlzLXJlYWNoYWJsZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9tZWRpYS90cmFjay90ZXh0LXRyYWNrLWlzLXJlYWNoYWJsZS1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsMTYgQEAKK0Vuc3VyZSB0aGF0IGEgVGV4dFRyYWNrIHdvbid0
IGJlIGNvbGxlY3RlZCBpZiBpdCBoYXMgYSBjdXN0b20gcHJvcGVydHkuCisKKyoqIFZhbGlkYXRl
LgorRVhQRUNURUQgKHZpZGVvLnRleHRUcmFja3MubGVuZ3RoID09ICcxJykgT0sKK0VYUEVDVEVE
ICh2aWRlby50ZXh0VHJhY2tzWzBdLmtpbmQgPT0gJ2NhcHRpb25zJykgT0sKKworKiogQWRkIGEg
Y3VzdG9tIHByb3BlcnR5IHRvIHRoZSB0cmFjay4KK1JVTih2aWRlby50ZXh0VHJhY2tzWzBdLm15
UHJvcGVydHkgPSAnZWdnIHNhbGFkIT8nKQorRVhQRUNURUQgKHZpZGVvLnRleHRUcmFja3NbMF0u
bXlQcm9wZXJ0eSA9PSAnZWdnIHNhbGFkIT8nKSBPSworCisqKiBGb3JjZSBnYXJiYWdlIGNvbGxl
Y3Rpb24uCitFWFBFQ1RFRCAodmlkZW8udGV4dFRyYWNrc1swXS5jdWVzLmxlbmd0aCA9PSAnNCcp
IE9LCitFWFBFQ1RFRCAodmlkZW8udGV4dFRyYWNrc1swXS5teVByb3BlcnR5ID09ICdlZ2cgc2Fs
YWQhPycpIE9LCisKK0VORCBPRiBURVNUCisKSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3RyYWNr
L3RleHQtdHJhY2staXMtcmVhY2hhYmxlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
bWVkaWEvdHJhY2svdGV4dC10cmFjay1pcy1yZWFjaGFibGUuaHRtbAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL21lZGlhL3RyYWNrL3RleHQtdHJhY2staXMtcmVhY2hhYmxlLmh0bWwJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsNDkgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAg
PGhlYWQ+CisgICAgICAgIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0i
dGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04IiAvPgorCisgICAgICAgIDxzY3JpcHQgc3JjPS4uL21l
ZGlhLWZpbGUuanM+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPS4uL3ZpZGVvLXRlc3Qu
anM+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIGZv
cmNlR0MoKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmICh3aW5kb3cuR0NDb250
cm9sbGVyKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gR0NDb250cm9sbGVyLmNvbGxlY3Qo
KTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIC8vIEZvcmNlIGdhcmJhZ2UgY29sbGVj
dGlvbgorICAgICAgICAgICAgICAgIGZvciAodmFyIG5keCA9IDA7IG5keCA8IDk5MDAwOyBuZHgr
KykKKyAgICAgICAgICAgICAgICAgICAgdmFyIHN0ciA9IG5ldyBTdHJpbmcoIjEyMzQiKTsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gdHJhY2tMb2FkZWQoKQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIGZpbmRNZWRpYUVsZW1lbnQoKTsKKworICAgICAgICAg
ICAgICAgIGNvbnNvbGVXcml0ZSgiKiogVmFsaWRhdGUuIik7CisgICAgICAgICAgICAgICAgdGVz
dEV4cGVjdGVkKCJ2aWRlby50ZXh0VHJhY2tzLmxlbmd0aCIsIDEpOworICAgICAgICAgICAgICAg
IHRlc3RFeHBlY3RlZCgidmlkZW8udGV4dFRyYWNrc1swXS5raW5kIiwgImNhcHRpb25zIik7CisK
KyAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIjxicj4qKiBBZGQgYSBjdXN0b20gcHJvcGVy
dHkgdG8gdGhlIHRyYWNrLiIpOworICAgICAgICAgICAgICAgIHJ1bigidmlkZW8udGV4dFRyYWNr
c1swXS5teVByb3BlcnR5ID0gJ2VnZyBzYWxhZCE/JyIpOworICAgICAgICAgICAgICAgIHRlc3RF
eHBlY3RlZCgidmlkZW8udGV4dFRyYWNrc1swXS5teVByb3BlcnR5IiwgImVnZyBzYWxhZCE/Iik7
CisKKyAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIjxicj4qKiBGb3JjZSBnYXJiYWdlIGNv
bGxlY3Rpb24uIik7CisgICAgICAgICAgICAgICAgZm9yY2VHQygpOworICAgICAgICAgICAgICAg
IHRlc3RFeHBlY3RlZCgidmlkZW8udGV4dFRyYWNrc1swXS5jdWVzLmxlbmd0aCIsIDQpOworICAg
ICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8udGV4dFRyYWNrc1swXS5teVByb3BlcnR5
IiwgImVnZyBzYWxhZCE/Iik7CisKKyAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIiIpOwor
ICAgICAgICAgICAgICAgIGVuZFRlc3QoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICA8L3Nj
cmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHk+CisgICAgICAgIDxwPkVuc3VyZSB0aGF0IGEg
VGV4dFRyYWNrIHdvbid0IGJlIGNvbGxlY3RlZCBpZiBpdCBoYXMgYSBjdXN0b20gcHJvcGVydHku
PC9wPgorICAgICAgICA8dmlkZW8+CisgICAgICAgICAgICA8dHJhY2sgc3JjPSJjYXB0aW9ucy13
ZWJ2dHQvdGMwMTMtc2V0dGluZ3MudnR0IiBraW5kPSJjYXB0aW9ucyIgb25sb2FkPSJ0cmFja0xv
YWRlZCgpIiBkZWZhdWx0PgorICAgICAgICA8L3ZpZGVvPgorICAgIDwvYm9keT4KKzwvaHRtbD4K
SW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVj
dGF0aW9ucy50eHQJKHJldmlzaW9uIDEwMjAxNikKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL2No
cm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMzcwMyw3ICsz
NzAzLDkgQEAgQlVHQ1IzMTAzNyA6IGVkaXRpbmcvcGFzdGVib2FyZC9jbGlwYm9hcgogQlVHX1RP
TlkgTUFDIDogY3NzMy9mbGV4Ym94L3JlcGFpbnQuaHRtbCA9IFBBU1MgRkFJTAogQlVHX1RPTlkg
TUFDIDogY3NzMy9mbGV4Ym94L3JlcGFpbnQtcnRsLWNvbHVtbi5odG1sID0gUEFTUyBGQUlMCiAK
LUJVR1dLNzIxNDkgOiBtZWRpYS90cmFjay90cmFja2xpc3QtaXMtcmVhY2hhYmxlLmh0bWwgPSBU
RVhUCitCVUdXSzczODY1IDogbWVkaWEvdHJhY2svdHJhY2tsaXN0LWlzLXJlYWNoYWJsZS5odG1s
ID0gVEVYVAorQlVHV0s3Mzg2NSA6IG1lZGlhL3RyYWNrL3RleHQtdHJhY2stY3VlLWlzLXJlYWNo
YWJsZS5odG1sID0gVEVYVAorQlVHV0s3Mzg2NSA6IG1lZGlhL3RyYWNrL3RleHQtdHJhY2staXMt
cmVhY2hhYmxlLmh0bWwgPSBURVhUCiAKIEJVR1dLNzIxMzMgU0tJUCBNQUMgOiBodHRwL3Rlc3Rz
L2luc3BlY3Rvci1lbmFibGVkL2RlZGljYXRlZC13b3JrZXJzLWxpc3QuaHRtbCA9IFBBU1MgVElN
RU9VVAogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>117985</attachid>
            <date>2011-12-05 20:52:46 -0800</date>
            <delta_ts>2011-12-06 20:36:02 -0800</delta_ts>
            <desc>Updated patch</desc>
            <filename>patch_track_reachable_5.txt</filename>
            <type>text/plain</type>
            <size>26717</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMjA3MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM5IEBACisyMDExLTEyLTA1ICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIEpTQyB3cmFwcGVycyBm
b3IgVGV4dFRyYWNrIGFuZCBUZXh0VHJhY2tDdWUgc2hvdWxkIG5vdCBiZSBjb2xsZWN0ZWQgb24g
ZXZlbnQgZGlzcGF0Y2ggYW5kIHdoZW4gcGFyZW50L293bmVyIGFyZSBzdGlsbCByZWFjaGFibGUK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcyMTc5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdHM6IG1l
ZGlhL3RyYWNrL3RleHQtdHJhY2stY3VlLWlzLXJlYWNoYWJsZS5odG1sCisgICAgICAgICAgICAg
ICBtZWRpYS90cmFjay90ZXh0LXRyYWNrLWlzLXJlYWNoYWJsZS5odG1sCisKKyAgICAgICAgKiBH
TlVtYWtlZmlsZS5saXN0LmFtOiBBZGQgSlNUZXh0VHJhY2tDdWVDdXN0b20uY3BwIGFuZCBKU1Rl
eHRUcmFja0N1c3RvbS5jcHAuCisgICAgICAgICogVGFyZ2V0LnByaTogRGl0dG8uCisgICAgICAg
ICogV2ViQ29yZS5neXBpOiBEaXR0by4KKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6IERpdHRvCisgICAgICAgICogYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbElu
T25lLmNwcDogRGl0dG8uCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1RleHRUcmFja0N1ZUN1
c3RvbS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SlNUZXh0VHJhY2tDdWVPd25lcjo6
aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMpOgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNU
ZXh0VHJhY2tDdXN0b20uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkpTVGV4dFRyYWNr
T3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKToKKworICAgICAgICAqIGh0bWwvVGV4
dFRyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFjazo6VGV4dFRyYWNrKTogSW5p
dGlhbGl6ZSBtX21lZGlhRWxlbWVudC4KKyAgICAgICAgKiBodG1sL1RleHRUcmFjay5oOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjpzZXRNZWRpYUVsZW1lbnQpOiBOZXcuCisgICAgICAg
IChXZWJDb3JlOjpUZXh0VHJhY2s6Om1lZGlhRWxlbWVudCk6IERpdHRvLgorCisgICAgICAgICog
aHRtbC9UZXh0VHJhY2suaWRsOiBBZGQgQ3VzdG9tSXNSZWFjaGFibGUuCisKKyAgICAgICAgKiBo
dG1sL1RleHRUcmFja0N1ZS5pZGw6IERpdHRvLgorCisgICAgICAgICogaHRtbC90cmFjay9UZXh0
VHJhY2tMaXN0LmNwcDoKKyAgICAgICAgKFRleHRUcmFja0xpc3Q6OmFwcGVuZCk6IFNldCB0cmFj
aydzIG1lZGlhIGVsZW1lbnQuCisgICAgICAgIChUZXh0VHJhY2tMaXN0OjpyZW1vdmUpOiBDbGVh
ciB0cmFjaydzIG1lZGlhIGVsZW1lbnQuCisKIDIwMTEtMTItMDUgIEJlbmphbWluIFBvdWxhaW4g
IDxiZW5qYW1pbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlbW92ZSBtZXRob2RzIGRlY2xhcmVk
IGJ1dCBuZXZlciBpbXBsZW1lbnRlZCB3aXRoIEdPT0dMRVVSTApJbmRleDogU291cmNlL1dlYkNv
cmUvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9HTlVt
YWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiAxMDE3ODgpCisrKyBTb3VyY2UvV2ViQ29yZS9HTlVt
YWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC04NTEsNiArODUxLDggQEAgd2ViY29y
ZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N0eWxlU2hlZXRD
dXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N0eWxlU2hlZXRMaXN0
Q3VzdG9tLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUZXh0Q3VzdG9tLmNw
cCBcCisJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUZXh0VHJhY2tDdWVDdXN0b20uY3Bw
IFwKKwlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RleHRUcmFja0N1c3RvbS5jcHAgXAog
CVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVGV4dFRyYWNrTGlzdEN1c3RvbS5jcHAgXAog
CVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVG91Y2hDdXN0b20uY3BwIFwKIAlTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RvdWNoTGlzdEN1c3RvbS5jcHAgXApJbmRleDogU291cmNl
L1dlYkNvcmUvVGFyZ2V0LnByaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9UYXJnZXQu
cHJpCShyZXZpc2lvbiAxMDE3ODgpCisrKyBTb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNTY2LDkgKzM1NjYsMTEgQEAgY29udGFpbnMoREVGSU5FUywgRU5BQkxF
X1ZJREVPX1RSQUNLPTEpIAogICAgICAgICAgICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4VHJhY2tF
dmVudEN1c3RvbS5jcHAKICAgICB9IGVsc2UgewogICAgICAgICBTT1VSQ0VTICs9IFwKKyAgICAg
ICAgICAgIGJpbmRpbmdzL2pzL0pTVGV4dFRyYWNrQ3VlQ3VzdG9tLmNwcCBcCisgICAgICAgICAg
ICBiaW5kaW5ncy9qcy9KU1RleHRUcmFja0N1c3RvbS5jcHAgXAogICAgICAgICAgICAgYmluZGlu
Z3MvanMvSlNUcmFja0N1c3RvbS5jcHAgXAogICAgICAgICAgICAgYmluZGluZ3MvanMvSlNUcmFj
a0N1c3RvbS5oIFwKLSAgICAgICAgICAgIGJpbmRpbmdzL2pzL0pTVHJhY2tFdmVudEN1c3RvbS5j
cHAKKyAgICAgICAgICAgIGJpbmRpbmdzL2pzL0pTVHJhY2tFdmVudEN1c3RvbS5jcHAgXAogICAg
ICAgICAgICAgYmluZGluZ3MvanMvSlNUZXh0VHJhY2tMaXN0Q3VzdG9tLmNwcAogICAgIH0KIH0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJldmlzaW9uIDEwMTc4OCkKKysrIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAtMTk1MSw2ICsxOTUxLDggQEAKICAgICAg
ICAgICAgICdiaW5kaW5ncy9qcy9KU1N0eWxlU2hlZXRDdXN0b20uY3BwJywKICAgICAgICAgICAg
ICdiaW5kaW5ncy9qcy9KU1N0eWxlU2hlZXRMaXN0Q3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAn
YmluZGluZ3MvanMvSlNUZXh0Q3VzdG9tLmNwcCcsCisgICAgICAgICAgICAnYmluZGluZ3MvanMv
SlNUZXh0VHJhY2tDdWVDdXN0b20uY3BwJywKKyAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU1Rl
eHRUcmFja0N1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTVGV4dFRyYWNr
TGlzdEN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTVG91Y2hDdXN0b20u
Y3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU1RvdWNoTGlzdEN1c3RvbS5jcHAnLApJ
bmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkocmV2aXNpb24gMTAxNzg4KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMTYsNiArMTE2LDggQEAKIAkJ
MDdCNUEyREMxNDY0MzIwQTAwQTgxRUNFIC8qIEpTVGV4dFRyYWNrTGlzdC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdCNUEyREExNDY0MzIwQTAwQTgx
RUNFIC8qIEpTVGV4dFRyYWNrTGlzdC5oICovOyB9OwogCQkwN0I1QTMwRDE0Njg3RDcxMDBBODFF
Q0UgLyogSlNUZXh0VHJhY2tMaXN0Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3QjVBMzBDMTQ2ODdENzEwMEE4MUVDRSAvKiBKU1RleHRU
cmFja0xpc3RDdXN0b20uY3BwICovOyB9OwogCQkwN0JERDZFQzE0NjlCNEMyMDA5QzlGODUgLyog
SlNUcmFja0V2ZW50Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDA3QjVBMzBBMTQ2ODdCODQwMEE4MUVDRSAvKiBKU1RyYWNrRXZlbnRDdXN0
b20uY3BwICovOyB9OworCQkwN0UxMTZCMTE0ODlDOUExMDBFQzVBQ0UgLyogSlNUZXh0VHJhY2tD
dXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MDdFMTE2QjAxNDg5QzlBMTAwRUM1QUNFIC8qIEpTVGV4dFRyYWNrQ3VzdG9tLmNwcCAqLzsgfTsK
KwkJMDdFMTE3MDcxNDg5RUJFQjAwRUM1QUNFIC8qIEpTVGV4dFRyYWNrQ3VlQ3VzdG9tLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3RTExNzA2MTQ4
OUVCRUIwMEVDNUFDRSAvKiBKU1RleHRUcmFja0N1ZUN1c3RvbS5jcHAgKi87IH07CiAJCTA4MDZF
NTdBMTI4OTMwNDUwMDdDRUQzMiAvKiBTVkdNYXRyaXguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4MDZFNTc5MTI4OTMwNDUwMDdDRUQzMiAvKiBTVkdN
YXRyaXguaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQkwODBFNDkyNjEyNTVGM0JEMDBFRkNBMjcgLyogU1ZHVGV4dExheW91dEVuZ2luZUJhc2VsaW5l
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODBFNDky
MjEyNTVGM0JEMDBFRkNBMjcgLyogU1ZHVGV4dExheW91dEVuZ2luZUJhc2VsaW5lLmggKi87IH07
CiAJCTA4MEU0OTI4MTI1NUYzQkQwMEVGQ0EyNyAvKiBTVkdUZXh0TGF5b3V0RW5naW5lU3BhY2lu
Zy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDgwRTQ5
MjQxMjU1RjNCRDAwRUZDQTI3IC8qIFNWR1RleHRMYXlvdXRFbmdpbmVTcGFjaW5nLmggKi87IH07
CkBAIC03MTYwLDYgKzcxNjIsOCBAQAogCQkwN0I1QTMwNjE0Njg1MzcxMDBBODFFQ0UgLyogVGV4
dFRyYWNrTGlzdC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gVGV4dFRyYWNrTGlzdC5pZGw7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3QjVBMzBBMTQ2ODdCODQwMEE4MUVDRSAv
KiBKU1RyYWNrRXZlbnRDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNUcmFja0V2ZW50Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMDdCNUEzMEMxNDY4N0Q3MTAwQTgxRUNFIC8qIEpTVGV4dFRyYWNrTGlzdEN1c3RvbS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1RleHRUcmFja0xpc3RDdXN0
b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwN0UxMTZCMDE0ODlDOUExMDBF
QzVBQ0UgLyogSlNUZXh0VHJhY2tDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNUZXh0VHJhY2tDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkwN0UxMTcwNjE0ODlFQkVCMDBFQzVBQ0UgLyogSlNUZXh0VHJhY2tDdWVDdXN0b20u
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNUZXh0VHJhY2tDdWVD
dXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwODA2RTU3OTEyODkzMDQ1
MDA3Q0VEMzIgLyogU1ZHTWF0cml4LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFNWR01hdHJpeC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwODBFNDkyMTEyNTVG
M0JEMDBFRkNBMjcgLyogU1ZHVGV4dExheW91dEVuZ2luZUJhc2VsaW5lLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNWR1RleHRMYXlvdXRFbmdpbmVCYXNlbGluZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4MEU0OTIyMTI1NUYzQkQwMEVGQ0Ey
NyAvKiBTVkdUZXh0TGF5b3V0RW5naW5lQmFzZWxpbmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU1ZHVGV4dExheW91dEVuZ2luZUJhc2VsaW5lLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0xOTc1Niw2ICsxOTc2MCw4IEBACiAJCQkJMDhFNEZFNDUwRTJCRDQx
NDAwRjRDQUUwIC8qIEpTU1ZHTGVuZ3RoQ3VzdG9tLmNwcCAqLywKIAkJCQlCMkM5NkQ4QzBCM0FG
MkI3MDA1RTgwRUMgLyogSlNTVkdQYXRoU2VnQ3VzdG9tLmNwcCAqLywKIAkJCQkxQTJDNDBBQTBE
RUI1NUFBMDA1QUYxOUUgLyogSlNUZXh0Q3VzdG9tLmNwcCAqLywKKwkJCQkwN0UxMTZCMDE0ODlD
OUExMDBFQzVBQ0UgLyogSlNUZXh0VHJhY2tDdXN0b20uY3BwICovLAorCQkJCTA3RTExNzA2MTQ4
OUVCRUIwMEVDNUFDRSAvKiBKU1RleHRUcmFja0N1ZUN1c3RvbS5jcHAgKi8sCiAJCQkJMDdCNUEz
MEMxNDY4N0Q3MTAwQTgxRUNFIC8qIEpTVGV4dFRyYWNrTGlzdEN1c3RvbS5jcHAgKi8sCiAJCQkJ
MDcwMzM0RTgxNDVBMUYzNTAwOEQ4RDQ1IC8qIEpTVHJhY2tDdXN0b20uY3BwICovLAogCQkJCTA3
ODQ2Mzg0MTQ1QjFCOEUwMEE1OERGMSAvKiBKU1RyYWNrQ3VzdG9tLmggKi8sCkBAIC0yNzYxOCw2
ICsyNzYyNCw4IEBACiAJCQkJMzEyOENBNjgxNDczMzE1MjAwNzRDNzJBIC8qIE5vdGlmaWNhdGlv
bkNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTAzOEJGMkExNDc1MEYxOTAwOTVF
MEQxIC8qIEZpbHRlck9wZXJhdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNkUzRkFEMzgx
NDczM0Y0MDAwRTQyMzA2IC8qIEpTV2ViR0xDb21wcmVzc2VkVGV4dHVyZXMuY3BwIGluIFNvdXJj
ZXMgKi8sCisgCQkJCTA3RTExNkIxMTQ4OUM5QTEwMEVDNUFDRSAvKiBKU1RleHRUcmFja0N1c3Rv
bS5jcHAgaW4gU291cmNlcyAqLywKKyAJCQkJMDdFMTE3MDcxNDg5RUJFQjAwRUM1QUNFIC8qIEpT
VGV4dFRyYWNrQ3VlQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTZFM0ZBRThFMTQ3MzNG
REIwMEU0MjMwNiAvKiBXZWJHTENvbXByZXNzZWRUZXh0dXJlcy5jcHAgaW4gU291cmNlcyAqLywK
IAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNw
cAkocmV2aXNpb24gMTAxNzg4KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5k
aW5nc0FsbEluT25lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM2LDYgKzEzNiw4IEBACiAjaW5j
bHVkZSAiSlNTdHlsZVNoZWV0Q3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU1N0eWxlU2hlZXRMaXN0
Q3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU1RleHRDdXN0b20uY3BwIgorI2luY2x1ZGUgIkpTVGV4
dFRyYWNrQ3VlQ3VzdG9tLmNwcCIKKyNpbmNsdWRlICJKU1RleHRUcmFja0N1c3RvbS5jcHAiCiAj
aW5jbHVkZSAiSlNUZXh0VHJhY2tMaXN0Q3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU1RvdWNoQ3Vz
dG9tLmNwcCIKICNpbmNsdWRlICJKU1RvdWNoTGlzdEN1c3RvbS5jcHAiCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RleHRUcmFja0N1ZUN1c3RvbS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUZXh0VHJhY2tDdWVDdXN0b20uY3BwCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUZXh0VHJhY2tDdWVD
dXN0b20uY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYyIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorI2luY2x1ZGUgIkpTVGV4
dFRyYWNrQ3VlLmgiCisKKyNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCisjaW5jbHVkZSAi
VGV4dFRyYWNrLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworYm9vbCBKU1RleHRUcmFja0N1ZU93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290
cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCosIFNsb3RWaXNpdG9yJiB2
aXNpdG9yKQoreworICAgIEpTVGV4dFRyYWNrQ3VlKiBqc1RleHRUcmFja0N1ZSA9IHN0YXRpY19j
YXN0PEpTVGV4dFRyYWNrQ3VlKj4oaGFuZGxlLmdldCgpLmFzQ2VsbCgpKTsKKyAgICBUZXh0VHJh
Y2tDdWUqIHRleHRUcmFja0N1ZSA9IHN0YXRpY19jYXN0PFRleHRUcmFja0N1ZSo+KGpzVGV4dFRy
YWNrQ3VlLT5pbXBsKCkpOworCisgICAgLy8gSWYgdGhlIGN1ZSBpcyBmaXJpbmcgZXZlbnQgbGlz
dGVuZXJzLCBpdHMgd3JhcHBlciBpcyByZWFjaGFibGUgYmVjYXVzZQorICAgIC8vIHRoZSB3cmFw
cGVyIGlzIHJlc3BvbnNpYmxlIGZvciBtYXJraW5nIHRob3NlIGV2ZW50IGxpc3RlbmVycy4KKyAg
ICBpZiAodGV4dFRyYWNrQ3VlLT5pc0ZpcmluZ0V2ZW50TGlzdGVuZXJzKCkpCisgICAgICAgIHJl
dHVybiB0cnVlOworCisgICAgLy8gSWYgdGhlIGN1ZSBoYXMgbm8gZXZlbnQgbGlzdGVuZXJzIGFu
ZCBoYXMgbm8gY3VzdG9tIHByb3BlcnRpZXMsIGl0IGlzIG5vdCByZWFjaGFibGUuCisgICAgaWYg
KCF0ZXh0VHJhY2tDdWUtPmhhc0V2ZW50TGlzdGVuZXJzKCkgJiYgIWpzVGV4dFRyYWNrQ3VlLT5o
YXNDdXN0b21Qcm9wZXJ0aWVzKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIElm
IHRoZSBjdWUgaXMgbm90IGFzc29jaWF0ZWQgd2l0aCBhIHRyYWNrLCBpdCBpcyBub3QgcmVhY2hh
YmxlLgorICAgIGlmICghdGV4dFRyYWNrQ3VlLT50cmFjaygpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICAvLyBJdCBpcyByZWFjaGFibGUgaWYgdGhlIGN1ZSdzIHRyYWNrJ3MgbWVkaWEg
ZWxlbWVudCBwYXJlbnQgaXMgcmVhY2hhYmxlLgorICAgIHJldHVybiB2aXNpdG9yLmNvbnRhaW5z
T3BhcXVlUm9vdChyb290KHRleHRUcmFja0N1ZS0+dHJhY2soKS0+bWVkaWFFbGVtZW50KCkpKTsK
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTVGV4dFRyYWNrQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RleHRUcmFja0N1c3RvbS5jcHAJKHJldmlzaW9uIDAp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RleHRUcmFja0N1c3RvbS5jcHAJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisjaW5jbHVkZSAiSlNUZXh0VHJhY2suaCIKKwor
I2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIKKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitib29sIEpTVGV4dFRyYWNrT3duZXI6OmlzUmVhY2hhYmxl
RnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiwg
U2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSlNUZXh0VHJhY2sqIGpzVGV4dFRyYWNrID0g
c3RhdGljX2Nhc3Q8SlNUZXh0VHJhY2sqPihoYW5kbGUuZ2V0KCkuYXNDZWxsKCkpOworICAgIFRl
eHRUcmFjayogdGV4dFRyYWNrID0gc3RhdGljX2Nhc3Q8VGV4dFRyYWNrKj4oanNUZXh0VHJhY2st
PmltcGwoKSk7CisKKyAgICAvLyBJZiB0aGUgY3VlIGlzIGZpcmluZyBldmVudCBsaXN0ZW5lcnMs
IGl0cyB3cmFwcGVyIGlzIHJlYWNoYWJsZSBiZWNhdXNlCisgICAgLy8gdGhlIHdyYXBwZXIgaXMg
cmVzcG9uc2libGUgZm9yIG1hcmtpbmcgdGhvc2UgZXZlbnQgbGlzdGVuZXJzLgorICAgIGlmICh0
ZXh0VHJhY2stPmlzRmlyaW5nRXZlbnRMaXN0ZW5lcnMoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7
CisKKyAgICAvLyBJZiB0aGUgY3VlIGhhcyBubyBldmVudCBsaXN0ZW5lcnMgYW5kIGhhcyBubyBj
dXN0b20gcHJvcGVydGllcywgaXQgaXMgbm90IHJlYWNoYWJsZS4KKyAgICBpZiAoIXRleHRUcmFj
ay0+aGFzRXZlbnRMaXN0ZW5lcnMoKSAmJiAhanNUZXh0VHJhY2stPmhhc0N1c3RvbVByb3BlcnRp
ZXMoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gSXQgaXMgcmVhY2hhYmxlIGlm
IHRoZSB0cmFjaydzIG1lZGlhIGVsZW1lbnQgcGFyZW50IGlzIHJlYWNoYWJsZS4KKyAgICByZXR1
cm4gdmlzaXRvci5jb250YWluc09wYXF1ZVJvb3Qocm9vdCh0ZXh0VHJhY2stPm1lZGlhRWxlbWVu
dCgpKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9odG1sL1RleHRUcmFjay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvaHRtbC9UZXh0VHJhY2suY3BwCShyZXZpc2lvbiAxMDE3ODgpCisrKyBTb3VyY2UvV2ViQ29y
ZS9odG1sL1RleHRUcmFjay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgog
ICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC03Myw2ICs3NCw3IEBAIGNvbnN0
IEF0b21pY1N0cmluZyYgVGV4dFRyYWNrOjptZXRhZGF0YUsKIAogVGV4dFRyYWNrOjpUZXh0VHJh
Y2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgVGV4dFRyYWNrQ2xpZW50KiBjbGll
bnQsIGNvbnN0IFN0cmluZyYga2luZCwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3QgU3RyaW5n
JiBsYW5ndWFnZSwgVGV4dFRyYWNrVHlwZSB0eXBlKQogICAgIDogVHJhY2tCYXNlKGNvbnRleHQs
IFRyYWNrQmFzZTo6VGV4dFRyYWNrKQorICAgICwgbV9tZWRpYUVsZW1lbnQoMCkKICAgICAsIG1f
bGFiZWwobGFiZWwpCiAgICAgLCBtX2xhbmd1YWdlKGxhbmd1YWdlKQogICAgICwgbV9tb2RlKFRl
eHRUcmFjazo6SElEREVOKQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJhY2suaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL1RleHRUcmFjay5oCShyZXZpc2lvbiAx
MDE3ODgpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL1RleHRUcmFjay5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zNiw2ICszNiw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgSFRNTE1l
ZGlhRWxlbWVudDsKIGNsYXNzIFRleHRUcmFjazsKIGNsYXNzIFRleHRUcmFja0N1ZTsKIGNsYXNz
IFRleHRUcmFja0N1ZUxpc3Q7CkBAIC01OCw2ICs1OSw5IEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBUZXh0VHJhY2soY29udGV4dCwgY2xpZW50LCBraW5kLCBsYWJlbCwg
bGFuZ3VhZ2UsIEFkZFRyYWNrKSk7CiAgICAgfQogICAgIHZpcnR1YWwgflRleHRUcmFjaygpOwor
ICAgIAorICAgIHZvaWQgc2V0TWVkaWFFbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqIGVsZW1lbnQp
IHsgbV9tZWRpYUVsZW1lbnQgPSBlbGVtZW50OyB9CisgICAgSFRNTE1lZGlhRWxlbWVudCogbWVk
aWFFbGVtZW50KCkgeyByZXR1cm4gbV9tZWRpYUVsZW1lbnQ7IH0KIAogICAgIFN0cmluZyBraW5k
KCkgY29uc3QgeyByZXR1cm4gbV9raW5kOyB9CiAgICAgdm9pZCBzZXRLaW5kKGNvbnN0IFN0cmlu
ZyYpOwpAQCAtMTA0LDYgKzEwOCw3IEBAIHByb3RlY3RlZDoKICAgICBSZWZQdHI8VGV4dFRyYWNr
Q3VlTGlzdD4gbV9jdWVzOwogCiBwcml2YXRlOgorICAgIEhUTUxNZWRpYUVsZW1lbnQqIG1fbWVk
aWFFbGVtZW50OwogICAgIFN0cmluZyBtX2tpbmQ7CiAgICAgU3RyaW5nIG1fbGFiZWw7CiAgICAg
U3RyaW5nIG1fbGFuZ3VhZ2U7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL1RleHRUcmFjay5p
ZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJhY2suaWRsCShyZXZp
c2lvbiAxMDE3ODgpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL1RleHRUcmFjay5pZGwJKHdvcmtp
bmcgY29weSkKQEAgLTI4LDcgKzI4LDggQEAgbW9kdWxlIGh0bWwgewogICAgIGludGVyZmFjZSBb
CiAgICAgICAgIENvbmRpdGlvbmFsPVZJREVPX1RSQUNLLAogICAgICAgICBFbmFibGVkQXRSdW50
aW1lPXdlYmtpdFZpZGVvVHJhY2ssCi0gICAgICAgIEV2ZW50VGFyZ2V0CisgICAgICAgIEV2ZW50
VGFyZ2V0LAorICAgICAgICBDdXN0b21Jc1JlYWNoYWJsZQogICAgIF0gVGV4dFRyYWNrIHsKICAg
ICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBraW5kOwogICAgICAgICByZWFkb25s
eSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGxhYmVsOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9U
ZXh0VHJhY2tDdWUuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dFRy
YWNrQ3VlLmlkbAkocmV2aXNpb24gMTAxNzg4KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0
VHJhY2tDdWUuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw4IEBAIG1vZHVsZSBodG1s
IHsKICAgICAgICAgR2VuZXJhdGVOYXRpdmVDb252ZXJ0ZXIsCiAgICAgICAgIENvbnN0cnVjdG9y
KGluIERPTVN0cmluZyBpZCwgaW4gZG91YmxlIHN0YXJ0VGltZSwgaW4gZG91YmxlIGVuZFRpbWUs
IGluIERPTVN0cmluZyB0ZXh0LCBpbiBbT3B0aW9uYWw9Q2FsbFdpdGhEZWZhdWx0VmFsdWVdIERP
TVN0cmluZyBzZXR0aW5ncywgaW4gW09wdGlvbmFsPUNhbGxXaXRoRGVmYXVsdFZhbHVlXSBib29s
ZWFuIHBhdXNlT25FeGl0KSwKICAgICAgICAgQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4
dCwKLSAgICAgICAgRXZlbnRUYXJnZXQKKyAgICAgICAgRXZlbnRUYXJnZXQsCisgICAgICAgIEN1
c3RvbUlzUmVhY2hhYmxlCiAgICAgXSBUZXh0VHJhY2tDdWUgewogICAgICAgICByZWFkb25seSBh
dHRyaWJ1dGUgVGV4dFRyYWNrIHRyYWNrOwogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9N
U3RyaW5nIGlkOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tMaXN0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0xp
c3QuY3BwCShyZXZpc2lvbiAxMDE3ODgpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1Rl
eHRUcmFja0xpc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NCwyNCArNzQsMjggQEAgVGV4dFRy
YWNrKiBUZXh0VHJhY2tMaXN0OjppdGVtKHVuc2lnbmVkIAogICAgIHJldHVybiAwOwogfQogCi12
b2lkIFRleHRUcmFja0xpc3Q6OmFwcGVuZChQYXNzUmVmUHRyPFRleHRUcmFjaz4gdHJhY2spCit2
b2lkIFRleHRUcmFja0xpc3Q6OmFwcGVuZChQYXNzUmVmUHRyPFRleHRUcmFjaz4gcHJwVHJhY2sp
CiB7Ci0gICAgUmVmUHRyPFRleHRUcmFjaz4gdHJhY2tSZWYgPSB0cmFjazsKKyAgICBSZWZQdHI8
VGV4dFRyYWNrPiB0cmFjayA9IHBycFRyYWNrOwogICAgIAotICAgIGlmICh0cmFja1JlZi0+dHJh
Y2tUeXBlKCkgPT0gVGV4dFRyYWNrOjpBZGRUcmFjaykKLSAgICAgICAgbV9hZGRUcmFja1RyYWNr
cy5hcHBlbmQodHJhY2tSZWYpOwotICAgIGVsc2UgaWYgKHRyYWNrUmVmLT50cmFja1R5cGUoKSA9
PSBUZXh0VHJhY2s6OlRyYWNrRWxlbWVudCkgeworICAgIGlmICh0cmFjay0+dHJhY2tUeXBlKCkg
PT0gVGV4dFRyYWNrOjpBZGRUcmFjaykKKyAgICAgICAgbV9hZGRUcmFja1RyYWNrcy5hcHBlbmQo
dHJhY2spOworICAgIGVsc2UgaWYgKHRyYWNrLT50cmFja1R5cGUoKSA9PSBUZXh0VHJhY2s6OlRy
YWNrRWxlbWVudCkgewogICAgICAgICAvLyBJbnNlcnQgdHJhY2tzIGFkZGVkIGZvciA8dHJhY2s+
IGVsZW1lbnQgaW4gdHJlZSBvcmRlci4KLSAgICAgICAgc2l6ZV90IGluZGV4ID0gc3RhdGljX2Nh
c3Q8TG9hZGFibGVUZXh0VHJhY2sqPih0cmFja1JlZi5nZXQoKSktPnRyYWNrRWxlbWVudEluZGV4
KCk7Ci0gICAgICAgIG1fZWxlbWVudFRyYWNrcy5pbnNlcnQoaW5kZXgsIHRyYWNrUmVmKTsKKyAg
ICAgICAgc2l6ZV90IGluZGV4ID0gc3RhdGljX2Nhc3Q8TG9hZGFibGVUZXh0VHJhY2sqPih0cmFj
ay5nZXQoKSktPnRyYWNrRWxlbWVudEluZGV4KCk7CisgICAgICAgIG1fZWxlbWVudFRyYWNrcy5p
bnNlcnQoaW5kZXgsIHRyYWNrKTsKICAgICB9IGVsc2UKICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAKLSAgICBzY2hlZHVsZUFkZFRyYWNrRXZlbnQodHJhY2tSZWYpOworICAgIEFTU0VS
VCghdHJhY2stPm1lZGlhRWxlbWVudCgpIHx8IHRyYWNrLT5tZWRpYUVsZW1lbnQoKSA9PSBvd25l
cigpKTsKKyAgICB0cmFjay0+c2V0TWVkaWFFbGVtZW50KG93bmVyKCkpOworCisgICAgc2NoZWR1
bGVBZGRUcmFja0V2ZW50KHRyYWNrKTsKIH0KIAotdm9pZCBUZXh0VHJhY2tMaXN0OjpyZW1vdmUo
UGFzc1JlZlB0cjxUZXh0VHJhY2s+IHRyYWNrKQordm9pZCBUZXh0VHJhY2tMaXN0OjpyZW1vdmUo
UGFzc1JlZlB0cjxUZXh0VHJhY2s+IHBycFRyYWNrKQogeworICAgIFJlZlB0cjxUZXh0VHJhY2s+
IHRyYWNrID0gcHJwVHJhY2s7CiAgICAgVmVjdG9yPFJlZlB0cjxUZXh0VHJhY2s+ID4qIHRyYWNr
cyA9IDA7CiAKICAgICBpZiAodHJhY2stPnRyYWNrVHlwZSgpID09IFRleHRUcmFjazo6VHJhY2tF
bGVtZW50KQpAQCAtMTA0LDggKzEwOCwxMSBAQCB2b2lkIFRleHRUcmFja0xpc3Q6OnJlbW92ZShQ
YXNzUmVmUHRyPFRlCiAgICAgc2l6ZV90IGluZGV4ID0gdHJhY2tzLT5maW5kKHRyYWNrKTsKICAg
ICBpZiAoaW5kZXggPT0gbm90Rm91bmQpCiAgICAgICAgIHJldHVybjsKLSAgICB0cmFja3MtPnJl
bW92ZShpbmRleCk7CiAKKyAgICBBU1NFUlQodHJhY2stPm1lZGlhRWxlbWVudCgpID09IG93bmVy
KCkpOworICAgIHRyYWNrLT5zZXRNZWRpYUVsZW1lbnQoMCk7CisKKyAgICB0cmFja3MtPnJlbW92
ZShpbmRleCk7CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgVGV4dFRyYWNrTGlzdDo6aW50ZXJm
YWNlTmFtZSgpIGNvbnN0CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMDE3ODgpCisrKyBMYXlvdXRUZXN0
cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNyBAQAorMjAxMS0xMi0wNSAg
RXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBKU0Mgd3Jh
cHBlcnMgZm9yIFRleHRUcmFjayBhbmQgVGV4dFRyYWNrQ3VlIHNob3VsZCBub3QgYmUgY29sbGVj
dGVkIG9uIGV2ZW50IGRpc3BhdGNoIGFuZCB3aGVuIHBhcmVudC9vd25lciBhcmUgc3RpbGwgcmVh
Y2hhYmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03
MjE3OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
bWVkaWEvdHJhY2svdGV4dC10cmFjay1jdWUtaXMtcmVhY2hhYmxlLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogbWVkaWEvdHJhY2svdGV4dC10cmFjay1jdWUtaXMtcmVhY2hhYmxlLmh0
bWw6IERpdHRvLgorICAgICAgICAqIG1lZGlhL3RyYWNrL3RleHQtdHJhY2staXMtcmVhY2hhYmxl
LWV4cGVjdGVkLnR4dDogRGl0dG8uCisgICAgICAgICogbWVkaWEvdHJhY2svdGV4dC10cmFjay1p
cy1yZWFjaGFibGUuaHRtbDogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vdGVz
dF9leHBlY3RhdGlvbnMudHh0OiBTa2lwIG5ldyB0ZXN0cyBhcyB0aGV5IHdvbid0IHdvcmsgdW50
aWwgCisgICAgICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NzM4NjUgaGFzIGJlZW4gZml4ZWQuCisKIDIwMTEtMTEtMjggIEFsZXhhbmRlciBQYXZsb3YgIDxh
cGF2bG92QGNocm9taXVtLm9yZz4KIAogICAgICAgICBJbmxpbmUgbm9uLXJlcGxhY2VkIGVsZW1l
bnRzIGFyZSByZXBvcnRlZCB0byBoYXZlIHplcm8gd2lkdGggYW5kIGhlaWdodApJbmRleDogTGF5
b3V0VGVzdHMvbWVkaWEvdHJhY2svdGV4dC10cmFjay1jdWUtaXMtcmVhY2hhYmxlLWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS90cmFjay90ZXh0LXRyYWNrLWN1
ZS1pcy1yZWFjaGFibGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
bWVkaWEvdHJhY2svdGV4dC10cmFjay1jdWUtaXMtcmVhY2hhYmxlLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwxNiBAQAorRW5zdXJlIHRoYXQgYSBUZXh0VHJhY2tDdWUgd29u
J3QgYmUgY29sbGVjdGVkIGlmIGl0IGhhcyBhIGN1c3RvbSBwcm9wZXJ0eS4KKworKiogVmFsaWRh
dGUuCitFWFBFQ1RFRCAodmlkZW8udGV4dFRyYWNrc1swXS5jdWVzLmxlbmd0aCA9PSAnNCcpIE9L
CitFWFBFQ1RFRCAodmlkZW8udGV4dFRyYWNrc1swXS5jdWVzWzFdLnN0YXJ0VGltZSA9PSAnMzEn
KSBPSworCisqKiBBZGQgYSBjdXN0b20gcHJvcGVydHkgdG8gYSBjdWUuCitSVU4odmlkZW8udGV4
dFRyYWNrc1swXS5jdWVzWzFdLm15UHJvcGVydHkgPSAndHVuYSBzYWxhZD8nKQorRVhQRUNURUQg
KHZpZGVvLnRleHRUcmFja3NbMF0uY3Vlc1sxXS5teVByb3BlcnR5ID09ICd0dW5hIHNhbGFkPycp
IE9LCisKKyoqIEZvcmNlIGdhcmJhZ2UgY29sbGVjdGlvbi4KK0VYUEVDVEVEICh2aWRlby50ZXh0
VHJhY2tzWzBdLmN1ZXMubGVuZ3RoID09ICc0JykgT0sKK0VYUEVDVEVEICh2aWRlby50ZXh0VHJh
Y2tzWzBdLmN1ZXNbMV0ubXlQcm9wZXJ0eSA9PSAndHVuYSBzYWxhZD8nKSBPSworCitFTkQgT0Yg
VEVTVAorCkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS90cmFjay90ZXh0LXRyYWNrLWN1ZS1pcy1y
ZWFjaGFibGUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS90cmFjay90ZXh0
LXRyYWNrLWN1ZS1pcy1yZWFjaGFibGUuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L21lZGlhL3RyYWNrL3RleHQtdHJhY2stY3VlLWlzLXJlYWNoYWJsZS5odG1sCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDQ4IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgor
ICAgICAgICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRt
bDsgY2hhcnNldD11dGYtOCIgLz4KKworICAgICAgICA8c2NyaXB0IHNyYz0uLi92aWRlby10ZXN0
LmpzPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorCisgICAgICAgICAgICBmdW5jdGlvbiBm
b3JjZUdDKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAod2luZG93LkdDQ29u
dHJvbGxlcikKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdDQ29udHJvbGxlci5jb2xsZWN0
KCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAvLyBGb3JjZSBnYXJiYWdlIGNvbGxl
Y3Rpb24KKyAgICAgICAgICAgICAgICBmb3IgKHZhciBuZHggPSAwOyBuZHggPCA5OTAwMDsgbmR4
KyspCisgICAgICAgICAgICAgICAgICAgIHZhciBzdHIgPSBuZXcgU3RyaW5nKCIxMjM0Iik7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHRyYWNrTG9hZGVkKCkKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICBmaW5kTWVkaWFFbGVtZW50KCk7CisKKyAgICAgICAg
ICAgICAgICBjb25zb2xlV3JpdGUoIioqIFZhbGlkYXRlLiIpOworICAgICAgICAgICAgICAgIHRl
c3RFeHBlY3RlZCgidmlkZW8udGV4dFRyYWNrc1swXS5jdWVzLmxlbmd0aCIsIDQpOworICAgICAg
ICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8udGV4dFRyYWNrc1swXS5jdWVzWzFdLnN0YXJ0
VGltZSIsIDMxKTsKKworICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiPGJyPioqIEFkZCBh
IGN1c3RvbSBwcm9wZXJ0eSB0byBhIGN1ZS4iKTsKKyAgICAgICAgICAgICAgICBydW4oInZpZGVv
LnRleHRUcmFja3NbMF0uY3Vlc1sxXS5teVByb3BlcnR5ID0gJ3R1bmEgc2FsYWQ/JyIpOworICAg
ICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8udGV4dFRyYWNrc1swXS5jdWVzWzFdLm15
UHJvcGVydHkiLCAidHVuYSBzYWxhZD8iKTsKKworICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0
ZSgiPGJyPioqIEZvcmNlIGdhcmJhZ2UgY29sbGVjdGlvbi4iKTsKKyAgICAgICAgICAgICAgICBm
b3JjZUdDKCk7CisgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby50ZXh0VHJhY2tz
WzBdLmN1ZXMubGVuZ3RoIiwgNCk7CisgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRl
by50ZXh0VHJhY2tzWzBdLmN1ZXNbMV0ubXlQcm9wZXJ0eSIsICJ0dW5hIHNhbGFkPyIpOworCisg
ICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCIiKTsKKyAgICAgICAgICAgICAgICBlbmRUZXN0
KCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAg
IDxib2R5PgorICAgICAgICA8cD5FbnN1cmUgdGhhdCBhIFRleHRUcmFja0N1ZSB3b24ndCBiZSBj
b2xsZWN0ZWQgaWYgaXQgaGFzIGEgY3VzdG9tIHByb3BlcnR5LjwvcD4KKyAgICAgICAgPHZpZGVv
PgorICAgICAgICAgICAgPHRyYWNrIHNyYz0iY2FwdGlvbnMtd2VidnR0L3RjMDEzLXNldHRpbmdz
LnZ0dCIga2luZD0iY2FwdGlvbnMiIG9ubG9hZD0idHJhY2tMb2FkZWQoKSIgZGVmYXVsdD4KKyAg
ICAgICAgPC92aWRlbz4KKyAgICA8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9t
ZWRpYS90cmFjay90ZXh0LXRyYWNrLWlzLXJlYWNoYWJsZS1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdGV4dC10cmFjay1pcy1yZWFjaGFibGUtZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdGV4dC10
cmFjay1pcy1yZWFjaGFibGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE2
IEBACitFbnN1cmUgdGhhdCBhIFRleHRUcmFjayB3b24ndCBiZSBjb2xsZWN0ZWQgaWYgaXQgaGFz
IGEgY3VzdG9tIHByb3BlcnR5LgorCisqKiBWYWxpZGF0ZS4KK0VYUEVDVEVEICh2aWRlby50ZXh0
VHJhY2tzLmxlbmd0aCA9PSAnMScpIE9LCitFWFBFQ1RFRCAodmlkZW8udGV4dFRyYWNrc1swXS5r
aW5kID09ICdjYXB0aW9ucycpIE9LCisKKyoqIEFkZCBhIGN1c3RvbSBwcm9wZXJ0eSB0byB0aGUg
dHJhY2suCitSVU4odmlkZW8udGV4dFRyYWNrc1swXS5teVByb3BlcnR5ID0gJ2VnZyBzYWxhZCE/
JykKK0VYUEVDVEVEICh2aWRlby50ZXh0VHJhY2tzWzBdLm15UHJvcGVydHkgPT0gJ2VnZyBzYWxh
ZCE/JykgT0sKKworKiogRm9yY2UgZ2FyYmFnZSBjb2xsZWN0aW9uLgorRVhQRUNURUQgKHZpZGVv
LnRleHRUcmFja3NbMF0uY3Vlcy5sZW5ndGggPT0gJzQnKSBPSworRVhQRUNURUQgKHZpZGVvLnRl
eHRUcmFja3NbMF0ubXlQcm9wZXJ0eSA9PSAnZWdnIHNhbGFkIT8nKSBPSworCitFTkQgT0YgVEVT
VAorCkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS90cmFjay90ZXh0LXRyYWNrLWlzLXJlYWNoYWJs
ZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3RyYWNrL3RleHQtdHJhY2st
aXMtcmVhY2hhYmxlLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9tZWRpYS90cmFj
ay90ZXh0LXRyYWNrLWlzLXJlYWNoYWJsZS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ5
IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8bWV0YSBo
dHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYt
OCIgLz4KKworICAgICAgICA8c2NyaXB0IHNyYz0uLi9tZWRpYS1maWxlLmpzPjwvc2NyaXB0Pgor
ICAgICAgICA8c2NyaXB0IHNyYz0uLi92aWRlby10ZXN0LmpzPjwvc2NyaXB0PgorICAgICAgICA8
c2NyaXB0PgorCisgICAgICAgICAgICBmdW5jdGlvbiBmb3JjZUdDKCkKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICBpZiAod2luZG93LkdDQ29udHJvbGxlcikKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIEdDQ29udHJvbGxlci5jb2xsZWN0KCk7CisgICAgICAgICAgICAKKyAgICAg
ICAgICAgICAgICAvLyBGb3JjZSBnYXJiYWdlIGNvbGxlY3Rpb24KKyAgICAgICAgICAgICAgICBm
b3IgKHZhciBuZHggPSAwOyBuZHggPCA5OTAwMDsgbmR4KyspCisgICAgICAgICAgICAgICAgICAg
IHZhciBzdHIgPSBuZXcgU3RyaW5nKCIxMjM0Iik7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIGZ1bmN0aW9uIHRyYWNrTG9hZGVkKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICBmaW5kTWVkaWFFbGVtZW50KCk7CisKKyAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIioq
IFZhbGlkYXRlLiIpOworICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8udGV4dFRy
YWNrcy5sZW5ndGgiLCAxKTsKKyAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLnRl
eHRUcmFja3NbMF0ua2luZCIsICJjYXB0aW9ucyIpOworCisgICAgICAgICAgICAgICAgY29uc29s
ZVdyaXRlKCI8YnI+KiogQWRkIGEgY3VzdG9tIHByb3BlcnR5IHRvIHRoZSB0cmFjay4iKTsKKyAg
ICAgICAgICAgICAgICBydW4oInZpZGVvLnRleHRUcmFja3NbMF0ubXlQcm9wZXJ0eSA9ICdlZ2cg
c2FsYWQhPyciKTsKKyAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLnRleHRUcmFj
a3NbMF0ubXlQcm9wZXJ0eSIsICJlZ2cgc2FsYWQhPyIpOworCisgICAgICAgICAgICAgICAgY29u
c29sZVdyaXRlKCI8YnI+KiogRm9yY2UgZ2FyYmFnZSBjb2xsZWN0aW9uLiIpOworICAgICAgICAg
ICAgICAgIGZvcmNlR0MoKTsKKyAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLnRl
eHRUcmFja3NbMF0uY3Vlcy5sZW5ndGgiLCA0KTsKKyAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0
ZWQoInZpZGVvLnRleHRUcmFja3NbMF0ubXlQcm9wZXJ0eSIsICJlZ2cgc2FsYWQhPyIpOworCisg
ICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCIiKTsKKyAgICAgICAgICAgICAgICBlbmRUZXN0
KCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAg
IDxib2R5PgorICAgICAgICA8cD5FbnN1cmUgdGhhdCBhIFRleHRUcmFjayB3b24ndCBiZSBjb2xs
ZWN0ZWQgaWYgaXQgaGFzIGEgY3VzdG9tIHByb3BlcnR5LjwvcD4KKyAgICAgICAgPHZpZGVvPgor
ICAgICAgICAgICAgPHRyYWNrIHNyYz0iY2FwdGlvbnMtd2VidnR0L3RjMDEzLXNldHRpbmdzLnZ0
dCIga2luZD0iY2FwdGlvbnMiIG9ubG9hZD0idHJhY2tMb2FkZWQoKSIgZGVmYXVsdD4KKyAgICAg
ICAgPC92aWRlbz4KKyAgICA8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0
Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CShyZXZpc2lvbiAx
MDE3ODgpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9u
cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTM3MDUsNyArMzcwNSw5IEBAIEJVR1dLNjY5NTMgOiB0
cmFuc2l0aW9ucy9kZWZhdWx0LXRpbWluZy0KIEJVR19UT05ZIE1BQyA6IGNzczMvZmxleGJveC9y
ZXBhaW50Lmh0bWwgPSBQQVNTIEZBSUwKIEJVR19UT05ZIE1BQyA6IGNzczMvZmxleGJveC9yZXBh
aW50LXJ0bC1jb2x1bW4uaHRtbCA9IFBBU1MgRkFJTAogCi1CVUdXSzcyMTQ5IDogbWVkaWEvdHJh
Y2svdHJhY2tsaXN0LWlzLXJlYWNoYWJsZS5odG1sID0gVEVYVAorQlVHV0s3Mzg2NSA6IG1lZGlh
L3RyYWNrL3RyYWNrbGlzdC1pcy1yZWFjaGFibGUuaHRtbCA9IFRFWFQKK0JVR1dLNzM4NjUgOiBt
ZWRpYS90cmFjay90ZXh0LXRyYWNrLWN1ZS1pcy1yZWFjaGFibGUuaHRtbCA9IFRFWFQKK0JVR1dL
NzM4NjUgOiBtZWRpYS90cmFjay90ZXh0LXRyYWNrLWlzLXJlYWNoYWJsZS5odG1sID0gVEVYVAog
CiBCVUdXSzcyMTMzIFNLSVAgTUFDIDogaHR0cC90ZXN0cy9pbnNwZWN0b3ItZW5hYmxlZC9kZWRp
Y2F0ZWQtd29ya2Vycy1saXN0Lmh0bWwgPSBQQVNTIFRJTUVPVVQKIAo=
</data>
<flag name="review"
          id="117617"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>