<?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>25064</bug_id>
          
          <creation_ts>2009-04-06 16:08:16 -0700</creation_ts>
          <short_desc>Implement a content sniffer</short_desc>
          <delta_ts>2011-05-23 13:44:11 -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>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>25939</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Barth">abarth</reporter>
          <assigned_to name="Adam Barth">abarth</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>christian</cc>
    
    <cc>emacemac7</cc>
    
    <cc>hausmann</cc>
    
    <cc>jmalonzo</cc>
    
    <cc>kenneth</cc>
    
    <cc>laszlo.gombos</cc>
    
    <cc>luiz</cc>
    
    <cc>mike</cc>
    
    <cc>mjs</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>116685</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-04-06 16:08:16 -0700</bug_when>
    <thetext>Currently, WebKit relies on the networking library to perform content sniffing.  This means every port has to roll their own, creating compatibility / security differences between WebKit ports.  I spoke to Maceij on #webkit today, and we agreed that we should have our own sniffer in WebKit.

We should base our content sniffer on the HTML 5 sniffing algorithm.  Ideally, we&apos;d converge with Firefox on a common, standardized algorithm.  http://src.chromium.org/viewvc/chrome/trunk/src/net/base/mime_sniffer.cc might be a decent starting place.

If no one else gets to this soon, I&apos;ll probably be able to work on this in a few months.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>120169</commentid>
    <comment_count>1</comment_count>
      <attachid>30069</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-05-06 15:30:49 -0700</bug_when>
    <thetext>Created attachment 30069
Step 1: Add sniffer entry points

Starting to work on this.  Adding entry points to the sniffing algorithm.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>120178</commentid>
    <comment_count>2</comment_count>
      <attachid>30073</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-05-06 16:40:55 -0700</bug_when>
    <thetext>Created attachment 30073
Step 2: Hook sniffer into network stack

Work in progress.  I&apos;ll nominate for review when its appropriate.  Let me know if you have feedback about the design of how I&apos;ve hooked this in.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>120180</commentid>
    <comment_count>3</comment_count>
      <attachid>30074</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-05-06 16:53:10 -0700</bug_when>
    <thetext>Created attachment 30074
Step 2: Hook sniffer into network stack (improved)

Better separation of concerns.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>120195</commentid>
    <comment_count>4</comment_count>
      <attachid>30080</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-05-06 18:38:32 -0700</bug_when>
    <thetext>Created attachment 30080
Step 2: Hook sniffer into network stack (ready for review)

This version is ready for review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>121729</commentid>
    <comment_count>5</comment_count>
      <attachid>30433</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-05-17 19:45:18 -0700</bug_when>
    <thetext>Created attachment 30433
Step 3: Implement sniffing algorithm

This is a port of the chromium sniffer.  This is probably a reasonable starting point.  We can tune it in subsequent steps, if you like.  This code is BSD licensed in the Chromium tree, which should fine to incorporate into WebKit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>122787</commentid>
    <comment_count>6</comment_count>
      <attachid>30069</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2009-05-22 21:36:23 -0700</bug_when>
    <thetext>Comment on attachment 30069
Step 1: Add sniffer entry points

This part looks ok. Though I am not sure it makes sense to send by itself.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>122789</commentid>
    <comment_count>7</comment_count>
      <attachid>30080</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2009-05-22 21:42:40 -0700</bug_when>
    <thetext>Comment on attachment 30080
Step 2: Hook sniffer into network stack (ready for review)

The low-level details of the code look ok, but I&apos;m not entirely happy with the design approach. It seems like overkill to create a generic forwarding resource handle client just to attach some built-in behavior to didReceiveResponse. I think it would make more sense to implement an appropriate method in ResourceHandleBase and require ResourceHandle subclasses to call that method at the appropriate point.

Also:

This adds a call to shouldSniffMIMEType, but no call to sniffMIMEType. Part 3 doesn&apos;t call it either, so how does any actual sniffing ever happen?

It might actually be simpler to combine this and part 1 with the patch to add the sniffer logic. Seems like it would be easier to review it all as a unit so that the reviewer can follow the logic.

r- for the above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>122793</commentid>
    <comment_count>8</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-05-22 21:52:13 -0700</bug_when>
    <thetext>I&apos;m happy to collapse these steps into one patch if that would be easier to review.  I was worried about creating something that was too big to review effectively.

No actual sniffing is going on yet.  The remaining steps are:

4) Call the sniffer once we receive bytes from the network (i.e., in didReceiveData).
5) Buffer network bytes if we can&apos;t guess the type from the first bytes we receive.
6) Disable the existing platform-level sniffer.

Would you like all these in one patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>122794</commentid>
    <comment_count>9</comment_count>
      <attachid>30433</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2009-05-22 21:56:47 -0700</bug_when>
    <thetext>Comment on attachment 30433
Step 3: Implement sniffing algorithm

This can&apos;t land for at least the following reasons:

1) In light of the r- of part 2.
2) Because there are no test cases included.

Here are some other comments on the details:

A) These macros seem a little clunky. Perhaps it would be better to have a .in-type file to generate a source file that has the static sniffing tables.

&gt; #define MAGIC_NUMBER(mimeType, magic) \
&gt;   { (mimeType), (magic), sizeof(magic)-1, false },


B) For the sniffing rules that don&apos;t come from the HTML5 spec, should they be proposed for HTML5?

C) On sniffing feeds - I think the security risk of misinterpreting a non-feed XML document as a feed is low, so I would suggest to err on the side of being more generous. I think the code here will not sniff a feed in all the cases that Safari will, which is probably unwise.

D) Nothing in this patch set seems to turn off the built-in sniffing of NSURL, CFNetwork, or other network layers that may do their own sniffing.

In addition, I&apos;ll try to do some research on CFNetwork&apos;s current sniffing rules to see if there are any important ones that should be added here.

Nice work so far, please revise per above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>122795</commentid>
    <comment_count>10</comment_count>
      <attachid>30069</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2009-05-22 21:57:19 -0700</bug_when>
    <thetext>Comment on attachment 30069
Step 1: Add sniffer entry points

flagging as - in retrospect, because it doesn&apos;t make sense to land this in isolation, and the patchset should probably be combined anyway.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>408024</commentid>
    <comment_count>11</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-05-23 10:14:55 -0700</bug_when>
    <thetext>Sounds like we&apos;re not planning to do this anytime soon.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>30069</attachid>
            <date>2009-05-06 15:30:49 -0700</date>
            <delta_ts>2010-06-10 17:42:48 -0700</delta_ts>
            <desc>Step 1: Add sniffer entry points</desc>
            <filename>add-sniffer-entry-points.patch</filename>
            <type>text/plain</type>
            <size>12503</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">RnJvbSA5ZDUxMjIyMmU3MWUwY2VkMjY0YWQ3NWE1NTM4Y2E1ZTVjMGVjYWU3IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBZGFtIEJhcnRoIDxhYmFydGhAYXJjdGljYS5sb2NhbD4KRGF0
ZTogV2VkLCA2IE1heSAyMDA5IDE1OjI2OjE1IC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gMjAwOS0w
NS0wNiAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgoKICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KCiAgICAgICAgQWRkZWQgZW50cnkgcG9pbnRzIGZvciBNSU1FIHNu
aWZmZXIuCgogICAgICAgICogR05VbWFrZWZpbGUuYW06CiAgICAgICAgKiBXZWJDb3JlLnBybzoK
ICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgogICAgICAgICogV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgogICAgICAgICogV2ViQ29yZVNvdXJjZXMuYmts
OgogICAgICAgICogcGxhdGZvcm0vbmV0d29yay9NSU1FU25pZmZlci5jcHA6IEFkZGVkLgogICAg
ICAgIChXZWJDb3JlOjpzaG91bGRTbmlmZk1JTUVUeXBlKToKICAgICAgICAoV2ViQ29yZTo6c25p
ZmZNSU1FVHlwZSk6CiAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL01JTUVTbmlmZmVyLmg6IEFk
ZGVkLgotLS0KIFdlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAx
NiArKysrKysrKysrCiBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtICAgICAgICAgICAgICAgICAgICB8
ICAgIDIgKwogV2ViQ29yZS9XZWJDb3JlLnBybyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAx
ICsKIFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogICAgIHwgICAgOCArKysr
KwogV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogfCAgICA4ICsrKysr
CiBXZWJDb3JlL1dlYkNvcmVTb3VyY2VzLmJrbCAgICAgICAgICAgICAgICB8ICAgIDEgKwogV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL01JTUVTbmlmZmVyLmNwcCAgfCAgIDQ1ICsrKysrKysrKysr
KysrKysrKysrKysrKysrKysrCiBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTUlNRVNuaWZmZXIu
aCAgICB8ICAgNDMgKysrKysrKysrKysrKysrKysrKysrKysrKysrCiA4IGZpbGVzIGNoYW5nZWQs
IDEyNCBpbnNlcnRpb25zKCspLCAwIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IFdl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9NSU1FU25pZmZlci5jcHAKIGNyZWF0ZSBtb2RlIDEwMDY0
NCBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTUlNRVNuaWZmZXIuaAoKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjRjYzI0Mi4uYTBhMjgy
NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxOSBAQAorMjAwOS0wNS0wNiAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQu
b3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFk
ZGVkIGVudHJ5IHBvaW50cyBmb3IgTUlNRSBzbmlmZmVyLgorCisgICAgICAgICogR05VbWFrZWZp
bGUuYW06CisgICAgICAgICogV2ViQ29yZS5wcm86CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ov
V2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIFdlYkNvcmVTb3VyY2VzLmJrbDoKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL01JTUVTbmlmZmVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpzaG91bGRT
bmlmZk1JTUVUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OnNuaWZmTUlNRVR5cGUpOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvTUlNRVNuaWZmZXIuaDogQWRkZWQuCisKIDIwMDktMDUtMDYg
IEhpbi1DaHVuZyBMYW0gIDxoY2xhbUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgRGFyaW4gRmlzaGVyLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbSBiL1dl
YkNvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXggYmQwMDNkZC4uYmM3NzljNiAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9HTlVtYWtlZmlsZS5hbQorKysgYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCkBAIC0x
NDU1LDYgKzE0NTUsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9IVFRQSGVhZGVyTWFwLmNwcCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hU
VFBQYXJzZXJzLmNwcCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmgg
XAorCVdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9NSU1FU25pZmZlci5jcHAgXAorCVdlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9NSU1FU25pZmZlci5oIFwKIAlXZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvTmV0d29ya1N0YXRlTm90aWZpZXIuY3BwIFwKIAlXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
TmV0d29ya1N0YXRlTm90aWZpZXIuaCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Byb3Rl
Y3Rpb25TcGFjZS5jcHAgXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnBybyBiL1dlYkNv
cmUvV2ViQ29yZS5wcm8KaW5kZXggZjliMGViMC4uNjFlNTdlMyAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9XZWJDb3JlLnBybworKysgYi9XZWJDb3JlL1dlYkNvcmUucHJvCkBAIC05NjEsNiArOTYxLDcg
QEAgU09VUkNFUyArPSBcCiAgICAgcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YUJ1aWxkZXIuY3Bw
IFwKICAgICBwbGF0Zm9ybS9uZXR3b3JrL0hUVFBIZWFkZXJNYXAuY3BwIFwKICAgICBwbGF0Zm9y
bS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcCBcCisgICAgcGxhdGZvcm0vbmV0d29yay9NSU1FU25p
ZmZlci5jcHAgXAogICAgIHBsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0YXRlTm90aWZpZXIuY3Bw
IFwKICAgICBwbGF0Zm9ybS9uZXR3b3JrL1Byb3RlY3Rpb25TcGFjZS5jcHAgXAogICAgIHBsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VFcnJvckJhc2UuY3BwIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dl
YkNvcmUudmNwcm9qCmluZGV4IDI1MDQwMWIuLjFjYTg0OTEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnZjcHJv
ai9XZWJDb3JlLnZjcHJvagpAQCAtNTE0OSw2ICs1MTQ5LDE0IEBACiAJCQkJCT4NCiAJCQkJPC9G
aWxlPg0KIAkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxuZXR3b3Jr
XE1JTUVTbmlmZmVyLmNwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxuZXR3b3JrXE1JTUVTbmlmZmVyLmgiDQorCQkJ
CQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxh
dGZvcm1cbmV0d29ya1xOZXR3b3JrU3RhdGVOb3RpZmllci5jcHAiDQogCQkJCQk+DQogCQkJCTwv
RmlsZT4NCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDAx
YzNhMmEuLmU4MTNmYjQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC0yMTIxLDYgKzIxMjEsOCBAQAogCQk5M0Y5QjdBMDBCQTYwMzI2MDA4NTQwNjQgLyog
SlNDREFUQVNlY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTNGOUI3OUUwQkE2MDMyNjAwODU0MDY0IC8qIEpTQ0RBVEFTZWN0aW9uLmNwcCAq
LzsgfTsKIAkJOTNGOUI3QTEwQkE2MDMyNjAwODU0MDY0IC8qIEpTQ0RBVEFTZWN0aW9uLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Y5Qjc5RjBCQTYw
MzI2MDA4NTQwNjQgLyogSlNDREFUQVNlY3Rpb24uaCAqLzsgfTsKIAkJOTNGREFGQ0EwQjExMzA3
NDAwRTI3NDZGIC8qIEVkaXRvckluc2VydEFjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNGREFGQzkwQjExMzA3NDAwRTI3NDZGIC8qIEVkaXRv
ckluc2VydEFjdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCTk3RUFGMkM3MEZCMjQ0NUUwMERCNDQ5RiAvKiBNSU1FU25pZmZlci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5N0VBRjJDNTBGQjI0
NDVEMDBEQjQ0OUYgLyogTUlNRVNuaWZmZXIuY3BwICovOyB9OworCQk5N0VBRjJDODBGQjI0NDVF
MDBEQjQ0OUYgLyogTUlNRVNuaWZmZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDk3RUFGMkM2MEZCMjQ0NUUwMERCNDQ5RiAvKiBNSU1FU25pZmZlci5o
ICovOyB9OwogCQlBMTdDODEyMjBGMkE1Q0Y3MDA1REFBRUIgLyogSFRNTEVsZW1lbnRGYWN0b3J5
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExN0M4
MTIwMEYyQTVDRjcwMDVEQUFFQiAvKiBIVE1MRWxlbWVudEZhY3RvcnkuY3BwICovOyB9OwogCQlB
MTdDODEyMzBGMkE1Q0Y3MDA1REFBRUIgLyogSFRNTEVsZW1lbnRGYWN0b3J5LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTdDODEyMTBGMkE1Q0Y3MDA1
REFBRUIgLyogSFRNTEVsZW1lbnRGYWN0b3J5LmggKi87IH07CiAJCUE3MDk0QUZBMEYyN0FFNjAw
MDU5NkNFQyAvKiBDYW52YXNQaXhlbEFycmF5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MDk0QUY5MEYyN0FFNjAwMDU5NkNFQyAvKiBDYW52YXNQ
aXhlbEFycmF5LmNwcCAqLzsgfTsKQEAgLTcwMTgsNiArNzAyMCw4IEBACiAJCTkzRjlCNzlFMEJB
NjAzMjYwMDg1NDA2NCAvKiBKU0NEQVRBU2VjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBKU0NEQVRBU2VjdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTkzRjlCNzlGMEJBNjAzMjYwMDg1NDA2NCAvKiBKU0NEQVRBU2VjdGlvbi5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0NEQVRBU2VjdGlvbi5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk5M0ZEQUZDOTBCMTEzMDc0MDBFMjc0NkYgLyogRWRpdG9y
SW5zZXJ0QWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFZGl0b3JJ
bnNlcnRBY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTdFQUYyQzUwRkIy
NDQ1RDAwREI0NDlGIC8qIE1JTUVTbmlmZmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IE1JTUVTbmlmZmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJOTdFQUYyQzYwRkIyNDQ1RTAwREI0NDlGIC8qIE1JTUVTbmlmZmVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1JTUVTbmlmZmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUExN0M4MTIwMEYyQTVDRjcwMDVEQUFFQiAvKiBIVE1MRWxlbWVudEZhY3Rvcnku
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSFRNTEVsZW1lbnRGYWN0
b3J5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTE3QzgxMjEwRjJBNUNGNzAw
NURBQUVCIC8qIEhUTUxFbGVtZW50RmFjdG9yeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBIVE1MRWxlbWVudEZhY3RvcnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQTcwOTRBRjkwRjI3QUU2MDAwNTk2Q0VDIC8qIENhbnZhc1BpeGVsQXJyYXkuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2FudmFzUGl4ZWxBcnJheS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMDEwMiw2ICsxMDEwNiw4IEBACiAJCQkJNTE0
Qzc2NUUwQ0U5MjNBMTAwN0VGM0NEIC8qIEhUVFBQYXJzZXJzLmggKi8sCiAJCQkJMUE3RkE2MUEw
RERBM0JCRTAwMjhGOEE1IC8qIE5ldHdvcmtTdGF0ZU5vdGlmaWVyLmNwcCAqLywKIAkJCQkxQTdG
QTYxODBEREEzQjNBMDAyOEY4QTUgLyogTmV0d29ya1N0YXRlTm90aWZpZXIuaCAqLywKKwkJCQk5
N0VBRjJDNTBGQjI0NDVEMDBEQjQ0OUYgLyogTUlNRVNuaWZmZXIuY3BwICovLAorCQkJCTk3RUFG
MkM2MEZCMjQ0NUUwMERCNDQ5RiAvKiBNSU1FU25pZmZlci5oICovLAogCQkJCTUxNEM3NjVGMENF
OTIzQTEwMDdFRjNDRCAvKiBQcm90ZWN0aW9uU3BhY2UuY3BwICovLAogCQkJCTUxNEM3NjYwMENF
OTIzQTEwMDdFRjNDRCAvKiBQcm90ZWN0aW9uU3BhY2UuaCAqLywKIAkJCQk5MzRGNzEzRDBENUE2
RjI4MDAwMThENjkgLyogUmVzb3VyY2VFcnJvckJhc2UuY3BwICovLApAQCAtMTY4ODAsNiArMTY4
ODYsNyBAQAogCQkJCTdBNjc0QkRDMEY5RUJGNEUwMDZDRjA5OSAvKiBQYWdlR3JvdXBMb2FkRGVm
ZXJyZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTVEMTVFM0FDMEY5RTZBQzEwMDlFMEUzRiAvKiBY
TUxUb2tlbml6ZXJTY29wZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzc3NEFCQTUwRkEyMUVCNDAw
QUQ3REU5IC8qIE92ZXJsYXBUZXN0UmVxdWVzdENsaWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
OTdFQUYyQzgwRkIyNDQ1RTAwREI0NDlGIC8qIE1JTUVTbmlmZmVyLmggaW4gSGVhZGVycyAqLywK
IAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsK
QEAgLTE4ODk3LDYgKzE4OTA0LDcgQEAKIAkJCQk5M0IyRDgxODBGOTkyMEVFMDA2QUU2QjIgLyog
U3VkZGVuVGVybWluYXRpb24ubW0gaW4gU291cmNlcyAqLywKIAkJCQk3QTY3NEJEQjBGOUVCRjRF
MDA2Q0YwOTkgLyogUGFnZUdyb3VwTG9hZERlZmVycmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTVEMTVFM0FCMEY5RTZBQzEwMDlFMEUzRiAvKiBYTUxUb2tlbml6ZXJTY29wZS5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQk5N0VBRjJDNzBGQjI0NDVFMDBEQjQ0OUYgLyogTUlNRVNuaWZmZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vz
c2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmVTb3VyY2VzLmJrbCBi
L1dlYkNvcmUvV2ViQ29yZVNvdXJjZXMuYmtsCmluZGV4IGYyNmMxNmYuLmM5Yzk3MjAgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZVNvdXJjZXMuYmtsCisrKyBiL1dlYkNvcmUvV2ViQ29yZVNv
dXJjZXMuYmtsCkBAIC04MjUsNiArODI1LDcgQEAgVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBsaXN0
IG9mIGZpbGVzIG5lZWRlZCB0byBidWlsZCBXZWJDb3JlLgogICAgICAgICBwbGF0Zm9ybS9uZXR3
b3JrL0hUVFBQYXJzZXJzLmNwcAogICAgICAgICBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNw
cAogICAgICAgICBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhQnVpbGRlci5jcHAKKyAgICAgICAg
cGxhdGZvcm0vbmV0d29yay9NSU1FU25pZmZlci5jcHAKICAgICAgICAgcGxhdGZvcm0vbmV0d29y
ay9OZXR3b3JrU3RhdGVOb3RpZmllci5jcHAKICAgICAgICAgcGxhdGZvcm0vbmV0d29yay9Qcm90
ZWN0aW9uU3BhY2UuY3BwCiAgICAgICAgIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VFcnJvckJh
c2UuY3BwCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTUlNRVNuaWZmZXIu
Y3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL01JTUVTbmlmZmVyLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMDg2NjY1Ci0tLSAvZGV2L251bGwKKysrIGIvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL01JTUVTbmlmZmVyLmNwcApAQCAtMCwwICsxLDQ1IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDA5IEFkYW0gQmFydGguICBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09N
UFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKKyAqLworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk1JTUVTbmlmZmVyLmgiCisK
KyNpbmNsdWRlICJLVVJMLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworYm9vbCBzaG91bGRT
bmlmZk1JTUVUeXBlKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKK3sK
KyAgICAvLyBUT0RPOiBJbXBsZW1lbnQgbWUuCisgICAgcmV0dXJuIGZhbHNlOworfQorCitTdHJp
bmcgc25pZmZNSU1FVHlwZShjb25zdCBjaGFyKiBjb250ZW50LCBpbnQgbGVuZ3RoLCBjb25zdCBL
VVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdHlwZUhpbnQpCit7CisgICAgLy8gVE9ETzogSW1wbGVt
ZW50IG1lLgorICAgIHJldHVybiB0eXBlSGludDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTUlNRVNuaWZmZXIuaCBi
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9NSU1FU25pZmZlci5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLmNmYzJmMTMKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvTUlNRVNuaWZmZXIuaApAQCAtMCwwICsxLDQzIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDA5IEFkYW0gQmFydGguICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLwor
I2lmbmRlZiBNSU1FU25pZmZlcl9oCisjZGVmaW5lIE1JTUVTbmlmZmVyX2gKKworI2luY2x1ZGUg
IlBsYXRmb3JtU3RyaW5nLmgiCisKK2NsYXNzIEtVUkw7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworLy8gRXhhbWluZSB8dXJsfCBhbmQgfG1pbWVUeXBlfCBhbmQgZGVjaWRlIHdoZXRoZXIgd2Ug
c2hvdWxkIHNuaWZmIGEKKy8vIHJlcGxhY2VtZW50IE1JTUUgdHlwZSBmcm9tIHRoZSBjb250ZW50
LgorYm9vbCBzaG91bGRTbmlmZk1JTUVUeXBlKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSk7CisKKy8vIEd1ZXNzIGEgTUlNRSB0eXBlIGZyb20gdGhlIGZpcnN0IGZldyBi
eXRlcyBvZiBjb250ZW50IGFuIGl0cyBVUkwuCitTdHJpbmcgc25pZmZNSU1FVHlwZShjb25zdCBj
aGFyKiBjb250ZW50LCBpbnQgbGVuZ3RoLCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYg
dHlwZUhpbnQpOworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBNSU1FU25p
ZmZlcl9oCi0tIAoxLjYuMC4xCgo=
</data>
<flag name="review"
          id="15096"
          type_id="1"
          status="-"
          setter="mjs"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>30073</attachid>
            <date>2009-05-06 16:40:55 -0700</date>
            <delta_ts>2009-05-06 16:53:10 -0700</delta_ts>
            <desc>Step 2: Hook sniffer into network stack</desc>
            <filename>sniffer-02.patch</filename>
            <type>text/plain</type>
            <size>24514</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">RnJvbSBmYjRiN2Y4ODYwNmFhOTZjOWMwYWM1Yjc1ZjJhZmE1NzEyOGIyZmQ5IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBZGFtIEJhcnRoIDxhYmFydGhAYXJjdGljYS5sb2NhbD4KRGF0
ZTogV2VkLCA2IE1heSAyMDA5IDE2OjM3OjU5IC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gMjAwOS0w
NS0wNiAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgoKICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KCiAgICAgICAgSG9vayBNSU1FIHNuaWZmZXIgaW50byBuZXR3b3Jr
IHN0YWNrLiAgVGhlIHNuaWZmZXIgc3RpbGwgZG9lc24ndAogICAgICAgIGRvIGFueXRoaW5nIHll
dC4KCiAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKICAgICAgICAqIFdlYkNvcmUucHJvOgogICAg
ICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CiAgICAgICAgKiBXZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CiAgICAgICAgKiBXZWJDb3JlU291cmNlcy5ia2w6CiAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL01JTUVTbmlmZmVyUmVzb3VyY2VIYW5kbGVDbGllbnQu
Y3BwOiBBZGRlZC4KICAgICAgICAoV2ViQ29yZTo6TUlNRVNuaWZmZXJSZXNvdXJjZUhhbmRsZUNs
aWVudDo6TUlNRVNuaWZmZXJSZXNvdXJjZUhhbmRsZUNsaWVudCk6CiAgICAgICAgKFdlYkNvcmU6
Ok1JTUVTbmlmZmVyUmVzb3VyY2VIYW5kbGVDbGllbnQ6OndpbGxTZW5kUmVxdWVzdCk6CiAgICAg
ICAgKFdlYkNvcmU6Ok1JTUVTbmlmZmVyUmVzb3VyY2VIYW5kbGVDbGllbnQ6OmRpZFNlbmREYXRh
KToKICAgICAgICAoV2ViQ29yZTo6TUlNRVNuaWZmZXJSZXNvdXJjZUhhbmRsZUNsaWVudDo6ZGlk
UmVjZWl2ZVJlc3BvbnNlKToKICAgICAgICAoV2ViQ29yZTo6TUlNRVNuaWZmZXJSZXNvdXJjZUhh
bmRsZUNsaWVudDo6ZGlkUmVjZWl2ZURhdGEpOgogICAgICAgIChXZWJDb3JlOjpNSU1FU25pZmZl
clJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRGaW5pc2hMb2FkaW5nKToKICAgICAgICAoV2ViQ29y
ZTo6TUlNRVNuaWZmZXJSZXNvdXJjZUhhbmRsZUNsaWVudDo6ZGlkRmFpbCk6CiAgICAgICAgKFdl
YkNvcmU6Ok1JTUVTbmlmZmVyUmVzb3VyY2VIYW5kbGVDbGllbnQ6Ondhc0Jsb2NrZWQpOgogICAg
ICAgIChXZWJDb3JlOjpNSU1FU25pZmZlclJlc291cmNlSGFuZGxlQ2xpZW50OjpjYW5ub3RTaG93
VVJMKToKICAgICAgICAoV2ViQ29yZTo6TUlNRVNuaWZmZXJSZXNvdXJjZUhhbmRsZUNsaWVudDo6
d2lsbENhY2hlUmVzcG9uc2UpOgogICAgICAgIChXZWJDb3JlOjpNSU1FU25pZmZlclJlc291cmNl
SGFuZGxlQ2xpZW50OjpzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSk6CiAgICAgICAgKFdlYkNv
cmU6Ok1JTUVTbmlmZmVyUmVzb3VyY2VIYW5kbGVDbGllbnQ6OmRpZFJlY2VpdmVBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSk6CiAgICAgICAgKFdlYkNvcmU6Ok1JTUVTbmlmZmVyUmVzb3VyY2VIYW5k
bGVDbGllbnQ6OmRpZENhbmNlbEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKToKICAgICAgICAoV2Vi
Q29yZTo6TUlNRVNuaWZmZXJSZXNvdXJjZUhhbmRsZUNsaWVudDo6cmVjZWl2ZWRDYW5jZWxsYXRp
b24pOgogICAgICAgIChXZWJDb3JlOjpNSU1FU25pZmZlclJlc291cmNlSGFuZGxlQ2xpZW50Ojp3
aWxsU3RvcEJ1ZmZlcmluZ0RhdGEpOgogICAgICAgIChXZWJDb3JlOjpNSU1FU25pZmZlclJlc291
cmNlSGFuZGxlQ2xpZW50OjpzaG91bGRDYWNoZVJlc3BvbnNlKToKICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvTUlNRVNuaWZmZXJSZXNvdXJjZUhhbmRsZUNsaWVudC5oOiBBZGRlZC4KICAgICAg
ICAoV2ViQ29yZTo6TUlNRVNuaWZmZXJSZXNvdXJjZUhhbmRsZUNsaWVudDo6Y2xpZW50KToKICAg
ICAgICAoV2ViQ29yZTo6TUlNRVNuaWZmZXJSZXNvdXJjZUhhbmRsZUNsaWVudDo6c2V0Q2xpZW50
KToKICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuY3BwOgogICAgICAg
IChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6Y2xlYXJNSU1FU25pZmZlcik6CiAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlSGFuZGxlOjpzZXRDbGllbnQpOgogICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9SZXNvdXJjZUhhbmRsZS5oOgogICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJj
ZUhhbmRsZUludGVybmFsLmg6CiAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlSW50ZXJu
YWw6OlJlc291cmNlSGFuZGxlSW50ZXJuYWwpOgotLS0KIFdlYkNvcmUvQ2hhbmdlTG9nICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAzOSArKysrKwogV2ViQ29yZS9HTlVtYWtl
ZmlsZS5hbSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAyICsKIFdlYkNvcmUvV2Vi
Q29yZS5wcm8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMSArCiBXZWJDb3Jl
L1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qICAgICAgICAgICAgICB8ICAgIDggKwogV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogICAgICAgICAgfCAgICA4ICsK
IFdlYkNvcmUvV2ViQ29yZVNvdXJjZXMuYmtsICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAg
MSArCiAuLi4vbmV0d29yay9NSU1FU25pZmZlclJlc291cmNlSGFuZGxlQ2xpZW50LmNwcCAgICB8
ICAxNTAgKysrKysrKysrKysrKysrKysrKysKIC4uLi9uZXR3b3JrL01JTUVTbmlmZmVyUmVzb3Vy
Y2VIYW5kbGVDbGllbnQuaCAgICAgIHwgICA2OSArKysrKysrKysKIFdlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9SZXNvdXJjZUhhbmRsZS5jcHAgICAgICAgIHwgICAxMCArKy0KIFdlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oICAgICAgICAgIHwgICAgMiArCiBXZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oICB8ICAgMTIgKy0KIDEx
IGZpbGVzIGNoYW5nZWQsIDI5NyBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQogY3JlYXRl
IG1vZGUgMTAwNjQ0IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9NSU1FU25pZmZlclJlc291cmNl
SGFuZGxlQ2xpZW50LmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IFdlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9NSU1FU25pZmZlclJlc291cmNlSGFuZGxlQ2xpZW50LmgKCmRpZmYgLS1naXQgYS9XZWJD
b3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGEwYTI4MjYuLjMzZTRhZWQg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBA
IC0yLDYgKzIsNDUgQEAKIAogICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KIAor
ICAgICAgICBIb29rIE1JTUUgc25pZmZlciBpbnRvIG5ldHdvcmsgc3RhY2suICBUaGUgc25pZmZl
ciBzdGlsbCBkb2Vzbid0CisgICAgICAgIGRvIGFueXRoaW5nIHlldC4KKworICAgICAgICAqIEdO
VW1ha2VmaWxlLmFtOgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAqIFdlYkNvcmUu
dmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJDb3JlU291cmNlcy5ia2w6CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9NSU1FU25pZmZlclJlc291cmNlSGFuZGxlQ2xpZW50LmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpNSU1FU25pZmZlclJlc291cmNlSGFuZGxlQ2xpZW50OjpNSU1F
U25pZmZlclJlc291cmNlSGFuZGxlQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVTbmlm
ZmVyUmVzb3VyY2VIYW5kbGVDbGllbnQ6OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgIChXZWJD
b3JlOjpNSU1FU25pZmZlclJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRTZW5kRGF0YSk6CisgICAg
ICAgIChXZWJDb3JlOjpNSU1FU25pZmZlclJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRSZWNlaXZl
UmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6TUlNRVNuaWZmZXJSZXNvdXJjZUhhbmRsZUNs
aWVudDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TUlNRVNuaWZmZXJSZXNv
dXJjZUhhbmRsZUNsaWVudDo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpN
SU1FU25pZmZlclJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRGYWlsKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1JTUVTbmlmZmVyUmVzb3VyY2VIYW5kbGVDbGllbnQ6Ondhc0Jsb2NrZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6TUlNRVNuaWZmZXJSZXNvdXJjZUhhbmRsZUNsaWVudDo6Y2Fubm90U2hvd1VS
TCk6CisgICAgICAgIChXZWJDb3JlOjpNSU1FU25pZmZlclJlc291cmNlSGFuZGxlQ2xpZW50Ojp3
aWxsQ2FjaGVSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpNSU1FU25pZmZlclJlc291cmNl
SGFuZGxlQ2xpZW50OjpzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSk6CisgICAgICAgIChXZWJD
b3JlOjpNSU1FU25pZmZlclJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRSZWNlaXZlQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6TUlNRVNuaWZmZXJSZXNvdXJjZUhh
bmRsZUNsaWVudDo6ZGlkQ2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6TUlNRVNuaWZmZXJSZXNvdXJjZUhhbmRsZUNsaWVudDo6cmVjZWl2ZWRDYW5jZWxs
YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TUlNRVNuaWZmZXJSZXNvdXJjZUhhbmRsZUNsaWVu
dDo6d2lsbFN0b3BCdWZmZXJpbmdEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVTbmlmZmVy
UmVzb3VyY2VIYW5kbGVDbGllbnQ6OnNob3VsZENhY2hlUmVzcG9uc2UpOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvTUlNRVNuaWZmZXJSZXNvdXJjZUhhbmRsZUNsaWVudC5oOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6Ok1JTUVTbmlmZmVyUmVzb3VyY2VIYW5kbGVDbGllbnQ6OmNsaWVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpNSU1FU25pZmZlclJlc291cmNlSGFuZGxlQ2xpZW50Ojpz
ZXRDbGllbnQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OmNsZWFyTUlNRVNuaWZmZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnNldENsaWVudCk6CisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VIYW5kbGVJbnRlcm5hbDo6UmVzb3VyY2VIYW5kbGVJbnRlcm5hbCk6CisKKzIwMDktMDUtMDYg
IEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKwogICAgICAgICBBZGRlZCBlbnRyeSBwb2ludHMgZm9yIE1JTUUgc25p
ZmZlci4KIAogICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9H
TlVtYWtlZmlsZS5hbSBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXggYmM3NzljNi4uZDUx
ZDU1YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQorKysgYi9XZWJDb3JlL0dO
VW1ha2VmaWxlLmFtCkBAIC0xNDU3LDYgKzE0NTcsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAog
CVdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5oIFwKIAlXZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvTUlNRVNuaWZmZXIuY3BwIFwKIAlXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
TUlNRVNuaWZmZXIuaCBcCisJV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL01JTUVTbmlmZmVyUmVz
b3VyY2VIYW5kbGVDbGllbnQuY3BwIFwKKwlXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTUlNRVNu
aWZmZXJSZXNvdXJjZUhhbmRsZUNsaWVudC5oIFwKIAlXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
TmV0d29ya1N0YXRlTm90aWZpZXIuY3BwIFwKIAlXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0
d29ya1N0YXRlTm90aWZpZXIuaCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Byb3RlY3Rp
b25TcGFjZS5jcHAgXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnBybyBiL1dlYkNvcmUv
V2ViQ29yZS5wcm8KaW5kZXggNjFlNTdlMy4uM2JkYzkxYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9X
ZWJDb3JlLnBybworKysgYi9XZWJDb3JlL1dlYkNvcmUucHJvCkBAIC05NjIsNiArOTYyLDcgQEAg
U09VUkNFUyArPSBcCiAgICAgcGxhdGZvcm0vbmV0d29yay9IVFRQSGVhZGVyTWFwLmNwcCBcCiAg
ICAgcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHAgXAogICAgIHBsYXRmb3JtL25ldHdv
cmsvTUlNRVNuaWZmZXIuY3BwIFwKKyAgICBwbGF0Zm9ybS9uZXR3b3JrL01JTUVTbmlmZmVyUmVz
b3VyY2VIYW5kbGVDbGllbnQuY3BwIFwKICAgICBwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdGF0
ZU5vdGlmaWVyLmNwcCBcCiAgICAgcGxhdGZvcm0vbmV0d29yay9Qcm90ZWN0aW9uU3BhY2UuY3Bw
IFwKICAgICBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlRXJyb3JCYXNlLmNwcCBcCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvV2ViQ29yZS9XZWJD
b3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCAxY2E4NDkxLi5kNjZlOGVkIDEwMDY0NAot
LS0gYS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1dlYkNvcmUv
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTUxNTcsNiArNTE1NywxNCBAQAogCQkJ
CQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxh
dGZvcm1cbmV0d29ya1xNSU1FU25pZmZlclJlc291cmNlSGFuZGxlQ2xpZW50LmNwcCINCisJCQkJ
CT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0
Zm9ybVxuZXR3b3JrXE1JTUVTbmlmZmVyUmVzb3VyY2VIYW5kbGVDbGllbnQuaCINCisJCQkJCT4N
CisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9y
bVxuZXR3b3JrXE5ldHdvcmtTdGF0ZU5vdGlmaWVyLmNwcCINCiAJCQkJCT4NCiAJCQkJPC9GaWxl
Pg0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZTgxM2Zi
NC4uNjQwZGZiNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTIxMjEsNiArMjEyMSw4IEBACiAJCTkzRjlCN0EwMEJBNjAzMjYwMDg1NDA2NCAvKiBKU0NE
QVRBU2VjdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5M0Y5Qjc5RTBCQTYwMzI2MDA4NTQwNjQgLyogSlNDREFUQVNlY3Rpb24uY3BwICovOyB9
OwogCQk5M0Y5QjdBMTBCQTYwMzI2MDA4NTQwNjQgLyogSlNDREFUQVNlY3Rpb24uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjlCNzlGMEJBNjAzMjYw
MDg1NDA2NCAvKiBKU0NEQVRBU2VjdGlvbi5oICovOyB9OwogCQk5M0ZEQUZDQTBCMTEzMDc0MDBF
Mjc0NkYgLyogRWRpdG9ySW5zZXJ0QWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5M0ZEQUZDOTBCMTEzMDc0MDBFMjc0NkYgLyogRWRpdG9ySW5z
ZXJ0QWN0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJOTcxQzlBMjgwRkIyNTY0MzAwMjE4NTQ1IC8qIE1JTUVTbmlmZmVyUmVzb3VyY2VIYW5k
bGVDbGllbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTcxQzlBMjYwRkIyNTY0MzAwMjE4NTQ1IC8qIE1JTUVTbmlmZmVyUmVzb3VyY2VIYW5kbGVD
bGllbnQuY3BwICovOyB9OworCQk5NzFDOUEyOTBGQjI1NjQzMDAyMTg1NDUgLyogTUlNRVNuaWZm
ZXJSZXNvdXJjZUhhbmRsZUNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTcxQzlBMjcwRkIyNTY0MzAwMjE4NTQ1IC8qIE1JTUVTbmlmZmVyUmVz
b3VyY2VIYW5kbGVDbGllbnQuaCAqLzsgfTsKIAkJOTdFQUYyQzcwRkIyNDQ1RTAwREI0NDlGIC8q
IE1JTUVTbmlmZmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDk3RUFGMkM1MEZCMjQ0NUQwMERCNDQ5RiAvKiBNSU1FU25pZmZlci5jcHAgKi87IH07
CiAJCTk3RUFGMkM4MEZCMjQ0NUUwMERCNDQ5RiAvKiBNSU1FU25pZmZlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTdFQUYyQzYwRkIyNDQ1RTAwREI0
NDlGIC8qIE1JTUVTbmlmZmVyLmggKi87IH07CiAJCUExN0M4MTIyMEYyQTVDRjcwMDVEQUFFQiAv
KiBIVE1MRWxlbWVudEZhY3RvcnkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTE3QzgxMjAwRjJBNUNGNzAwNURBQUVCIC8qIEhUTUxFbGVtZW50RmFj
dG9yeS5jcHAgKi87IH07CkBAIC03MDIwLDYgKzcwMjIsOCBAQAogCQk5M0Y5Qjc5RTBCQTYwMzI2
MDA4NTQwNjQgLyogSlNDREFUQVNlY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNDREFUQVNlY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk5M0Y5Qjc5RjBCQTYwMzI2MDA4NTQwNjQgLyogSlNDREFUQVNlY3Rpb24uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNDREFUQVNlY3Rpb24uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJOTNGREFGQzkwQjExMzA3NDAwRTI3NDZGIC8qIEVkaXRvckluc2Vy
dEFjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRWRpdG9ySW5zZXJ0
QWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk3MUM5QTI2MEZCMjU2NDMw
MDIxODU0NSAvKiBNSU1FU25pZmZlclJlc291cmNlSGFuZGxlQ2xpZW50LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1JTUVTbmlmZmVyUmVzb3VyY2VIYW5kbGVDbGll
bnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5NzFDOUEyNzBGQjI1NjQzMDAy
MTg1NDUgLyogTUlNRVNuaWZmZXJSZXNvdXJjZUhhbmRsZUNsaWVudC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBNSU1FU25pZmZlclJlc291cmNlSGFuZGxlQ2xpZW50Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3RUFGMkM1MEZCMjQ0NUQwMERCNDQ5RiAvKiBN
SU1FU25pZmZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNSU1F
U25pZmZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3RUFGMkM2MEZCMjQ0
NUUwMERCNDQ5RiAvKiBNSU1FU25pZmZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBNSU1FU25pZmZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMTdDODEy
MDBGMkE1Q0Y3MDA1REFBRUIgLyogSFRNTEVsZW1lbnRGYWN0b3J5LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhUTUxFbGVtZW50RmFjdG9yeS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMDEwOCw2ICsxMDExMiw4IEBACiAJCQkJMUE3RkE2MTgw
RERBM0IzQTAwMjhGOEE1IC8qIE5ldHdvcmtTdGF0ZU5vdGlmaWVyLmggKi8sCiAJCQkJOTdFQUYy
QzUwRkIyNDQ1RDAwREI0NDlGIC8qIE1JTUVTbmlmZmVyLmNwcCAqLywKIAkJCQk5N0VBRjJDNjBG
QjI0NDVFMDBEQjQ0OUYgLyogTUlNRVNuaWZmZXIuaCAqLywKKwkJCQk5NzFDOUEyNjBGQjI1NjQz
MDAyMTg1NDUgLyogTUlNRVNuaWZmZXJSZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAgKi8sCisJCQkJ
OTcxQzlBMjcwRkIyNTY0MzAwMjE4NTQ1IC8qIE1JTUVTbmlmZmVyUmVzb3VyY2VIYW5kbGVDbGll
bnQuaCAqLywKIAkJCQk1MTRDNzY1RjBDRTkyM0ExMDA3RUYzQ0QgLyogUHJvdGVjdGlvblNwYWNl
LmNwcCAqLywKIAkJCQk1MTRDNzY2MDBDRTkyM0ExMDA3RUYzQ0QgLyogUHJvdGVjdGlvblNwYWNl
LmggKi8sCiAJCQkJOTM0RjcxM0QwRDVBNkYyODAwMDE4RDY5IC8qIFJlc291cmNlRXJyb3JCYXNl
LmNwcCAqLywKQEAgLTE2ODg3LDYgKzE2ODkzLDcgQEAKIAkJCQk1RDE1RTNBQzBGOUU2QUMxMDA5
RTBFM0YgLyogWE1MVG9rZW5pemVyU2NvcGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTM3NzRBQkE1
MEZBMjFFQjQwMEFEN0RFOSAvKiBPdmVybGFwVGVzdFJlcXVlc3RDbGllbnQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTk3RUFGMkM4MEZCMjQ0NUUwMERCNDQ5RiAvKiBNSU1FU25pZmZlci5oIGluIEhl
YWRlcnMgKi8sCisJCQkJOTcxQzlBMjkwRkIyNTY0MzAwMjE4NTQ1IC8qIE1JTUVTbmlmZmVyUmVz
b3VyY2VIYW5kbGVDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JE
ZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMTg5MDUsNiArMTg5MTIsNyBA
QAogCQkJCTdBNjc0QkRCMEY5RUJGNEUwMDZDRjA5OSAvKiBQYWdlR3JvdXBMb2FkRGVmZXJyZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUQxNUUzQUIwRjlFNkFDMTAwOUUwRTNGIC8qIFhNTFRv
a2VuaXplclNjb3BlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3RUFGMkM3MEZCMjQ0NUUwMERC
NDQ5RiAvKiBNSU1FU25pZmZlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk5NzFDOUEyODBGQjI1
NjQzMDAyMTg1NDUgLyogTUlNRVNuaWZmZXJSZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0g
MDsKIAkJfTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZVNvdXJjZXMuYmtsIGIvV2ViQ29y
ZS9XZWJDb3JlU291cmNlcy5ia2wKaW5kZXggYzljOTcyMC4uYzMwMWEwMSAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9XZWJDb3JlU291cmNlcy5ia2wKKysrIGIvV2ViQ29yZS9XZWJDb3JlU291cmNlcy5i
a2wKQEAgLTgyNiw2ICs4MjYsNyBAQCBUaGlzIGZpbGUgY29udGFpbnMgdGhlIGxpc3Qgb2YgZmls
ZXMgbmVlZGVkIHRvIGJ1aWxkIFdlYkNvcmUuCiAgICAgICAgIHBsYXRmb3JtL25ldHdvcmsvRm9y
bURhdGEuY3BwCiAgICAgICAgIHBsYXRmb3JtL25ldHdvcmsvRm9ybURhdGFCdWlsZGVyLmNwcAog
ICAgICAgICBwbGF0Zm9ybS9uZXR3b3JrL01JTUVTbmlmZmVyLmNwcAorICAgICAgICBwbGF0Zm9y
bS9uZXR3b3JrL01JTUVTbmlmZmVyUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwCiAgICAgICAgIHBs
YXRmb3JtL25ldHdvcmsvTmV0d29ya1N0YXRlTm90aWZpZXIuY3BwCiAgICAgICAgIHBsYXRmb3Jt
L25ldHdvcmsvUHJvdGVjdGlvblNwYWNlLmNwcAogICAgICAgICBwbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlRXJyb3JCYXNlLmNwcApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L01JTUVTbmlmZmVyUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL01JTUVTbmlmZmVyUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVjOGZlZGIKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvTUlNRVNuaWZmZXJSZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAKQEAg
LTAsMCArMSwxNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQWRhbSBCYXJ0aC4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
Ik1JTUVTbmlmZmVyUmVzb3VyY2VIYW5kbGVDbGllbnQuaCIKKworI2luY2x1ZGUgIk1JTUVTbmlm
ZmVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworTUlNRVNuaWZmZXJSZXNvdXJjZUhhbmRs
ZUNsaWVudDo6TUlNRVNuaWZmZXJSZXNvdXJjZUhhbmRsZUNsaWVudChSZXNvdXJjZUhhbmRsZUNs
aWVudCogY2xpZW50KQorICAgIDogbV9jbGllbnQoY2xpZW50KQoreworfQorCit2b2lkIE1JTUVT
bmlmZmVyUmVzb3VyY2VIYW5kbGVDbGllbnQ6OndpbGxTZW5kUmVxdWVzdChSZXNvdXJjZUhhbmRs
ZSogaGFuZGxlLCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmIHJlc3BvbnNlKQoreworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPndp
bGxTZW5kUmVxdWVzdChoYW5kbGUsIHJlcXVlc3QsIHJlc3BvbnNlKTsKK30KKwordm9pZCBNSU1F
U25pZmZlclJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRTZW5kRGF0YShSZXNvdXJjZUhhbmRsZSog
aGFuZGxlLCB1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcg
dG90YWxCeXRlc1RvQmVTZW50KQoreworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9jbGll
bnQtPmRpZFNlbmREYXRhKGhhbmRsZSwgYnl0ZXNTZW50LCB0b3RhbEJ5dGVzVG9CZVNlbnQpOwor
fQorCit2b2lkIE1JTUVTbmlmZmVyUmVzb3VyY2VIYW5kbGVDbGllbnQ6OmRpZFJlY2VpdmVSZXNw
b25zZShSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNw
b25zZSkKK3sKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT5kaWRSZWNpZXZl
UmVzcG9uc2UoaGFuZGxlLCByZXNwb25zZSk7CisKKyAgICBpZiAoIXNob3VsZFNuaWZmTUlNRVR5
cGUocmVzcG9uc2UudXJsKCksIHJlc3BvbnNlLm1pbWVUeXBlKCkpKSB7CisgICAgICAgIGhhbmRs
ZS0+Y2xlYXJNSU1FU25pZmZlcigpOworICAgICAgICAvLyBXQVJOSU5HOiBXZSBhcmUgcHJvYmFi
bHkgZGVsZXRlZCBhdCB0aGlzIHBvaW50LgorICAgIH0KK30KKwordm9pZCBNSU1FU25pZmZlclJl
c291cmNlSGFuZGxlQ2xpZW50OjpkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSogaGFuZGxl
LCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoLCBpbnQgbGVuZ3RoUmVjZWl2ZWQpCit7Cisg
ICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZURhdGEoaGFuZGxl
LCBkYXRhLCBsZW5ndGgsIGxlbmd0aFJlY2VpdmVkKTsKK30KKwordm9pZCBNSU1FU25pZmZlclJl
c291cmNlSGFuZGxlQ2xpZW50OjpkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlSGFuZGxlKiBoYW5k
bGUpCit7CisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+ZGlkRmluaXNoTG9h
ZGluZyhoYW5kbGUpOworfQorCit2b2lkIE1JTUVTbmlmZmVyUmVzb3VyY2VIYW5kbGVDbGllbnQ6
OmRpZEZhaWwoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJy
b3IpCit7CisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+ZGlkRmFpbChoYW5k
bGUsIGVycm9yKTsKK30KKwordm9pZCBNSU1FU25pZmZlclJlc291cmNlSGFuZGxlQ2xpZW50Ojp3
YXNCbG9ja2VkKFJlc291cmNlSGFuZGxlKiBoYW5kbGUpCit7CisgICAgaWYgKG1fY2xpZW50KQor
ICAgICAgICBtX2NsaWVudC0+d2FzQmxvY2tlZChoYW5kbGUpOworfQorCit2b2lkIE1JTUVTbmlm
ZmVyUmVzb3VyY2VIYW5kbGVDbGllbnQ6OmNhbm5vdFNob3dVUkwoUmVzb3VyY2VIYW5kbGUqIGhh
bmRsZSkKK3sKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT5jYW5ub3RTaG93
VVJMKGhhbmRsZSk7Cit9CisKK3ZvaWQgTUlNRVNuaWZmZXJSZXNvdXJjZUhhbmRsZUNsaWVudDo6
d2lsbENhY2hlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgQ2FjaGVTdG9yYWdlUG9s
aWN5JiBwb2xpY3kpCit7CisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+d2ls
bENhY2hlUmVzcG9uc2UoaGFuZGxlLCBwb2xpY3kpOworfQorCitib29sIE1JTUVTbmlmZmVyUmVz
b3VyY2VIYW5kbGVDbGllbnQ6OnNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKFJlc291cmNlSGFu
ZGxlKmhhbmRsZSkKK3sKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIHJldHVybiBtX2NsaWVu
dC0+c2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UoaGFuZGxlKTsKKworICAgIHJldHVybiBmYWxz
ZTsKK30KKwordm9pZCBNSU1FU25pZmZlclJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRSZWNlaXZl
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgY29uc3QgQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5nZSkKK3sKKyAgICBpZiAobV9jbGllbnQpCisg
ICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoaGFuZGxl
LCBjaGFsbGVuZ2UpOworfQorCit2b2lkIE1JTUVTbmlmZmVyUmVzb3VyY2VIYW5kbGVDbGllbnQ6
OmRpZENhbmNlbEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFJlc291cmNlSGFuZGxlKiBoYW5kbGUs
IGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UpCit7CisgICAgaWYgKG1f
Y2xpZW50KQorICAgICAgICBtX2NsaWVudC0+ZGlkQ2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UoaGFuZGxlLCBjaGFsbGVuZ2UpOworfQorCit2b2lkIE1JTUVTbmlmZmVyUmVzb3VyY2VIYW5k
bGVDbGllbnQ6OnJlY2VpdmVkQ2FuY2VsbGF0aW9uKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIGNv
bnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UpCit7CisgICAgaWYgKG1fY2xp
ZW50KQorICAgICAgICBtX2NsaWVudC0+cmVjZXZpZWRDYW5jZWxsYXRpb24oaGFuZGxlLCBjaGFs
bGVuZ2UpOworfQorCisjaWYgUExBVEZPUk0oTUFDKQorTlNDYWNoZWRVUkxSZXNwb25zZSogTUlN
RVNuaWZmZXJSZXNvdXJjZUhhbmRsZUNsaWVudDo6d2lsbENhY2hlUmVzcG9uc2UoUmVzb3VyY2VI
YW5kbGUqIGhhbmRsZSwgTlNDYWNoZWRVUkxSZXNwb25zZSogcmVzcG9uc2UpCit7CisgICAgaWYg
KG1fY2xpZW50KQorICAgICAgICByZXR1cm4gbV9jbGllbnQtPndpbGxDYWNoZVJlc3BvbnNlKGhh
bmRsZSwgcmVzcG9uc2UpOworCisgICAgcmV0dXJuIHJlc3BvbnNlOworfQorCit2b2lkIE1JTUVT
bmlmZmVyUmVzb3VyY2VIYW5kbGVDbGllbnQ6OndpbGxTdG9wQnVmZmVyaW5nRGF0YShSZXNvdXJj
ZUhhbmRsZSogaGFuZGxlLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQoreworICAgIGlm
IChtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPndpbGxTdG9wQnVmZmVyaW5nRGF0YShoYW5k
bGUsIGRhdGEsIGxlbmd0aCk7Cit9CisjZW5kaWYKKworI2lmIFVTRShDRk5FVFdPUkspCitib29s
IE1JTUVTbmlmZmVyUmVzb3VyY2VIYW5kbGVDbGllbnQ6OnNob3VsZENhY2hlUmVzcG9uc2UoUmVz
b3VyY2VIYW5kbGUqLCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIHJlc3BvbnNlKQoreworICAgIGlm
IChtX2NsaWVudCkKKyAgICAgICAgcmV0dXJuIG1fY2xpZW50LT5zaG91bGRDYWNoZVJlc3BvbnNl
KGhhbmRsZSwgcmVzcG9uc2UpOworCisgICAgcmV1dHJuIHRydWU7Cit9CisjZW5kaWYKKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvTUlNRVNuaWZmZXJSZXNvdXJjZUhhbmRsZUNsaWVudC5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL01JTUVTbmlmZmVyUmVzb3VyY2VIYW5kbGVDbGllbnQuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi44ZjQwYjQ5Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL01JTUVTbmlmZmVyUmVzb3VyY2VIYW5kbGVDbGllbnQuaApAQCAtMCww
ICsxLDY5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEFkYW0gQmFydGguICBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIE1JTUVTbmlmZmVyUmVzb3VyY2VIYW5kbGVD
bGllbnRfaAorI2RlZmluZSBNSU1FU25pZmZlclJlc291cmNlSGFuZGxlQ2xpZW50X2gKKworI2lu
Y2x1ZGUgIlJlc291cmNlSGFuZGxlQ2xpZW50LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
ICAgIGNsYXNzIE1JTUVTbmlmZmVyUmVzb3VyY2VIYW5kbGVDbGllbnQgOiBwdWJsaWMgUmVzb3Vy
Y2VIYW5kbGVDbGllbnQgeworICAgIHB1YmxpYzoKKyAgICAgICAgLy8gVGhpcyBjbGFzcyB3aWxs
IGZvcndhcmQgYWxsIGV2ZW50cyB0byB8Y2xpZW50fC4KKyAgICAgICAgTUlNRVNuaWZmZXJSZXNv
dXJjZUhhbmRsZUNsaWVudChSZXNvdXJjZUhhbmRsZUNsaWVudCogY2xpZW50KTsKKworICAgICAg
ICBSZXNvdXJjZUhhbmRsZUNsaWVudCogY2xpZW50KCkgY29uc3QgeyByZXR1cm4gbV9jbGllbnQ7
IH0KKyAgICAgICAgdm9pZCBzZXRDbGllbnQoUmVzb3VyY2VIYW5kbGVDbGllbnQqIGNsaWVudCkg
eyBtX2NsaWVudCA9IGNsaWVudDsgfQorCisgICAgICAgIC8vIFJlc291cmNlSGFuZGxlQ2xpZW50
IG1ldGhvZHMuCisgICAgICAgIHZpcnR1YWwgdm9pZCB3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VI
YW5kbGUqLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CisgICAg
ICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0YShSZXNvdXJjZUhhbmRsZSosIHVuc2lnbmVkIGxv
bmcgbG9uZywgdW5zaWduZWQgbG9uZyBsb25nKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJl
Y2VpdmVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsK
KyAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlKiwgY29u
c3QgY2hhciosIGludCwgaW50KTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRp
bmcoUmVzb3VyY2VIYW5kbGUqKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoUmVzb3Vy
Y2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CisgICAgICAgIHZpcnR1YWwgdm9pZCB3
YXNCbG9ja2VkKFJlc291cmNlSGFuZGxlKik7CisgICAgICAgIHZpcnR1YWwgdm9pZCBjYW5ub3RT
aG93VVJMKFJlc291cmNlSGFuZGxlKik7CisgICAgICAgIHZpcnR1YWwgdm9pZCB3aWxsQ2FjaGVS
ZXNwb25zZShSZXNvdXJjZUhhbmRsZSosIENhY2hlU3RvcmFnZVBvbGljeSYpOworICAgICAgICB2
aXJ0dWFsIGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UoUmVzb3VyY2VIYW5kbGUqKTsK
KyAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShS
ZXNvdXJjZUhhbmRsZSosIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJik7CisgICAgICAg
IHZpcnR1YWwgdm9pZCBkaWRDYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShSZXNvdXJjZUhh
bmRsZSosIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJik7CisgICAgICAgIHZpcnR1YWwg
dm9pZCByZWNlaXZlZENhbmNlbGxhdGlvbihSZXNvdXJjZUhhbmRsZSosIGNvbnN0IEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlJik7CisjaWYgUExBVEZPUk0oTUFDKQorICAgICAgICB2aXJ0dWFsIE5T
Q2FjaGVkVVJMUmVzcG9uc2UqIHdpbGxDYWNoZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiwgTlND
YWNoZWRVUkxSZXNwb25zZSopOworICAgICAgICB2aXJ0dWFsIHZvaWQgd2lsbFN0b3BCdWZmZXJp
bmdEYXRhKFJlc291cmNlSGFuZGxlKiwgY29uc3QgY2hhciosIGludCk7CisjZW5kaWYKKyNpZiBV
U0UoQ0ZORVRXT1JLKQorICAgICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2FjaGVSZXNwb25zZShS
ZXNvdXJjZUhhbmRsZSosIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgcmVzcG9uc2UpOworI2VuZGlm
CisKKyAgICBwcml2YXRlOgorICAgICAgICBSZXNvdXJjZUhhbmRsZUNsaWVudCogbV9jbGllbnQ7
CisgICAgfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gTUlNRVNuaWZm
ZXJSZXNvdXJjZUhhbmRsZUNsaWVudF9oCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvUmVzb3VyY2VIYW5kbGUuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291
cmNlSGFuZGxlLmNwcAppbmRleCBhNzMyMGI5Li4yZWVmZWQzIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5jcHAKQEAgLTg2LDYgKzg2LDExIEBAIHZvaWQgUmVz
b3VyY2VIYW5kbGU6OmZpcmVGYWlsdXJlKFRpbWVyPFJlc291cmNlSGFuZGxlPiopCiAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKK3ZvaWQgUmVzb3VyY2VIYW5kbGU6OmNsZWFyTUlNRVNu
aWZmZXIoKSB7CisgICAgZC0+bV9jbGllbnQgPSBkLT5tX21pbWVTbmlmZmVyLT5jbGllbnQoKTsK
KyAgICBkLT5tX21pbWVTbmlmZmVyID0gMDsKK30KKwogUmVzb3VyY2VIYW5kbGVDbGllbnQqIFJl
c291cmNlSGFuZGxlOjpjbGllbnQoKSBjb25zdAogewogICAgIHJldHVybiBkLT5tX2NsaWVudDsK
QEAgLTkzLDcgKzk4LDEwIEBAIFJlc291cmNlSGFuZGxlQ2xpZW50KiBSZXNvdXJjZUhhbmRsZTo6
Y2xpZW50KCkgY29uc3QKIAogdm9pZCBSZXNvdXJjZUhhbmRsZTo6c2V0Q2xpZW50KFJlc291cmNl
SGFuZGxlQ2xpZW50KiBjbGllbnQpCiB7Ci0gICAgZC0+bV9jbGllbnQgPSBjbGllbnQ7CisgICAg
aWYgKGQtPm1fbWltZVNuaWZmZXIpCisgICAgICAgIGQtPm1fbWltZVNuaWZmZXItPnNldENsaWVu
dChjbGllbnQpOworICAgIGVsc2UKKyAgICAgICAgZC0+bV9jbGllbnQgPSBjbGllbnQ7CiB9CiAK
IGNvbnN0IFJlc291cmNlUmVxdWVzdCYgUmVzb3VyY2VIYW5kbGU6OnJlcXVlc3QoKSBjb25zdApk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmggYi9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaAppbmRleCBiYWY0MThiLi4z
MWVjMDIzIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5k
bGUuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaApAQCAt
MTc1LDYgKzE3NSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFyQXV0aGVudGljYXRpb24oKTsK
ICAgICB2b2lkIGNhbmNlbCgpOwogCisgICAgdm9pZCBjbGVhck1JTUVTbmlmZmVyKCk7CisKICAg
ICAvLyBUaGUgY2xpZW50IG1heSBiZSAwLCBpbiB3aGljaCBjYXNlIG5vIGNhbGxiYWNrcyB3aWxs
IGJlIG1hZGUuCiAgICAgUmVzb3VyY2VIYW5kbGVDbGllbnQqIGNsaWVudCgpIGNvbnN0OwogICAg
IHZvaWQgc2V0Q2xpZW50KFJlc291cmNlSGFuZGxlQ2xpZW50Kik7CmRpZmYgLS1naXQgYS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oIGIvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaAppbmRleCA3OWFmNzVjLi4z
ZGRlNWJmIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5k
bGVJbnRlcm5hbC5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRs
ZUludGVybmFsLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNpZm5kZWYgUmVzb3VyY2VIYW5kbGVJbnRl
cm5hbF9oCiAjZGVmaW5lIFJlc291cmNlSGFuZGxlSW50ZXJuYWxfaAogCisjaW5jbHVkZSAiTUlN
RVNuaWZmZXJSZXNvdXJjZUhhbmRsZUNsaWVudC5oIgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxl
LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UuaCIKQEAgLTczLDEzICs3NCwxMSBAQCBjbGFzcyBOU1VSTENvbm5lY3Rpb247
CiAvLyBXZWJDb3JlUmVzb3VyY2VMb2FkZXJJbXAgd2hpY2ggYXZvaWRzIGRvaW5nIHdvcmsgaW4g
ZGVhbGxvYykuCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICBjbGFzcyBSZXNvdXJjZUhhbmRs
ZUNsaWVudDsKIAogICAgIGNsYXNzIFJlc291cmNlSGFuZGxlSW50ZXJuYWwgOiBOb25jb3B5YWJs
ZSB7CiAgICAgcHVibGljOgogICAgICAgICBSZXNvdXJjZUhhbmRsZUludGVybmFsKFJlc291cmNl
SGFuZGxlKiBsb2FkZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzb3VyY2VI
YW5kbGVDbGllbnQqIGMsIGJvb2wgZGVmZXJzTG9hZGluZywgYm9vbCBzaG91bGRDb250ZW50U25p
ZmYsIGJvb2wgbWlnaHREb3dubG9hZEZyb21IYW5kbGUpCi0gICAgICAgICAgICA6IG1fY2xpZW50
KGMpCi0gICAgICAgICAgICAsIG1fcmVxdWVzdChyZXF1ZXN0KQorICAgICAgICAgICAgOiBtX3Jl
cXVlc3QocmVxdWVzdCkKICAgICAgICAgICAgICwgc3RhdHVzKDApCiAgICAgICAgICAgICAsIG1f
ZGVmZXJzTG9hZGluZyhkZWZlcnNMb2FkaW5nKQogICAgICAgICAgICAgLCBtX3Nob3VsZENvbnRl
bnRTbmlmZihzaG91bGRDb250ZW50U25pZmYpCkBAIC0xMzMsNiArMTMyLDkgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogI2VuZGlmCiAgICAgICAgICAgICAsIG1fZmFpbHVyZVRpbWVyKGxvYWRlciwg
JlJlc291cmNlSGFuZGxlOjpmaXJlRmFpbHVyZSkKICAgICAgICAgeworICAgICAgICAgICAgbV9t
aW1lU25pZmZlciA9IG5ldyBNSU1FU25pZmZlclJlc291cmNlSGFuZGxlQ2xpZW50KGMpOworICAg
ICAgICAgICAgbV9jbGllbnQgPSBtX21pbWVTbmlmZmVyLmdldCgpOworCiAgICAgICAgICAgICBj
b25zdCBLVVJMJiB1cmwgPSBtX3JlcXVlc3QudXJsKCk7CiAgICAgICAgICAgICBtX3VzZXIgPSB1
cmwudXNlcigpOwogICAgICAgICAgICAgbV9wYXNzID0gdXJsLnBhc3MoKTsKQEAgLTE0OSw3ICsx
NTEsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIC8vIFN1Z2dlc3RlZCBjcmVkZW50
aWFscyBmb3IgdGhlIGN1cnJlbnQgcmVkaXJlY3Rpb24gc3RlcC4KICAgICAgICAgU3RyaW5nIG1f
dXNlcjsKICAgICAgICAgU3RyaW5nIG1fcGFzczsKLSAgICAgICAgCisKKyAgICAgICAgT3duUHRy
PE1JTUVTbmlmZmVyUmVzb3VyY2VIYW5kbGVDbGllbnQ+IG1fbWltZVNuaWZmZXI7CisKICAgICAg
ICAgaW50IHN0YXR1czsKIAogICAgICAgICBib29sIG1fZGVmZXJzTG9hZGluZzsKLS0gCjEuNi4w
LjEKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>30074</attachid>
            <date>2009-05-06 16:53:10 -0700</date>
            <delta_ts>2009-05-06 18:38:32 -0700</delta_ts>
            <desc>Step 2: Hook sniffer into network stack (improved)</desc>
            <filename>sniffer-02.patch</filename>
            <type>text/plain</type>
            <size>31460</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">RnJvbSBiNjA1M2ExYmZiZGY4Y2MwZjNjMTZhYTIwZmEwZDhkNjY5MDcxOGQ3IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBZGFtIEJhcnRoIDxhYmFydGhAYXJjdGljYS5sb2NhbD4KRGF0
ZTogV2VkLCA2IE1heSAyMDA5IDE2OjM3OjU5IC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gMjAwOS0w
NS0wNiAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgoKICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KCiAgICAgICAgSG9vayBNSU1FIHNuaWZmZXIgaW50byBuZXR3b3Jr
IHN0YWNrLiAgVGhlIHNuaWZmZXIgc3RpbGwgZG9lc24ndAogICAgICAgIGRvIGFueXRoaW5nIHll
dC4KCiAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKICAgICAgICAqIFdlYkNvcmUucHJvOgogICAg
ICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CiAgICAgICAgKiBXZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CiAgICAgICAgKiBXZWJDb3JlU291cmNlcy5ia2w6CiAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL01JTUVTbmlmZmVyUmVzb3VyY2VIYW5kbGVDbGllbnQu
Y3BwOiBBZGRlZC4KICAgICAgICAoV2ViQ29yZTo6TUlNRVNuaWZmZXJSZXNvdXJjZUhhbmRsZUNs
aWVudDo6TUlNRVNuaWZmZXJSZXNvdXJjZUhhbmRsZUNsaWVudCk6CiAgICAgICAgKFdlYkNvcmU6
Ok1JTUVTbmlmZmVyUmVzb3VyY2VIYW5kbGVDbGllbnQ6OndpbGxTZW5kUmVxdWVzdCk6CiAgICAg
ICAgKFdlYkNvcmU6Ok1JTUVTbmlmZmVyUmVzb3VyY2VIYW5kbGVDbGllbnQ6OmRpZFNlbmREYXRh
KToKICAgICAgICAoV2ViQ29yZTo6TUlNRVNuaWZmZXJSZXNvdXJjZUhhbmRsZUNsaWVudDo6ZGlk
UmVjZWl2ZVJlc3BvbnNlKToKICAgICAgICAoV2ViQ29yZTo6TUlNRVNuaWZmZXJSZXNvdXJjZUhh
bmRsZUNsaWVudDo6ZGlkUmVjZWl2ZURhdGEpOgogICAgICAgIChXZWJDb3JlOjpNSU1FU25pZmZl
clJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRGaW5pc2hMb2FkaW5nKToKICAgICAgICAoV2ViQ29y
ZTo6TUlNRVNuaWZmZXJSZXNvdXJjZUhhbmRsZUNsaWVudDo6ZGlkRmFpbCk6CiAgICAgICAgKFdl
YkNvcmU6Ok1JTUVTbmlmZmVyUmVzb3VyY2VIYW5kbGVDbGllbnQ6Ondhc0Jsb2NrZWQpOgogICAg
ICAgIChXZWJDb3JlOjpNSU1FU25pZmZlclJlc291cmNlSGFuZGxlQ2xpZW50OjpjYW5ub3RTaG93
VVJMKToKICAgICAgICAoV2ViQ29yZTo6TUlNRVNuaWZmZXJSZXNvdXJjZUhhbmRsZUNsaWVudDo6
d2lsbENhY2hlUmVzcG9uc2UpOgogICAgICAgIChXZWJDb3JlOjpNSU1FU25pZmZlclJlc291cmNl
SGFuZGxlQ2xpZW50OjpzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSk6CiAgICAgICAgKFdlYkNv
cmU6Ok1JTUVTbmlmZmVyUmVzb3VyY2VIYW5kbGVDbGllbnQ6OmRpZFJlY2VpdmVBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSk6CiAgICAgICAgKFdlYkNvcmU6Ok1JTUVTbmlmZmVyUmVzb3VyY2VIYW5k
bGVDbGllbnQ6OmRpZENhbmNlbEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKToKICAgICAgICAoV2Vi
Q29yZTo6TUlNRVNuaWZmZXJSZXNvdXJjZUhhbmRsZUNsaWVudDo6cmVjZWl2ZWRDYW5jZWxsYXRp
b24pOgogICAgICAgIChXZWJDb3JlOjpNSU1FU25pZmZlclJlc291cmNlSGFuZGxlQ2xpZW50Ojp3
aWxsU3RvcEJ1ZmZlcmluZ0RhdGEpOgogICAgICAgIChXZWJDb3JlOjpNSU1FU25pZmZlclJlc291
cmNlSGFuZGxlQ2xpZW50OjpzaG91bGRDYWNoZVJlc3BvbnNlKToKICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvTUlNRVNuaWZmZXJSZXNvdXJjZUhhbmRsZUNsaWVudC5oOiBBZGRlZC4KICAgICAg
ICAoV2ViQ29yZTo6TUlNRVNuaWZmZXJSZXNvdXJjZUhhbmRsZUNsaWVudDo6Y2xpZW50KToKICAg
ICAgICAoV2ViQ29yZTo6TUlNRVNuaWZmZXJSZXNvdXJjZUhhbmRsZUNsaWVudDo6c2V0Q2xpZW50
KToKICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuY3BwOgogICAgICAg
IChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6Y2xlYXJNSU1FU25pZmZlcik6CiAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlSGFuZGxlOjpzZXRDbGllbnQpOgogICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9SZXNvdXJjZUhhbmRsZS5oOgogICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJj
ZUhhbmRsZUludGVybmFsLmg6CiAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlSW50ZXJu
YWw6OlJlc291cmNlSGFuZGxlSW50ZXJuYWwpOgotLS0KIFdlYkNvcmUvQ2hhbmdlTG9nICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAzOSArKysrKysKIFdlYkNvcmUvR05VbWFr
ZWZpbGUuYW0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgNCArCiBXZWJDb3JlL1dl
YkNvcmUucHJvICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDIgKwogV2ViQ29y
ZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiAgICAgICAgICAgICAgfCAgIDE2ICsrKwog
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogICAgICAgICAgfCAgIDE2
ICsrKwogV2ViQ29yZS9XZWJDb3JlU291cmNlcy5ia2wgICAgICAgICAgICAgICAgICAgICAgICAg
fCAgICAyICsKIC4uLi9uZXR3b3JrL0ZvcndhcmRpbmdSZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAg
ICAgIHwgIDE0MyArKysrKysrKysrKysrKysrKysrKwogLi4uL25ldHdvcmsvRm9yd2FyZGluZ1Jl
c291cmNlSGFuZGxlQ2xpZW50LmggICAgICAgfCAgIDY5ICsrKysrKysrKysKIC4uLi9uZXR3b3Jr
L01JTUVTbmlmZmVyUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwICAgIHwgICA0NCArKysrKysKIC4u
Li9uZXR3b3JrL01JTUVTbmlmZmVyUmVzb3VyY2VIYW5kbGVDbGllbnQuaCAgICAgIHwgICA0MyAr
KysrKysKIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5jcHAgICAgICAg
IHwgICAxMCArKy0KIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oICAg
ICAgICAgIHwgICAgMiArCiBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJ
bnRlcm5hbC5oICB8ICAgMTIgKy0KIDEzIGZpbGVzIGNoYW5nZWQsIDM5NyBpbnNlcnRpb25zKCsp
LCA1IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IFdlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9Gb3J3YXJkaW5nUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwCiBjcmVhdGUgbW9kZSAxMDA2
NDQgV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0ZvcndhcmRpbmdSZXNvdXJjZUhhbmRsZUNsaWVu
dC5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL01JTUVTbmlm
ZmVyUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL01JTUVTbmlmZmVyUmVzb3VyY2VIYW5kbGVDbGllbnQuaAoKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTBhMjgy
Ni4uMzNlNGFlZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9D
aGFuZ2VMb2cKQEAgLTIsNiArMiw0NSBAQAogCiAgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgogCisgICAgICAgIEhvb2sgTUlNRSBzbmlmZmVyIGludG8gbmV0d29yayBzdGFjay4g
IFRoZSBzbmlmZmVyIHN0aWxsIGRvZXNuJ3QKKyAgICAgICAgZG8gYW55dGhpbmcgeWV0LgorCisg
ICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICogV2ViQ29yZS5wcm86CisgICAgICAg
ICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYkNvcmVTb3VyY2VzLmJrbDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL01JTUVTbmlmZmVyUmVzb3VyY2VIYW5kbGVDbGllbnQu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVTbmlmZmVyUmVzb3VyY2VIYW5kbGVD
bGllbnQ6Ok1JTUVTbmlmZmVyUmVzb3VyY2VIYW5kbGVDbGllbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6TUlNRVNuaWZmZXJSZXNvdXJjZUhhbmRsZUNsaWVudDo6d2lsbFNlbmRSZXF1ZXN0KToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1JTUVTbmlmZmVyUmVzb3VyY2VIYW5kbGVDbGllbnQ6OmRpZFNlbmRE
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVTbmlmZmVyUmVzb3VyY2VIYW5kbGVDbGllbnQ6
OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpNSU1FU25pZmZlclJlc291
cmNlSGFuZGxlQ2xpZW50OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpNSU1F
U25pZmZlclJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1JTUVTbmlmZmVyUmVzb3VyY2VIYW5kbGVDbGllbnQ6OmRpZEZhaWwpOgorICAg
ICAgICAoV2ViQ29yZTo6TUlNRVNuaWZmZXJSZXNvdXJjZUhhbmRsZUNsaWVudDo6d2FzQmxvY2tl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpNSU1FU25pZmZlclJlc291cmNlSGFuZGxlQ2xpZW50Ojpj
YW5ub3RTaG93VVJMKToKKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVTbmlmZmVyUmVzb3VyY2VIYW5k
bGVDbGllbnQ6OndpbGxDYWNoZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVTbmlm
ZmVyUmVzb3VyY2VIYW5kbGVDbGllbnQ6OnNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1JTUVTbmlmZmVyUmVzb3VyY2VIYW5kbGVDbGllbnQ6OmRpZFJlY2Vp
dmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpNSU1FU25pZmZl
clJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRDYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6
CisgICAgICAgIChXZWJDb3JlOjpNSU1FU25pZmZlclJlc291cmNlSGFuZGxlQ2xpZW50OjpyZWNl
aXZlZENhbmNlbGxhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNSU1FU25pZmZlclJlc291cmNl
SGFuZGxlQ2xpZW50Ojp3aWxsU3RvcEJ1ZmZlcmluZ0RhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
TUlNRVNuaWZmZXJSZXNvdXJjZUhhbmRsZUNsaWVudDo6c2hvdWxkQ2FjaGVSZXNwb25zZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9NSU1FU25pZmZlclJlc291cmNlSGFuZGxlQ2xpZW50
Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TUlNRVNuaWZmZXJSZXNvdXJjZUhhbmRsZUNs
aWVudDo6Y2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVTbmlmZmVyUmVzb3VyY2VIYW5k
bGVDbGllbnQ6OnNldENsaWVudCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJj
ZUhhbmRsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6Y2xlYXJNSU1F
U25pZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6c2V0Q2xpZW50KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmg6CisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmg6CisgICAgICAgIChXZWJD
b3JlOjpSZXNvdXJjZUhhbmRsZUludGVybmFsOjpSZXNvdXJjZUhhbmRsZUludGVybmFsKToKKwor
MjAwOS0wNS0wNiAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCiAgICAgICAgIEFkZGVkIGVudHJ5IHBvaW50cyBm
b3IgTUlNRSBzbmlmZmVyLgogCiAgICAgICAgICogR05VbWFrZWZpbGUuYW06CmRpZmYgLS1naXQg
YS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQppbmRleCBi
Yzc3OWM2Li4yZDdiNzgzIDEwMDY0NAotLS0gYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCisrKyBi
L1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KQEAgLTE0NTEsMTIgKzE0NTEsMTYgQEAgd2ViY29yZV9z
b3VyY2VzICs9IFwKIAlXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaCBcCiAJV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhQnVpbGRlci5jcHAgXAogCVdlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9Gb3JtRGF0YUJ1aWxkZXIuaCBcCisJV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0ZvcndhcmRpbmdSZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAgXAorCVdlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9Gb3J3YXJkaW5nUmVzb3VyY2VIYW5kbGVDbGllbnQuaCBcCiAJV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0hUVFBIZWFkZXJNYXAuaCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0hUVFBIZWFkZXJNYXAuY3BwIFwKIAlXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBh
cnNlcnMuY3BwIFwKIAlXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuaCBcCiAJ
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL01JTUVTbmlmZmVyLmNwcCBcCiAJV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL01JTUVTbmlmZmVyLmggXAorCVdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9N
SU1FU25pZmZlclJlc291cmNlSGFuZGxlQ2xpZW50LmNwcCBcCisJV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL01JTUVTbmlmZmVyUmVzb3VyY2VIYW5kbGVDbGllbnQuaCBcCiAJV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL05ldHdvcmtTdGF0ZU5vdGlmaWVyLmNwcCBcCiAJV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL05ldHdvcmtTdGF0ZU5vdGlmaWVyLmggXAogCVdlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9Qcm90ZWN0aW9uU3BhY2UuY3BwIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5w
cm8gYi9XZWJDb3JlL1dlYkNvcmUucHJvCmluZGV4IDYxZTU3ZTMuLmY5ZGQyYTggMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvV2ViQ29yZS5wcm8KKysrIGIvV2ViQ29yZS9XZWJDb3JlLnBybwpAQCAtOTU5
LDkgKzk1OSwxMSBAQCBTT1VSQ0VTICs9IFwKICAgICBwbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRp
YWwuY3BwIFwKICAgICBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcCBcCiAgICAgcGxhdGZv
cm0vbmV0d29yay9Gb3JtRGF0YUJ1aWxkZXIuY3BwIFwKKyAgICBwbGF0Zm9ybS9uZXR3b3JrL0Zv
cndhcmRpbmdSZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAgXAogICAgIHBsYXRmb3JtL25ldHdvcmsv
SFRUUEhlYWRlck1hcC5jcHAgXAogICAgIHBsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3Bw
IFwKICAgICBwbGF0Zm9ybS9uZXR3b3JrL01JTUVTbmlmZmVyLmNwcCBcCisgICAgcGxhdGZvcm0v
bmV0d29yay9NSU1FU25pZmZlclJlc291cmNlSGFuZGxlQ2xpZW50LmNwcCBcCiAgICAgcGxhdGZv
cm0vbmV0d29yay9OZXR3b3JrU3RhdGVOb3RpZmllci5jcHAgXAogICAgIHBsYXRmb3JtL25ldHdv
cmsvUHJvdGVjdGlvblNwYWNlLmNwcCBcCiAgICAgcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUVy
cm9yQmFzZS5jcHAgXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3Jl
LnZjcHJvaiBiL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggMWNh
ODQ5MS4uODI0ZWI0MCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3Jl
LnZjcHJvagorKysgYi9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC01
MTMzLDYgKzUxMzMsMTQgQEAKIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQorCQkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXG5ldHdvcmtcRm9yd2FyZGluZ1Jlc291cmNlSGFu
ZGxlQ2xpZW50LmNwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJ
UmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxuZXR3b3JrXEZvcndhcmRpbmdSZXNvdXJjZUhhbmRs
ZUNsaWVudC5oIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQogCQkJCQlSZWxh
dGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXG5ldHdvcmtcSFRUUEhlYWRlck1hcC5jcHAiDQogCQkJCQk+
DQogCQkJCTwvRmlsZT4NCkBAIC01MTU3LDYgKzUxNjUsMTQgQEAKIAkJCQkJPg0KIAkJCQk8L0Zp
bGU+DQogCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXG5ldHdvcmtc
TUlNRVNuaWZmZXJSZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAiDQorCQkJCQk+DQorCQkJCTwvRmls
ZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cbmV0d29ya1xN
SU1FU25pZmZlclJlc291cmNlSGFuZGxlQ2xpZW50LmgiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4N
CisJCQkJPEZpbGUNCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cbmV0d29ya1xOZXR3
b3JrU3RhdGVOb3RpZmllci5jcHAiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCmRpZmYgLS1naXQg
YS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGU4MTNmYjQuLjEzNjc3NTggMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMTIxLDYgKzIx
MjEsMTAgQEAKIAkJOTNGOUI3QTAwQkE2MDMyNjAwODU0MDY0IC8qIEpTQ0RBVEFTZWN0aW9uLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjlCNzlF
MEJBNjAzMjYwMDg1NDA2NCAvKiBKU0NEQVRBU2VjdGlvbi5jcHAgKi87IH07CiAJCTkzRjlCN0Ex
MEJBNjAzMjYwMDg1NDA2NCAvKiBKU0NEQVRBU2VjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNGOUI3OUYwQkE2MDMyNjAwODU0MDY0IC8qIEpT
Q0RBVEFTZWN0aW9uLmggKi87IH07CiAJCTkzRkRBRkNBMEIxMTMwNzQwMEUyNzQ2RiAvKiBFZGl0
b3JJbnNlcnRBY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDkzRkRBRkM5MEIxMTMwNzQwMEUyNzQ2RiAvKiBFZGl0b3JJbnNlcnRBY3Rpb24uaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5NzFDOUEy
ODBGQjI1NjQzMDAyMTg1NDUgLyogTUlNRVNuaWZmZXJSZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzFDOUEyNjBG
QjI1NjQzMDAyMTg1NDUgLyogTUlNRVNuaWZmZXJSZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAgKi87
IH07CisJCTk3MUM5QTI5MEZCMjU2NDMwMDIxODU0NSAvKiBNSU1FU25pZmZlclJlc291cmNlSGFu
ZGxlQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5NzFDOUEyNzBGQjI1NjQzMDAyMTg1NDUgLyogTUlNRVNuaWZmZXJSZXNvdXJjZUhhbmRsZUNs
aWVudC5oICovOyB9OworCQk5Nzc1OEJFMzBGQjI1OUNFMDBFMEZBNjYgLyogRm9yd2FyZGluZ1Jl
c291cmNlSGFuZGxlQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDk3NzU4QkUxMEZCMjU5Q0UwMEUwRkE2NiAvKiBGb3J3YXJkaW5nUmVzb3Vy
Y2VIYW5kbGVDbGllbnQuY3BwICovOyB9OworCQk5Nzc1OEJFNDBGQjI1OUNFMDBFMEZBNjYgLyog
Rm9yd2FyZGluZ1Jlc291cmNlSGFuZGxlQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5Nzc1OEJFMjBGQjI1OUNFMDBFMEZBNjYgLyogRm9yd2Fy
ZGluZ1Jlc291cmNlSGFuZGxlQ2xpZW50LmggKi87IH07CiAJCTk3RUFGMkM3MEZCMjQ0NUUwMERC
NDQ5RiAvKiBNSU1FU25pZmZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5N0VBRjJDNTBGQjI0NDVEMDBEQjQ0OUYgLyogTUlNRVNuaWZmZXIuY3Bw
ICovOyB9OwogCQk5N0VBRjJDODBGQjI0NDVFMDBEQjQ0OUYgLyogTUlNRVNuaWZmZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3RUFGMkM2MEZCMjQ0
NUUwMERCNDQ5RiAvKiBNSU1FU25pZmZlci5oICovOyB9OwogCQlBMTdDODEyMjBGMkE1Q0Y3MDA1
REFBRUIgLyogSFRNTEVsZW1lbnRGYWN0b3J5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExN0M4MTIwMEYyQTVDRjcwMDVEQUFFQiAvKiBIVE1MRWxl
bWVudEZhY3RvcnkuY3BwICovOyB9OwpAQCAtNzAyMCw2ICs3MDI0LDEwIEBACiAJCTkzRjlCNzlF
MEJBNjAzMjYwMDg1NDA2NCAvKiBKU0NEQVRBU2VjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBKU0NEQVRBU2VjdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTkzRjlCNzlGMEJBNjAzMjYwMDg1NDA2NCAvKiBKU0NEQVRBU2VjdGlvbi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0NEQVRBU2VjdGlvbi5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0ZEQUZDOTBCMTEzMDc0MDBFMjc0NkYgLyogRWRp
dG9ySW5zZXJ0QWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFZGl0
b3JJbnNlcnRBY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTcxQzlBMjYw
RkIyNTY0MzAwMjE4NTQ1IC8qIE1JTUVTbmlmZmVyUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTUlNRVNuaWZmZXJSZXNvdXJjZUhh
bmRsZUNsaWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk3MUM5QTI3MEZC
MjU2NDMwMDIxODU0NSAvKiBNSU1FU25pZmZlclJlc291cmNlSGFuZGxlQ2xpZW50LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1JTUVTbmlmZmVyUmVzb3VyY2VIYW5kbGVDbGll
bnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTc3NThCRTEwRkIyNTlDRTAwRTBG
QTY2IC8qIEZvcndhcmRpbmdSZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGb3J3YXJkaW5nUmVzb3VyY2VIYW5kbGVDbGllbnQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5Nzc1OEJFMjBGQjI1OUNFMDBFMEZBNjYg
LyogRm9yd2FyZGluZ1Jlc291cmNlSGFuZGxlQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEZvcndhcmRpbmdSZXNvdXJjZUhhbmRsZUNsaWVudC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk5N0VBRjJDNTBGQjI0NDVEMDBEQjQ0OUYgLyogTUlNRVNuaWZm
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTUlNRVNuaWZmZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5N0VBRjJDNjBGQjI0NDVFMDBEQjQ0
OUYgLyogTUlNRVNuaWZmZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTUlN
RVNuaWZmZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTE3QzgxMjAwRjJBNUNG
NzAwNURBQUVCIC8qIEhUTUxFbGVtZW50RmFjdG9yeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBIVE1MRWxlbWVudEZhY3RvcnkuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMTAxMDAsNiArMTAxMDgsOCBAQAogCQkJCTUxNEM3NjVCMENFOTIzQTEw
MDdFRjNDRCAvKiBGb3JtRGF0YS5oICovLAogCQkJCTA4NUI5MkI4MEVGREU3M0QwMEU2MTIzQyAv
KiBGb3JtRGF0YUJ1aWxkZXIuY3BwICovLAogCQkJCTA4NUI5MkI5MEVGREU3M0QwMEU2MTIzQyAv
KiBGb3JtRGF0YUJ1aWxkZXIuaCAqLywKKwkJCQk5Nzc1OEJFMTBGQjI1OUNFMDBFMEZBNjYgLyog
Rm9yd2FyZGluZ1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcCAqLywKKwkJCQk5Nzc1OEJFMjBGQjI1
OUNFMDBFMEZBNjYgLyogRm9yd2FyZGluZ1Jlc291cmNlSGFuZGxlQ2xpZW50LmggKi8sCiAJCQkJ
MEI4QzU2RDMwRjI4NjI3RjAwMDUwMkUxIC8qIEhUVFBIZWFkZXJNYXAuY3BwICovLAogCQkJCTUx
NEM3NjVDMENFOTIzQTEwMDdFRjNDRCAvKiBIVFRQSGVhZGVyTWFwLmggKi8sCiAJCQkJNTE0Qzc2
NUQwQ0U5MjNBMTAwN0VGM0NEIC8qIEhUVFBQYXJzZXJzLmNwcCAqLywKQEAgLTEwMTA4LDYgKzEw
MTE4LDggQEAKIAkJCQkxQTdGQTYxODBEREEzQjNBMDAyOEY4QTUgLyogTmV0d29ya1N0YXRlTm90
aWZpZXIuaCAqLywKIAkJCQk5N0VBRjJDNTBGQjI0NDVEMDBEQjQ0OUYgLyogTUlNRVNuaWZmZXIu
Y3BwICovLAogCQkJCTk3RUFGMkM2MEZCMjQ0NUUwMERCNDQ5RiAvKiBNSU1FU25pZmZlci5oICov
LAorCQkJCTk3MUM5QTI2MEZCMjU2NDMwMDIxODU0NSAvKiBNSU1FU25pZmZlclJlc291cmNlSGFu
ZGxlQ2xpZW50LmNwcCAqLywKKwkJCQk5NzFDOUEyNzBGQjI1NjQzMDAyMTg1NDUgLyogTUlNRVNu
aWZmZXJSZXNvdXJjZUhhbmRsZUNsaWVudC5oICovLAogCQkJCTUxNEM3NjVGMENFOTIzQTEwMDdF
RjNDRCAvKiBQcm90ZWN0aW9uU3BhY2UuY3BwICovLAogCQkJCTUxNEM3NjYwMENFOTIzQTEwMDdF
RjNDRCAvKiBQcm90ZWN0aW9uU3BhY2UuaCAqLywKIAkJCQk5MzRGNzEzRDBENUE2RjI4MDAwMThE
NjkgLyogUmVzb3VyY2VFcnJvckJhc2UuY3BwICovLApAQCAtMTY4ODcsNiArMTY4OTksOCBAQAog
CQkJCTVEMTVFM0FDMEY5RTZBQzEwMDlFMEUzRiAvKiBYTUxUb2tlbml6ZXJTY29wZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMzc3NEFCQTUwRkEyMUVCNDAwQUQ3REU5IC8qIE92ZXJsYXBUZXN0UmVx
dWVzdENsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTdFQUYyQzgwRkIyNDQ1RTAwREI0NDlG
IC8qIE1JTUVTbmlmZmVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk5NzFDOUEyOTBGQjI1NjQzMDAy
MTg1NDUgLyogTUlNRVNuaWZmZXJSZXNvdXJjZUhhbmRsZUNsaWVudC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJOTc3NThCRTQwRkIyNTlDRTAwRTBGQTY2IC8qIEZvcndhcmRpbmdSZXNvdXJjZUhhbmRs
ZUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQ
b3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0xODkwNSw2ICsxODkxOSw4IEBACiAJCQkJN0E2
NzRCREIwRjlFQkY0RTAwNkNGMDk5IC8qIFBhZ2VHcm91cExvYWREZWZlcnJlci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk1RDE1RTNBQjBGOUU2QUMxMDA5RTBFM0YgLyogWE1MVG9rZW5pemVyU2Nv
cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTdFQUYyQzcwRkIyNDQ1RTAwREI0NDlGIC8qIE1J
TUVTbmlmZmVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTk3MUM5QTI4MEZCMjU2NDMwMDIxODU0
NSAvKiBNSU1FU25pZmZlclJlc291cmNlSGFuZGxlQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCTk3NzU4QkUzMEZCMjU5Q0UwMEUwRkE2NiAvKiBGb3J3YXJkaW5nUmVzb3VyY2VIYW5kbGVD
bGllbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQ
b3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmVTb3Vy
Y2VzLmJrbCBiL1dlYkNvcmUvV2ViQ29yZVNvdXJjZXMuYmtsCmluZGV4IGM5Yzk3MjAuLmFhNTNm
ZWMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZVNvdXJjZXMuYmtsCisrKyBiL1dlYkNvcmUv
V2ViQ29yZVNvdXJjZXMuYmtsCkBAIC04MjUsNyArODI1LDkgQEAgVGhpcyBmaWxlIGNvbnRhaW5z
IHRoZSBsaXN0IG9mIGZpbGVzIG5lZWRlZCB0byBidWlsZCBXZWJDb3JlLgogICAgICAgICBwbGF0
Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcAogICAgICAgICBwbGF0Zm9ybS9uZXR3b3JrL0Zv
cm1EYXRhLmNwcAogICAgICAgICBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhQnVpbGRlci5jcHAK
KyAgICAgICAgcGxhdGZvcm0vbmV0d29yay9Gb3J3YXJkaW5nUmVzb3VyY2VIYW5kbGVDbGllbnQu
Y3BwCiAgICAgICAgIHBsYXRmb3JtL25ldHdvcmsvTUlNRVNuaWZmZXIuY3BwCisgICAgICAgIHBs
YXRmb3JtL25ldHdvcmsvTUlNRVNuaWZmZXJSZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAKICAgICAg
ICAgcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RhdGVOb3RpZmllci5jcHAKICAgICAgICAgcGxh
dGZvcm0vbmV0d29yay9Qcm90ZWN0aW9uU3BhY2UuY3BwCiAgICAgICAgIHBsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VFcnJvckJhc2UuY3BwCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvRm9yd2FyZGluZ1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcCBiL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9Gb3J3YXJkaW5nUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI0NTAwYmUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvRm9yd2FyZGluZ1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcApA
QCAtMCwwICsxLDE0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBBZGFtIEJhcnRoLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiRm9yd2FyZGluZ1Jlc291cmNlSGFuZGxlQ2xpZW50LmgiCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworRm9yd2FyZGluZ1Jlc291cmNlSGFuZGxlQ2xpZW50OjpGb3J3YXJkaW5nUmVzb3VyY2VI
YW5kbGVDbGllbnQoUmVzb3VyY2VIYW5kbGVDbGllbnQqIGNsaWVudCkKKyAgICA6IG1fY2xpZW50
KGNsaWVudCkKK3sKK30KKwordm9pZCBGb3J3YXJkaW5nUmVzb3VyY2VIYW5kbGVDbGllbnQ6Ondp
bGxTZW5kUmVxdWVzdChSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQoreworICAgIGlmIChtX2Ns
aWVudCkKKyAgICAgICAgbV9jbGllbnQtPndpbGxTZW5kUmVxdWVzdChoYW5kbGUsIHJlcXVlc3Qs
IHJlc3BvbnNlKTsKK30KKwordm9pZCBGb3J3YXJkaW5nUmVzb3VyY2VIYW5kbGVDbGllbnQ6OmRp
ZFNlbmREYXRhKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIHVuc2lnbmVkIGxvbmcgbG9uZyBieXRl
c1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpCit7CisgICAgaWYg
KG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+ZGlkU2VuZERhdGEoaGFuZGxlLCBieXRlc1Nl
bnQsIHRvdGFsQnl0ZXNUb0JlU2VudCk7Cit9CisKK3ZvaWQgRm9yd2FyZGluZ1Jlc291cmNlSGFu
ZGxlQ2xpZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCit7CisgICAgaWYgKG1fY2xpZW50KQorICAg
ICAgICBtX2NsaWVudC0+ZGlkUmVjaWV2ZVJlc3BvbnNlKGhhbmRsZSwgcmVzcG9uc2UpOworfQor
Cit2b2lkIEZvcndhcmRpbmdSZXNvdXJjZUhhbmRsZUNsaWVudDo6ZGlkUmVjZWl2ZURhdGEoUmVz
b3VyY2VIYW5kbGUqIGhhbmRsZSwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCwgaW50IGxl
bmd0aFJlY2VpdmVkKQoreworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPmRp
ZFJlY2VpdmVEYXRhKGhhbmRsZSwgZGF0YSwgbGVuZ3RoLCBsZW5ndGhSZWNlaXZlZCk7Cit9CisK
K3ZvaWQgRm9yd2FyZGluZ1Jlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRGaW5pc2hMb2FkaW5nKFJl
c291cmNlSGFuZGxlKiBoYW5kbGUpCit7CisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2Ns
aWVudC0+ZGlkRmluaXNoTG9hZGluZyhoYW5kbGUpOworfQorCit2b2lkIEZvcndhcmRpbmdSZXNv
dXJjZUhhbmRsZUNsaWVudDo6ZGlkRmFpbChSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBjb25zdCBS
ZXNvdXJjZUVycm9yJiBlcnJvcikKK3sKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xp
ZW50LT5kaWRGYWlsKGhhbmRsZSwgZXJyb3IpOworfQorCit2b2lkIEZvcndhcmRpbmdSZXNvdXJj
ZUhhbmRsZUNsaWVudDo6d2FzQmxvY2tlZChSZXNvdXJjZUhhbmRsZSogaGFuZGxlKQoreworICAg
IGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPndhc0Jsb2NrZWQoaGFuZGxlKTsKK30K
Kwordm9pZCBGb3J3YXJkaW5nUmVzb3VyY2VIYW5kbGVDbGllbnQ6OmNhbm5vdFNob3dVUkwoUmVz
b3VyY2VIYW5kbGUqIGhhbmRsZSkKK3sKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xp
ZW50LT5jYW5ub3RTaG93VVJMKGhhbmRsZSk7Cit9CisKK3ZvaWQgRm9yd2FyZGluZ1Jlc291cmNl
SGFuZGxlQ2xpZW50Ojp3aWxsQ2FjaGVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBD
YWNoZVN0b3JhZ2VQb2xpY3kmIHBvbGljeSkKK3sKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAg
IG1fY2xpZW50LT53aWxsQ2FjaGVSZXNwb25zZShoYW5kbGUsIHBvbGljeSk7Cit9CisKK2Jvb2wg
Rm9yd2FyZGluZ1Jlc291cmNlSGFuZGxlQ2xpZW50OjpzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFn
ZShSZXNvdXJjZUhhbmRsZSpoYW5kbGUpCit7CisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBy
ZXR1cm4gbV9jbGllbnQtPnNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKGhhbmRsZSk7CisKKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgRm9yd2FyZGluZ1Jlc291cmNlSGFuZGxlQ2xpZW50
OjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoUmVzb3VyY2VIYW5kbGUqIGhhbmRs
ZSwgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5nZSkKK3sKKyAgICBpZiAo
bV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UoaGFuZGxlLCBjaGFsbGVuZ2UpOworfQorCit2b2lkIEZvcndhcmRpbmdSZXNvdXJjZUhh
bmRsZUNsaWVudDo6ZGlkQ2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoUmVzb3VyY2VIYW5k
bGUqIGhhbmRsZSwgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5nZSkKK3sK
KyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT5kaWRDYW5jZWxBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZShoYW5kbGUsIGNoYWxsZW5nZSk7Cit9CisKK3ZvaWQgRm9yd2FyZGluZ1Jl
c291cmNlSGFuZGxlQ2xpZW50OjpyZWNlaXZlZENhbmNlbGxhdGlvbihSZXNvdXJjZUhhbmRsZSog
aGFuZGxlLCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdlKQoreworICAg
IGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPnJlY2V2aWVkQ2FuY2VsbGF0aW9uKGhh
bmRsZSwgY2hhbGxlbmdlKTsKK30KKworI2lmIFBMQVRGT1JNKE1BQykKK05TQ2FjaGVkVVJMUmVz
cG9uc2UqIEZvcndhcmRpbmdSZXNvdXJjZUhhbmRsZUNsaWVudDo6d2lsbENhY2hlUmVzcG9uc2Uo
UmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgTlNDYWNoZWRVUkxSZXNwb25zZSogcmVzcG9uc2UpCit7
CisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICByZXR1cm4gbV9jbGllbnQtPndpbGxDYWNoZVJl
c3BvbnNlKGhhbmRsZSwgcmVzcG9uc2UpOworCisgICAgcmV0dXJuIHJlc3BvbnNlOworfQorCit2
b2lkIEZvcndhcmRpbmdSZXNvdXJjZUhhbmRsZUNsaWVudDo6d2lsbFN0b3BCdWZmZXJpbmdEYXRh
KFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCit7
CisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+d2lsbFN0b3BCdWZmZXJpbmdE
YXRhKGhhbmRsZSwgZGF0YSwgbGVuZ3RoKTsKK30KKyNlbmRpZgorCisjaWYgVVNFKENGTkVUV09S
SykKK2Jvb2wgRm9yd2FyZGluZ1Jlc291cmNlSGFuZGxlQ2xpZW50OjpzaG91bGRDYWNoZVJlc3Bv
bnNlKFJlc291cmNlSGFuZGxlKiwgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZiByZXNwb25zZSkKK3sK
KyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIHJldHVybiBtX2NsaWVudC0+c2hvdWxkQ2FjaGVS
ZXNwb25zZShoYW5kbGUsIHJlc3BvbnNlKTsKKworICAgIHJldXRybiB0cnVlOworfQorI2VuZGlm
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0ZvcndhcmRpbmdSZXNvdXJjZUhhbmRsZUNsaWVudC5oIGIvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0ZvcndhcmRpbmdSZXNvdXJjZUhhbmRsZUNsaWVudC5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA4MTY2NGYKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvRm9yd2FyZGluZ1Jlc291cmNlSGFuZGxlQ2xpZW50LmgKQEAg
LTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBBZGFtIEJhcnRoLiAgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBGb3J3YXJkaW5nUmVzb3VyY2VIYW5k
bGVDbGllbnRfaAorI2RlZmluZSBGb3J3YXJkaW5nUmVzb3VyY2VIYW5kbGVDbGllbnRfaAorCisj
aW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVDbGllbnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CisgICAgY2xhc3MgRm9yd2FyZGluZ1Jlc291cmNlSGFuZGxlQ2xpZW50IDogcHVibGljIFJlc291
cmNlSGFuZGxlQ2xpZW50IHsKKyAgICBwdWJsaWM6CisgICAgICAgIC8vIFRoaXMgY2xhc3Mgd2ls
bCBmb3J3YXJkIGFsbCBldmVudHMgdG8gfGNsaWVudHwuCisgICAgICAgIEZvcndhcmRpbmdSZXNv
dXJjZUhhbmRsZUNsaWVudChSZXNvdXJjZUhhbmRsZUNsaWVudCogY2xpZW50KTsKKworICAgICAg
ICBSZXNvdXJjZUhhbmRsZUNsaWVudCogY2xpZW50KCkgY29uc3QgeyByZXR1cm4gbV9jbGllbnQ7
IH0KKyAgICAgICAgdm9pZCBzZXRDbGllbnQoUmVzb3VyY2VIYW5kbGVDbGllbnQqIGNsaWVudCkg
eyBtX2NsaWVudCA9IGNsaWVudDsgfQorCisgICAgICAgIC8vIFJlc291cmNlSGFuZGxlQ2xpZW50
IG1ldGhvZHMuCisgICAgICAgIHZpcnR1YWwgdm9pZCB3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VI
YW5kbGUqLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CisgICAg
ICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0YShSZXNvdXJjZUhhbmRsZSosIHVuc2lnbmVkIGxv
bmcgbG9uZywgdW5zaWduZWQgbG9uZyBsb25nKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJl
Y2VpdmVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsK
KyAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlKiwgY29u
c3QgY2hhciosIGludCwgaW50KTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRp
bmcoUmVzb3VyY2VIYW5kbGUqKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoUmVzb3Vy
Y2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CisgICAgICAgIHZpcnR1YWwgdm9pZCB3
YXNCbG9ja2VkKFJlc291cmNlSGFuZGxlKik7CisgICAgICAgIHZpcnR1YWwgdm9pZCBjYW5ub3RT
aG93VVJMKFJlc291cmNlSGFuZGxlKik7CisgICAgICAgIHZpcnR1YWwgdm9pZCB3aWxsQ2FjaGVS
ZXNwb25zZShSZXNvdXJjZUhhbmRsZSosIENhY2hlU3RvcmFnZVBvbGljeSYpOworICAgICAgICB2
aXJ0dWFsIGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UoUmVzb3VyY2VIYW5kbGUqKTsK
KyAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShS
ZXNvdXJjZUhhbmRsZSosIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJik7CisgICAgICAg
IHZpcnR1YWwgdm9pZCBkaWRDYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShSZXNvdXJjZUhh
bmRsZSosIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJik7CisgICAgICAgIHZpcnR1YWwg
dm9pZCByZWNlaXZlZENhbmNlbGxhdGlvbihSZXNvdXJjZUhhbmRsZSosIGNvbnN0IEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlJik7CisjaWYgUExBVEZPUk0oTUFDKQorICAgICAgICB2aXJ0dWFsIE5T
Q2FjaGVkVVJMUmVzcG9uc2UqIHdpbGxDYWNoZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiwgTlND
YWNoZWRVUkxSZXNwb25zZSopOworICAgICAgICB2aXJ0dWFsIHZvaWQgd2lsbFN0b3BCdWZmZXJp
bmdEYXRhKFJlc291cmNlSGFuZGxlKiwgY29uc3QgY2hhciosIGludCk7CisjZW5kaWYKKyNpZiBV
U0UoQ0ZORVRXT1JLKQorICAgICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2FjaGVSZXNwb25zZShS
ZXNvdXJjZUhhbmRsZSosIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgcmVzcG9uc2UpOworI2VuZGlm
CisKKyAgICBwcml2YXRlOgorICAgICAgICBSZXNvdXJjZUhhbmRsZUNsaWVudCogbV9jbGllbnQ7
CisgICAgfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRm9yd2FyZGlu
Z1Jlc291cmNlSGFuZGxlQ2xpZW50X2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9NSU1FU25pZmZlclJlc291cmNlSGFuZGxlQ2xpZW50LmNwcCBiL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9NSU1FU25pZmZlclJlc291cmNlSGFuZGxlQ2xpZW50LmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iM2M3MWFlCi0tLSAvZGV2L251bGwKKysrIGIvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL01JTUVTbmlmZmVyUmVzb3VyY2VIYW5kbGVDbGllbnQuY3Bw
CkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQWRhbSBCYXJ0aC4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIk1JTUVTbmlmZmVyUmVzb3VyY2VIYW5kbGVDbGllbnQuaCIKKworI2luY2x1ZGUgIk1JTUVT
bmlmZmVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordm9pZCBNSU1FU25pZmZlclJlc291
cmNlSGFuZGxlQ2xpZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqIGhhbmRs
ZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCit7CisgICAgRm93YXJkaW5nUmVz
b3VjZUhhbmRsZUNsZWludDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGhhbmRsZSwgcmVzcG9uc2UpOwor
CisgICAgaWYgKCFzaG91bGRTbmlmZk1JTUVUeXBlKHJlc3BvbnNlLnVybCgpLCByZXNwb25zZS5t
aW1lVHlwZSgpKSkgeworICAgICAgICBoYW5kbGUtPmNsZWFyTUlNRVNuaWZmZXIoKTsKKyAgICAg
ICAgLy8gV0FSTklORzogV2UgYXJlIHByb2JhYmx5IGRlbGV0ZWQgYXQgdGhpcyBwb2ludC4KKyAg
ICB9Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL01JTUVTbmlmZmVyUmVzb3VyY2VIYW5kbGVDbGllbnQuaCBiL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9NSU1FU25pZmZlclJlc291cmNlSGFuZGxlQ2xpZW50LmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjc3ZjQ4ZgotLS0gL2Rldi9udWxsCisr
KyBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9NSU1FU25pZmZlclJlc291cmNlSGFuZGxlQ2xp
ZW50LmgKQEAgLTAsMCArMSw0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBBZGFtIEJh
cnRoLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBNSU1FU25pZmZlclJl
c291cmNlSGFuZGxlQ2xpZW50X2gKKyNkZWZpbmUgTUlNRVNuaWZmZXJSZXNvdXJjZUhhbmRsZUNs
aWVudF9oCisKKyNpbmNsdWRlICJGb3J3YXJkaW5nUmVzb3VyY2VIYW5kbGVDbGllbnQuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCisgICAgY2xhc3MgTUlNRVNuaWZmZXJSZXNvdXJjZUhhbmRs
ZUNsaWVudCA6IHB1YmxpYyBGb3J3YXJkaW5nUmVzb3VyY2VIYW5kbGVDbGllbnQgeworICAgIHB1
YmxpYzoKKyAgICAgICAgTUlNRVNuaWZmZXJSZXNvdXJjZUhhbmRsZUNsaWVudChSZXNvdXJjZUhh
bmRsZUNsaWVudCogY2xpZW50KQorICAgICAgICAgICAgOiBGb3J3YXJkaW5nUmVzb3VyY2VIYW5k
bGVDbGllbnQoY2xpZW50KSB7IH0KKworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJl
c3BvbnNlKFJlc291cmNlSGFuZGxlKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOworICAgIH07
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIE1JTUVTbmlmZmVyUmVzb3Vy
Y2VIYW5kbGVDbGllbnRfaApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlSGFuZGxlLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRs
ZS5jcHAKaW5kZXggYTczMjBiOS4uMmVlZmVkMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VIYW5kbGUuY3BwCkBAIC04Niw2ICs4NiwxMSBAQCB2b2lkIFJlc291cmNlSGFu
ZGxlOjpmaXJlRmFpbHVyZShUaW1lcjxSZXNvdXJjZUhhbmRsZT4qKQogICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogfQogCit2b2lkIFJlc291cmNlSGFuZGxlOjpjbGVhck1JTUVTbmlmZmVyKCkg
eworICAgIGQtPm1fY2xpZW50ID0gZC0+bV9taW1lU25pZmZlci0+Y2xpZW50KCk7CisgICAgZC0+
bV9taW1lU25pZmZlciA9IDA7Cit9CisKIFJlc291cmNlSGFuZGxlQ2xpZW50KiBSZXNvdXJjZUhh
bmRsZTo6Y2xpZW50KCkgY29uc3QKIHsKICAgICByZXR1cm4gZC0+bV9jbGllbnQ7CkBAIC05Myw3
ICs5OCwxMCBAQCBSZXNvdXJjZUhhbmRsZUNsaWVudCogUmVzb3VyY2VIYW5kbGU6OmNsaWVudCgp
IGNvbnN0CiAKIHZvaWQgUmVzb3VyY2VIYW5kbGU6OnNldENsaWVudChSZXNvdXJjZUhhbmRsZUNs
aWVudCogY2xpZW50KQogewotICAgIGQtPm1fY2xpZW50ID0gY2xpZW50OworICAgIGlmIChkLT5t
X21pbWVTbmlmZmVyKQorICAgICAgICBkLT5tX21pbWVTbmlmZmVyLT5zZXRDbGllbnQoY2xpZW50
KTsKKyAgICBlbHNlCisgICAgICAgIGQtPm1fY2xpZW50ID0gY2xpZW50OwogfQogCiBjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmIFJlc291cmNlSGFuZGxlOjpyZXF1ZXN0KCkgY29uc3QKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oIGIvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmgKaW5kZXggYmFmNDE4Yi4uMzFlYzAyMyAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmgKKysr
IGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmgKQEAgLTE3NSw2ICsx
NzUsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhckF1dGhlbnRpY2F0aW9uKCk7CiAgICAgdm9p
ZCBjYW5jZWwoKTsKIAorICAgIHZvaWQgY2xlYXJNSU1FU25pZmZlcigpOworCiAgICAgLy8gVGhl
IGNsaWVudCBtYXkgYmUgMCwgaW4gd2hpY2ggY2FzZSBubyBjYWxsYmFja3Mgd2lsbCBiZSBtYWRl
LgogICAgIFJlc291cmNlSGFuZGxlQ2xpZW50KiBjbGllbnQoKSBjb25zdDsKICAgICB2b2lkIHNl
dENsaWVudChSZXNvdXJjZUhhbmRsZUNsaWVudCopOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaCBiL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmgKaW5kZXggNzlhZjc1Yy4uM2RkZTViZiAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJu
YWwuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5h
bC5oCkBAIC0yNiw2ICsyNiw3IEBACiAjaWZuZGVmIFJlc291cmNlSGFuZGxlSW50ZXJuYWxfaAog
I2RlZmluZSBSZXNvdXJjZUhhbmRsZUludGVybmFsX2gKIAorI2luY2x1ZGUgIk1JTUVTbmlmZmVy
UmVzb3VyY2VIYW5kbGVDbGllbnQuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgogI2lu
Y2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlLmgiCkBAIC03MywxMyArNzQsMTEgQEAgY2xhc3MgTlNVUkxDb25uZWN0aW9uOwogLy8gV2Vi
Q29yZVJlc291cmNlTG9hZGVySW1wIHdoaWNoIGF2b2lkcyBkb2luZyB3b3JrIGluIGRlYWxsb2Mp
LgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgY2xhc3MgUmVzb3VyY2VIYW5kbGVDbGllbnQ7
CiAKICAgICBjbGFzcyBSZXNvdXJjZUhhbmRsZUludGVybmFsIDogTm9uY29weWFibGUgewogICAg
IHB1YmxpYzoKICAgICAgICAgUmVzb3VyY2VIYW5kbGVJbnRlcm5hbChSZXNvdXJjZUhhbmRsZSog
bG9hZGVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc291cmNlSGFuZGxlQ2xp
ZW50KiBjLCBib29sIGRlZmVyc0xvYWRpbmcsIGJvb2wgc2hvdWxkQ29udGVudFNuaWZmLCBib29s
IG1pZ2h0RG93bmxvYWRGcm9tSGFuZGxlKQotICAgICAgICAgICAgOiBtX2NsaWVudChjKQotICAg
ICAgICAgICAgLCBtX3JlcXVlc3QocmVxdWVzdCkKKyAgICAgICAgICAgIDogbV9yZXF1ZXN0KHJl
cXVlc3QpCiAgICAgICAgICAgICAsIHN0YXR1cygwKQogICAgICAgICAgICAgLCBtX2RlZmVyc0xv
YWRpbmcoZGVmZXJzTG9hZGluZykKICAgICAgICAgICAgICwgbV9zaG91bGRDb250ZW50U25pZmYo
c2hvdWxkQ29udGVudFNuaWZmKQpAQCAtMTMzLDYgKzEzMiw5IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICNlbmRpZgogICAgICAgICAgICAgLCBtX2ZhaWx1cmVUaW1lcihsb2FkZXIsICZSZXNvdXJj
ZUhhbmRsZTo6ZmlyZUZhaWx1cmUpCiAgICAgICAgIHsKKyAgICAgICAgICAgIG1fbWltZVNuaWZm
ZXIgPSBuZXcgTUlNRVNuaWZmZXJSZXNvdXJjZUhhbmRsZUNsaWVudChjKTsKKyAgICAgICAgICAg
IG1fY2xpZW50ID0gbV9taW1lU25pZmZlci5nZXQoKTsKKwogICAgICAgICAgICAgY29uc3QgS1VS
TCYgdXJsID0gbV9yZXF1ZXN0LnVybCgpOwogICAgICAgICAgICAgbV91c2VyID0gdXJsLnVzZXIo
KTsKICAgICAgICAgICAgIG1fcGFzcyA9IHVybC5wYXNzKCk7CkBAIC0xNDksNyArMTUxLDkgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAvLyBTdWdnZXN0ZWQgY3JlZGVudGlhbHMgZm9y
IHRoZSBjdXJyZW50IHJlZGlyZWN0aW9uIHN0ZXAuCiAgICAgICAgIFN0cmluZyBtX3VzZXI7CiAg
ICAgICAgIFN0cmluZyBtX3Bhc3M7Ci0gICAgICAgIAorCisgICAgICAgIE93blB0cjxNSU1FU25p
ZmZlclJlc291cmNlSGFuZGxlQ2xpZW50PiBtX21pbWVTbmlmZmVyOworCiAgICAgICAgIGludCBz
dGF0dXM7CiAKICAgICAgICAgYm9vbCBtX2RlZmVyc0xvYWRpbmc7Ci0tIAoxLjYuMC4xCgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>30080</attachid>
            <date>2009-05-06 18:38:32 -0700</date>
            <delta_ts>2009-05-22 21:42:40 -0700</delta_ts>
            <desc>Step 2: Hook sniffer into network stack (ready for review)</desc>
            <filename>sniffer-02.patch</filename>
            <type>text/plain</type>
            <size>34239</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">RnJvbSAyMzk2N2ViOGZlYTBmOTMwMWZmNGYxZmVjNTMyZGQ3YTFlMTVlNzBjIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBZGFtIEJhcnRoIDxhYmFydGhAYXJjdGljYS5sb2NhbD4KRGF0
ZTogV2VkLCA2IE1heSAyMDA5IDE2OjM3OjU5IC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gMjAwOS0w
NS0wNiAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgoKICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KCiAgICAgICAgSG9vayB0aGUgTUlNRSBzbmlmZmVyIGludG8gbmV0
d29yayBzdGFjay4gIFRoZSBzbmlmZmVyIHN0aWxsIGRvZXNuJ3QgZG8KICAgICAgICBhbnl0aGlu
ZyB5ZXQuCgogICAgICAgICogR05VbWFrZWZpbGUuYW06CiAgICAgICAgKiBXZWJDb3JlLnBybzoK
ICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgogICAgICAgICogV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgogICAgICAgICogV2ViQ29yZVNvdXJjZXMuYmts
OgogICAgICAgICogcGxhdGZvcm0vbmV0d29yay9Gb3J3YXJkaW5nUmVzb3VyY2VIYW5kbGVDbGll
bnQuY3BwOiBBZGRlZC4KICAgICAgICAoV2ViQ29yZTo6Rm9yd2FyZGluZ1Jlc291cmNlSGFuZGxl
Q2xpZW50OjpGb3J3YXJkaW5nUmVzb3VyY2VIYW5kbGVDbGllbnQpOgogICAgICAgIChXZWJDb3Jl
OjpGb3J3YXJkaW5nUmVzb3VyY2VIYW5kbGVDbGllbnQ6OndpbGxTZW5kUmVxdWVzdCk6CiAgICAg
ICAgKFdlYkNvcmU6OkZvcndhcmRpbmdSZXNvdXJjZUhhbmRsZUNsaWVudDo6ZGlkU2VuZERhdGEp
OgogICAgICAgIChXZWJDb3JlOjpGb3J3YXJkaW5nUmVzb3VyY2VIYW5kbGVDbGllbnQ6OmRpZFJl
Y2VpdmVSZXNwb25zZSk6CiAgICAgICAgKFdlYkNvcmU6OkZvcndhcmRpbmdSZXNvdXJjZUhhbmRs
ZUNsaWVudDo6ZGlkUmVjZWl2ZURhdGEpOgogICAgICAgIChXZWJDb3JlOjpGb3J3YXJkaW5nUmVz
b3VyY2VIYW5kbGVDbGllbnQ6OmRpZEZpbmlzaExvYWRpbmcpOgogICAgICAgIChXZWJDb3JlOjpG
b3J3YXJkaW5nUmVzb3VyY2VIYW5kbGVDbGllbnQ6OmRpZEZhaWwpOgogICAgICAgIChXZWJDb3Jl
OjpGb3J3YXJkaW5nUmVzb3VyY2VIYW5kbGVDbGllbnQ6Ondhc0Jsb2NrZWQpOgogICAgICAgIChX
ZWJDb3JlOjpGb3J3YXJkaW5nUmVzb3VyY2VIYW5kbGVDbGllbnQ6OmNhbm5vdFNob3dVUkwpOgog
ICAgICAgIChXZWJDb3JlOjpGb3J3YXJkaW5nUmVzb3VyY2VIYW5kbGVDbGllbnQ6OndpbGxDYWNo
ZVJlc3BvbnNlKToKICAgICAgICAoV2ViQ29yZTo6Rm9yd2FyZGluZ1Jlc291cmNlSGFuZGxlQ2xp
ZW50OjpzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSk6CiAgICAgICAgKFdlYkNvcmU6OkZvcndh
cmRpbmdSZXNvdXJjZUhhbmRsZUNsaWVudDo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlKToKICAgICAgICAoV2ViQ29yZTo6Rm9yd2FyZGluZ1Jlc291cmNlSGFuZGxlQ2xpZW50Ojpk
aWRDYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6CiAgICAgICAgKFdlYkNvcmU6OkZvcndh
cmRpbmdSZXNvdXJjZUhhbmRsZUNsaWVudDo6cmVjZWl2ZWRDYW5jZWxsYXRpb24pOgogICAgICAg
IChXZWJDb3JlOjpGb3J3YXJkaW5nUmVzb3VyY2VIYW5kbGVDbGllbnQ6OndpbGxTdG9wQnVmZmVy
aW5nRGF0YSk6CiAgICAgICAgKFdlYkNvcmU6OkZvcndhcmRpbmdSZXNvdXJjZUhhbmRsZUNsaWVu
dDo6c2hvdWxkQ2FjaGVSZXNwb25zZSk6CiAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Zvcndh
cmRpbmdSZXNvdXJjZUhhbmRsZUNsaWVudC5oOiBBZGRlZC4KICAgICAgICAoV2ViQ29yZTo6Rm9y
d2FyZGluZ1Jlc291cmNlSGFuZGxlQ2xpZW50OjpjbGllbnQpOgogICAgICAgIChXZWJDb3JlOjpG
b3J3YXJkaW5nUmVzb3VyY2VIYW5kbGVDbGllbnQ6OnNldENsaWVudCk6CiAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL01JTUVTbmlmZmVyUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwOiBBZGRlZC4K
ICAgICAgICAoV2ViQ29yZTo6TUlNRVNuaWZmZXJSZXNvdXJjZUhhbmRsZUNsaWVudDo6ZGlkUmVj
ZWl2ZVJlc3BvbnNlKToKICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvTUlNRVNuaWZmZXJSZXNv
dXJjZUhhbmRsZUNsaWVudC5oOiBBZGRlZC4KICAgICAgICAoV2ViQ29yZTo6TUlNRVNuaWZmZXJS
ZXNvdXJjZUhhbmRsZUNsaWVudDo6TUlNRVNuaWZmZXJSZXNvdXJjZUhhbmRsZUNsaWVudCk6CiAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmNwcDoKICAgICAgICAoV2Vi
Q29yZTo6UmVzb3VyY2VIYW5kbGU6OmNsZWFyTUlNRVNuaWZmZXIpOgogICAgICAgIChXZWJDb3Jl
OjpSZXNvdXJjZUhhbmRsZTo6c2V0Q2xpZW50KToKICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
UmVzb3VyY2VIYW5kbGUuaDoKICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5k
bGVJbnRlcm5hbC5oOgogICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUludGVybmFsOjpS
ZXNvdXJjZUhhbmRsZUludGVybmFsKToKLS0tCiBXZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB8ICAgODIgKysrKysrKysrKysKIFdlYkNvcmUvR05VbWFr
ZWZpbGUuYW0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgNCArCiBXZWJDb3JlL1dl
YkNvcmUucHJvICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDIgKwogV2ViQ29y
ZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiAgICAgICAgICAgICAgfCAgIDE2ICsrKwog
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogICAgICAgICAgfCAgIDE2
ICsrKwogV2ViQ29yZS9XZWJDb3JlU291cmNlcy5ia2wgICAgICAgICAgICAgICAgICAgICAgICAg
fCAgICAyICsKIC4uLi9uZXR3b3JrL0ZvcndhcmRpbmdSZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAg
ICAgIHwgIDE0MyArKysrKysrKysrKysrKysrKysrKwogLi4uL25ldHdvcmsvRm9yd2FyZGluZ1Jl
c291cmNlSGFuZGxlQ2xpZW50LmggICAgICAgfCAgIDY5ICsrKysrKysrKysKIC4uLi9uZXR3b3Jr
L01JTUVTbmlmZmVyUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwICAgIHwgICA0NSArKysrKysKIC4u
Li9uZXR3b3JrL01JTUVTbmlmZmVyUmVzb3VyY2VIYW5kbGVDbGllbnQuaCAgICAgIHwgICA0MyAr
KysrKysKIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5jcHAgICAgICAg
IHwgICAxMiArKy0KIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oICAg
ICAgICAgIHwgICAgMiArCiBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJ
bnRlcm5hbC5oICB8ICAgMTIgKy0KIDEzIGZpbGVzIGNoYW5nZWQsIDQ0MyBpbnNlcnRpb25zKCsp
LCA1IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IFdlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9Gb3J3YXJkaW5nUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwCiBjcmVhdGUgbW9kZSAxMDA2
NDQgV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0ZvcndhcmRpbmdSZXNvdXJjZUhhbmRsZUNsaWVu
dC5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL01JTUVTbmlm
ZmVyUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL01JTUVTbmlmZmVyUmVzb3VyY2VIYW5kbGVDbGllbnQuaAoKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTBhMjgy
Ni4uNjEzNTAwNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9D
aGFuZ2VMb2cKQEAgLTIsNiArMiw4OCBAQAogCiAgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgogCisgICAgICAgIEhvb2sgdGhlIE1JTUUgc25pZmZlciBpbnRvIG5ldHdvcmsgc3Rh
Y2suICBUaGUgc25pZmZlciBzdGlsbCBkb2Vzbid0IGRvCisgICAgICAgIGFueXRoaW5nIHlldC4K
KworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAg
ICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJDb3JlU291cmNlcy5ia2w6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9Gb3J3YXJkaW5nUmVzb3VyY2VIYW5kbGVDbGll
bnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkZvcndhcmRpbmdSZXNvdXJjZUhhbmRs
ZUNsaWVudDo6Rm9yd2FyZGluZ1Jlc291cmNlSGFuZGxlQ2xpZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OkZvcndhcmRpbmdSZXNvdXJjZUhhbmRsZUNsaWVudDo6d2lsbFNlbmRSZXF1ZXN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkZvcndhcmRpbmdSZXNvdXJjZUhhbmRsZUNsaWVudDo6ZGlkU2VuZERh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6Rm9yd2FyZGluZ1Jlc291cmNlSGFuZGxlQ2xpZW50Ojpk
aWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6Rm9yd2FyZGluZ1Jlc291cmNl
SGFuZGxlQ2xpZW50OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpGb3J3YXJk
aW5nUmVzb3VyY2VIYW5kbGVDbGllbnQ6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2Vi
Q29yZTo6Rm9yd2FyZGluZ1Jlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRGYWlsKToKKyAgICAgICAg
KFdlYkNvcmU6OkZvcndhcmRpbmdSZXNvdXJjZUhhbmRsZUNsaWVudDo6d2FzQmxvY2tlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpGb3J3YXJkaW5nUmVzb3VyY2VIYW5kbGVDbGllbnQ6OmNhbm5vdFNo
b3dVUkwpOgorICAgICAgICAoV2ViQ29yZTo6Rm9yd2FyZGluZ1Jlc291cmNlSGFuZGxlQ2xpZW50
Ojp3aWxsQ2FjaGVSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpGb3J3YXJkaW5nUmVzb3Vy
Y2VIYW5kbGVDbGllbnQ6OnNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKToKKyAgICAgICAgKFdl
YkNvcmU6OkZvcndhcmRpbmdSZXNvdXJjZUhhbmRsZUNsaWVudDo6ZGlkUmVjZWl2ZUF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkZvcndhcmRpbmdSZXNvdXJjZUhh
bmRsZUNsaWVudDo6ZGlkQ2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6Rm9yd2FyZGluZ1Jlc291cmNlSGFuZGxlQ2xpZW50OjpyZWNlaXZlZENhbmNlbGxh
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpGb3J3YXJkaW5nUmVzb3VyY2VIYW5kbGVDbGllbnQ6
OndpbGxTdG9wQnVmZmVyaW5nRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpGb3J3YXJkaW5nUmVz
b3VyY2VIYW5kbGVDbGllbnQ6OnNob3VsZENhY2hlUmVzcG9uc2UpOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvRm9yd2FyZGluZ1Jlc291cmNlSGFuZGxlQ2xpZW50Lmg6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6Rm9yd2FyZGluZ1Jlc291cmNlSGFuZGxlQ2xpZW50OjpjbGllbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6Rm9yd2FyZGluZ1Jlc291cmNlSGFuZGxlQ2xpZW50OjpzZXRDbGll
bnQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvTUlNRVNuaWZmZXJSZXNvdXJjZUhhbmRs
ZUNsaWVudC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TUlNRVNuaWZmZXJSZXNvdXJj
ZUhhbmRsZUNsaWVudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL01JTUVTbmlmZmVyUmVzb3VyY2VIYW5kbGVDbGllbnQuaDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpNSU1FU25pZmZlclJlc291cmNlSGFuZGxlQ2xpZW50OjpNSU1FU25pZmZlclJl
c291cmNlSGFuZGxlQ2xpZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
SGFuZGxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpjbGVhck1JTUVT
bmlmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpzZXRDbGllbnQpOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlSGFuZGxlSW50ZXJuYWw6OlJlc291cmNlSGFuZGxlSW50ZXJuYWwpOgorCisy
MDA5LTA1LTA2ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSG9vayBNSU1FIHNuaWZmZXIgaW50
byBuZXR3b3JrIHN0YWNrLiAgVGhlIHNuaWZmZXIgc3RpbGwgZG9lc24ndAorICAgICAgICBkbyBh
bnl0aGluZyB5ZXQuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBXZWJD
b3JlLnBybzoKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAg
ICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViQ29y
ZVNvdXJjZXMuYmtsOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvTUlNRVNuaWZmZXJSZXNv
dXJjZUhhbmRsZUNsaWVudC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TUlNRVNuaWZm
ZXJSZXNvdXJjZUhhbmRsZUNsaWVudDo6TUlNRVNuaWZmZXJSZXNvdXJjZUhhbmRsZUNsaWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpNSU1FU25pZmZlclJlc291cmNlSGFuZGxlQ2xpZW50Ojp3aWxs
U2VuZFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6TUlNRVNuaWZmZXJSZXNvdXJjZUhhbmRs
ZUNsaWVudDo6ZGlkU2VuZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TUlNRVNuaWZmZXJSZXNv
dXJjZUhhbmRsZUNsaWVudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1JTUVTbmlmZmVyUmVzb3VyY2VIYW5kbGVDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1JTUVTbmlmZmVyUmVzb3VyY2VIYW5kbGVDbGllbnQ6OmRpZEZpbmlzaExv
YWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6TUlNRVNuaWZmZXJSZXNvdXJjZUhhbmRsZUNsaWVu
dDo6ZGlkRmFpbCk6CisgICAgICAgIChXZWJDb3JlOjpNSU1FU25pZmZlclJlc291cmNlSGFuZGxl
Q2xpZW50Ojp3YXNCbG9ja2VkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVTbmlmZmVyUmVzb3Vy
Y2VIYW5kbGVDbGllbnQ6OmNhbm5vdFNob3dVUkwpOgorICAgICAgICAoV2ViQ29yZTo6TUlNRVNu
aWZmZXJSZXNvdXJjZUhhbmRsZUNsaWVudDo6d2lsbENhY2hlUmVzcG9uc2UpOgorICAgICAgICAo
V2ViQ29yZTo6TUlNRVNuaWZmZXJSZXNvdXJjZUhhbmRsZUNsaWVudDo6c2hvdWxkVXNlQ3JlZGVu
dGlhbFN0b3JhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6TUlNRVNuaWZmZXJSZXNvdXJjZUhhbmRs
ZUNsaWVudDo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1JTUVTbmlmZmVyUmVzb3VyY2VIYW5kbGVDbGllbnQ6OmRpZENhbmNlbEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVTbmlmZmVyUmVzb3VyY2VI
YW5kbGVDbGllbnQ6OnJlY2VpdmVkQ2FuY2VsbGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1J
TUVTbmlmZmVyUmVzb3VyY2VIYW5kbGVDbGllbnQ6OndpbGxTdG9wQnVmZmVyaW5nRGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNSU1FU25pZmZlclJlc291cmNlSGFuZGxlQ2xpZW50OjpzaG91bGRD
YWNoZVJlc3BvbnNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL01JTUVTbmlmZmVyUmVz
b3VyY2VIYW5kbGVDbGllbnQuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpNSU1FU25pZmZl
clJlc291cmNlSGFuZGxlQ2xpZW50OjpjbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6TUlNRVNu
aWZmZXJSZXNvdXJjZUhhbmRsZUNsaWVudDo6c2V0Q2xpZW50KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
SGFuZGxlOjpjbGVhck1JTUVTbmlmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFu
ZGxlOjpzZXRDbGllbnQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5k
bGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlSW50ZXJuYWw6OlJlc291cmNlSGFu
ZGxlSW50ZXJuYWwpOgorCisyMDA5LTA1LTA2ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKICAgICAgICAgQWRk
ZWQgZW50cnkgcG9pbnRzIGZvciBNSU1FIHNuaWZmZXIuCiAKICAgICAgICAgKiBHTlVtYWtlZmls
ZS5hbToKZGlmZiAtLWdpdCBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0gYi9XZWJDb3JlL0dOVW1h
a2VmaWxlLmFtCmluZGV4IGJjNzc5YzYuLjJkN2I3ODMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvR05V
bWFrZWZpbGUuYW0KKysrIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtMTQ1MSwxMiArMTQ1
MSwxNiBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9G
b3JtRGF0YS5oIFwKIAlXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGFCdWlsZGVyLmNw
cCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhQnVpbGRlci5oIFwKKwlXZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvRm9yd2FyZGluZ1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcCBc
CisJV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0ZvcndhcmRpbmdSZXNvdXJjZUhhbmRsZUNsaWVu
dC5oIFwKIAlXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUEhlYWRlck1hcC5oIFwKIAlXZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUEhlYWRlck1hcC5jcHAgXAogCVdlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHAgXAogCVdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9I
VFRQUGFyc2Vycy5oIFwKIAlXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTUlNRVNuaWZmZXIuY3Bw
IFwKIAlXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTUlNRVNuaWZmZXIuaCBcCisJV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL01JTUVTbmlmZmVyUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwIFwKKwlX
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTUlNRVNuaWZmZXJSZXNvdXJjZUhhbmRsZUNsaWVudC5o
IFwKIAlXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0YXRlTm90aWZpZXIuY3BwIFwK
IAlXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0YXRlTm90aWZpZXIuaCBcCiAJV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Byb3RlY3Rpb25TcGFjZS5jcHAgXApkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9XZWJDb3JlLnBybyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5kZXggNjFlNTdlMy4u
ZjlkZDJhOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnBybworKysgYi9XZWJDb3JlL1dl
YkNvcmUucHJvCkBAIC05NTksOSArOTU5LDExIEBAIFNPVVJDRVMgKz0gXAogICAgIHBsYXRmb3Jt
L25ldHdvcmsvQ3JlZGVudGlhbC5jcHAgXAogICAgIHBsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEu
Y3BwIFwKICAgICBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhQnVpbGRlci5jcHAgXAorICAgIHBs
YXRmb3JtL25ldHdvcmsvRm9yd2FyZGluZ1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcCBcCiAgICAg
cGxhdGZvcm0vbmV0d29yay9IVFRQSGVhZGVyTWFwLmNwcCBcCiAgICAgcGxhdGZvcm0vbmV0d29y
ay9IVFRQUGFyc2Vycy5jcHAgXAogICAgIHBsYXRmb3JtL25ldHdvcmsvTUlNRVNuaWZmZXIuY3Bw
IFwKKyAgICBwbGF0Zm9ybS9uZXR3b3JrL01JTUVTbmlmZmVyUmVzb3VyY2VIYW5kbGVDbGllbnQu
Y3BwIFwKICAgICBwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdGF0ZU5vdGlmaWVyLmNwcCBcCiAg
ICAgcGxhdGZvcm0vbmV0d29yay9Qcm90ZWN0aW9uU3BhY2UuY3BwIFwKICAgICBwbGF0Zm9ybS9u
ZXR3b3JrL1Jlc291cmNlRXJyb3JCYXNlLmNwcCBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNv
cmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3Jl
LnZjcHJvagppbmRleCAxY2E4NDkxLi44MjRlYjQwIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNv
cmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2Vi
Q29yZS52Y3Byb2oKQEAgLTUxMzMsNiArNTEzMywxNCBAQAogCQkJCQk+DQogCQkJCTwvRmlsZT4N
CiAJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cbmV0d29ya1xGb3J3
YXJkaW5nUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQor
CQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXG5ldHdvcmtcRm9yd2Fy
ZGluZ1Jlc291cmNlSGFuZGxlQ2xpZW50LmgiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJ
PEZpbGUNCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cbmV0d29ya1xIVFRQSGVhZGVy
TWFwLmNwcCINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KQEAgLTUxNTcsNiArNTE2NSwxNCBAQAog
CQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5c
cGxhdGZvcm1cbmV0d29ya1xNSU1FU25pZmZlclJlc291cmNlSGFuZGxlQ2xpZW50LmNwcCINCisJ
CQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxw
bGF0Zm9ybVxuZXR3b3JrXE1JTUVTbmlmZmVyUmVzb3VyY2VIYW5kbGVDbGllbnQuaCINCisJCQkJ
CT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0
Zm9ybVxuZXR3b3JrXE5ldHdvcmtTdGF0ZU5vdGlmaWVyLmNwcCINCiAJCQkJCT4NCiAJCQkJPC9G
aWxlPg0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZTgx
M2ZiNC4uMTM2Nzc1OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTIxMjEsNiArMjEyMSwxMCBAQAogCQk5M0Y5QjdBMDBCQTYwMzI2MDA4NTQwNjQgLyog
SlNDREFUQVNlY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTNGOUI3OUUwQkE2MDMyNjAwODU0MDY0IC8qIEpTQ0RBVEFTZWN0aW9uLmNwcCAq
LzsgfTsKIAkJOTNGOUI3QTEwQkE2MDMyNjAwODU0MDY0IC8qIEpTQ0RBVEFTZWN0aW9uLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Y5Qjc5RjBCQTYw
MzI2MDA4NTQwNjQgLyogSlNDREFUQVNlY3Rpb24uaCAqLzsgfTsKIAkJOTNGREFGQ0EwQjExMzA3
NDAwRTI3NDZGIC8qIEVkaXRvckluc2VydEFjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNGREFGQzkwQjExMzA3NDAwRTI3NDZGIC8qIEVkaXRv
ckluc2VydEFjdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCTk3MUM5QTI4MEZCMjU2NDMwMDIxODU0NSAvKiBNSU1FU25pZmZlclJlc291cmNl
SGFuZGxlQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDk3MUM5QTI2MEZCMjU2NDMwMDIxODU0NSAvKiBNSU1FU25pZmZlclJlc291cmNlSGFu
ZGxlQ2xpZW50LmNwcCAqLzsgfTsKKwkJOTcxQzlBMjkwRkIyNTY0MzAwMjE4NTQ1IC8qIE1JTUVT
bmlmZmVyUmVzb3VyY2VIYW5kbGVDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDk3MUM5QTI3MEZCMjU2NDMwMDIxODU0NSAvKiBNSU1FU25pZmZl
clJlc291cmNlSGFuZGxlQ2xpZW50LmggKi87IH07CisJCTk3NzU4QkUzMEZCMjU5Q0UwMEUwRkE2
NiAvKiBGb3J3YXJkaW5nUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTc3NThCRTEwRkIyNTlDRTAwRTBGQTY2IC8q
IEZvcndhcmRpbmdSZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAgKi87IH07CisJCTk3NzU4QkU0MEZC
MjU5Q0UwMEUwRkE2NiAvKiBGb3J3YXJkaW5nUmVzb3VyY2VIYW5kbGVDbGllbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3NzU4QkUyMEZCMjU5Q0Uw
MEUwRkE2NiAvKiBGb3J3YXJkaW5nUmVzb3VyY2VIYW5kbGVDbGllbnQuaCAqLzsgfTsKIAkJOTdF
QUYyQzcwRkIyNDQ1RTAwREI0NDlGIC8qIE1JTUVTbmlmZmVyLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3RUFGMkM1MEZCMjQ0NUQwMERCNDQ5RiAv
KiBNSU1FU25pZmZlci5jcHAgKi87IH07CiAJCTk3RUFGMkM4MEZCMjQ0NUUwMERCNDQ5RiAvKiBN
SU1FU25pZmZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTdFQUYyQzYwRkIyNDQ1RTAwREI0NDlGIC8qIE1JTUVTbmlmZmVyLmggKi87IH07CiAJCUEx
N0M4MTIyMEYyQTVDRjcwMDVEQUFFQiAvKiBIVE1MRWxlbWVudEZhY3RvcnkuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE3QzgxMjAwRjJBNUNGNzAw
NURBQUVCIC8qIEhUTUxFbGVtZW50RmFjdG9yeS5jcHAgKi87IH07CkBAIC03MDIwLDYgKzcwMjQs
MTAgQEAKIAkJOTNGOUI3OUUwQkE2MDMyNjAwODU0MDY0IC8qIEpTQ0RBVEFTZWN0aW9uLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ0RBVEFTZWN0aW9uLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNGOUI3OUYwQkE2MDMyNjAwODU0MDY0IC8q
IEpTQ0RBVEFTZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQ0RB
VEFTZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzRkRBRkM5MEIxMTMw
NzQwMEUyNzQ2RiAvKiBFZGl0b3JJbnNlcnRBY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEVkaXRvckluc2VydEFjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk5NzFDOUEyNjBGQjI1NjQzMDAyMTg1NDUgLyogTUlNRVNuaWZmZXJSZXNvdXJjZUhh
bmRsZUNsaWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNSU1F
U25pZmZlclJlc291cmNlSGFuZGxlQ2xpZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJOTcxQzlBMjcwRkIyNTY0MzAwMjE4NTQ1IC8qIE1JTUVTbmlmZmVyUmVzb3VyY2VIYW5k
bGVDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTUlNRVNuaWZmZXJS
ZXNvdXJjZUhhbmRsZUNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5Nzc1
OEJFMTBGQjI1OUNFMDBFMEZBNjYgLyogRm9yd2FyZGluZ1Jlc291cmNlSGFuZGxlQ2xpZW50LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZvcndhcmRpbmdSZXNvdXJj
ZUhhbmRsZUNsaWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk3NzU4QkUy
MEZCMjU5Q0UwMEUwRkE2NiAvKiBGb3J3YXJkaW5nUmVzb3VyY2VIYW5kbGVDbGllbnQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRm9yd2FyZGluZ1Jlc291cmNlSGFuZGxlQ2xp
ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3RUFGMkM1MEZCMjQ0NUQwMERC
NDQ5RiAvKiBNSU1FU25pZmZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBNSU1FU25pZmZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3RUFG
MkM2MEZCMjQ0NUUwMERCNDQ5RiAvKiBNSU1FU25pZmZlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBNSU1FU25pZmZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlBMTdDODEyMDBGMkE1Q0Y3MDA1REFBRUIgLyogSFRNTEVsZW1lbnRGYWN0b3J5LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhUTUxFbGVtZW50RmFjdG9yeS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMDEwMCw2ICsxMDEwOCw4IEBACiAJCQkJ
NTE0Qzc2NUIwQ0U5MjNBMTAwN0VGM0NEIC8qIEZvcm1EYXRhLmggKi8sCiAJCQkJMDg1QjkyQjgw
RUZERTczRDAwRTYxMjNDIC8qIEZvcm1EYXRhQnVpbGRlci5jcHAgKi8sCiAJCQkJMDg1QjkyQjkw
RUZERTczRDAwRTYxMjNDIC8qIEZvcm1EYXRhQnVpbGRlci5oICovLAorCQkJCTk3NzU4QkUxMEZC
MjU5Q0UwMEUwRkE2NiAvKiBGb3J3YXJkaW5nUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwICovLAor
CQkJCTk3NzU4QkUyMEZCMjU5Q0UwMEUwRkE2NiAvKiBGb3J3YXJkaW5nUmVzb3VyY2VIYW5kbGVD
bGllbnQuaCAqLywKIAkJCQkwQjhDNTZEMzBGMjg2MjdGMDAwNTAyRTEgLyogSFRUUEhlYWRlck1h
cC5jcHAgKi8sCiAJCQkJNTE0Qzc2NUMwQ0U5MjNBMTAwN0VGM0NEIC8qIEhUVFBIZWFkZXJNYXAu
aCAqLywKIAkJCQk1MTRDNzY1RDBDRTkyM0ExMDA3RUYzQ0QgLyogSFRUUFBhcnNlcnMuY3BwICov
LApAQCAtMTAxMDgsNiArMTAxMTgsOCBAQAogCQkJCTFBN0ZBNjE4MEREQTNCM0EwMDI4RjhBNSAv
KiBOZXR3b3JrU3RhdGVOb3RpZmllci5oICovLAogCQkJCTk3RUFGMkM1MEZCMjQ0NUQwMERCNDQ5
RiAvKiBNSU1FU25pZmZlci5jcHAgKi8sCiAJCQkJOTdFQUYyQzYwRkIyNDQ1RTAwREI0NDlGIC8q
IE1JTUVTbmlmZmVyLmggKi8sCisJCQkJOTcxQzlBMjYwRkIyNTY0MzAwMjE4NTQ1IC8qIE1JTUVT
bmlmZmVyUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwICovLAorCQkJCTk3MUM5QTI3MEZCMjU2NDMw
MDIxODU0NSAvKiBNSU1FU25pZmZlclJlc291cmNlSGFuZGxlQ2xpZW50LmggKi8sCiAJCQkJNTE0
Qzc2NUYwQ0U5MjNBMTAwN0VGM0NEIC8qIFByb3RlY3Rpb25TcGFjZS5jcHAgKi8sCiAJCQkJNTE0
Qzc2NjAwQ0U5MjNBMTAwN0VGM0NEIC8qIFByb3RlY3Rpb25TcGFjZS5oICovLAogCQkJCTkzNEY3
MTNEMEQ1QTZGMjgwMDAxOEQ2OSAvKiBSZXNvdXJjZUVycm9yQmFzZS5jcHAgKi8sCkBAIC0xNjg4
Nyw2ICsxNjg5OSw4IEBACiAJCQkJNUQxNUUzQUMwRjlFNkFDMTAwOUUwRTNGIC8qIFhNTFRva2Vu
aXplclNjb3BlLmggaW4gSGVhZGVycyAqLywKIAkJCQkzNzc0QUJBNTBGQTIxRUI0MDBBRDdERTkg
LyogT3ZlcmxhcFRlc3RSZXF1ZXN0Q2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk5N0VBRjJD
ODBGQjI0NDVFMDBEQjQ0OUYgLyogTUlNRVNuaWZmZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTk3
MUM5QTI5MEZCMjU2NDMwMDIxODU0NSAvKiBNSU1FU25pZmZlclJlc291cmNlSGFuZGxlQ2xpZW50
LmggaW4gSGVhZGVycyAqLywKKwkJCQk5Nzc1OEJFNDBGQjI1OUNFMDBFMEZBNjYgLyogRm9yd2Fy
ZGluZ1Jlc291cmNlSGFuZGxlQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5P
bmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTE4OTA1LDYgKzE4
OTE5LDggQEAKIAkJCQk3QTY3NEJEQjBGOUVCRjRFMDA2Q0YwOTkgLyogUGFnZUdyb3VwTG9hZERl
ZmVycmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTVEMTVFM0FCMEY5RTZBQzEwMDlFMEUzRiAv
KiBYTUxUb2tlbml6ZXJTY29wZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5N0VBRjJDNzBGQjI0
NDVFMDBEQjQ0OUYgLyogTUlNRVNuaWZmZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJOTcxQzlB
MjgwRkIyNTY0MzAwMjE4NTQ1IC8qIE1JTUVTbmlmZmVyUmVzb3VyY2VIYW5kbGVDbGllbnQuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJOTc3NThCRTMwRkIyNTlDRTAwRTBGQTY2IC8qIEZvcndhcmRp
bmdSZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5P
bmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvV2ViQ29yZVNvdXJjZXMuYmtsIGIvV2ViQ29yZS9XZWJDb3JlU291cmNlcy5ia2wKaW5k
ZXggYzljOTcyMC4uYWE1M2ZlYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlU291cmNlcy5i
a2wKKysrIGIvV2ViQ29yZS9XZWJDb3JlU291cmNlcy5ia2wKQEAgLTgyNSw3ICs4MjUsOSBAQCBU
aGlzIGZpbGUgY29udGFpbnMgdGhlIGxpc3Qgb2YgZmlsZXMgbmVlZGVkIHRvIGJ1aWxkIFdlYkNv
cmUuCiAgICAgICAgIHBsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwCiAgICAgICAgIHBs
YXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCiAgICAgICAgIHBsYXRmb3JtL25ldHdvcmsvRm9y
bURhdGFCdWlsZGVyLmNwcAorICAgICAgICBwbGF0Zm9ybS9uZXR3b3JrL0ZvcndhcmRpbmdSZXNv
dXJjZUhhbmRsZUNsaWVudC5jcHAKICAgICAgICAgcGxhdGZvcm0vbmV0d29yay9NSU1FU25pZmZl
ci5jcHAKKyAgICAgICAgcGxhdGZvcm0vbmV0d29yay9NSU1FU25pZmZlclJlc291cmNlSGFuZGxl
Q2xpZW50LmNwcAogICAgICAgICBwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdGF0ZU5vdGlmaWVy
LmNwcAogICAgICAgICBwbGF0Zm9ybS9uZXR3b3JrL1Byb3RlY3Rpb25TcGFjZS5jcHAKICAgICAg
ICAgcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUVycm9yQmFzZS5jcHAKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3J3YXJkaW5nUmVzb3VyY2VIYW5kbGVDbGllbnQuY3Bw
IGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0ZvcndhcmRpbmdSZXNvdXJjZUhhbmRsZUNsaWVu
dC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWIyNTRiMAotLS0gL2Rl
di9udWxsCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3J3YXJkaW5nUmVzb3VyY2VI
YW5kbGVDbGllbnQuY3BwCkBAIC0wLDAgKzEsMTQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDA5IEFkYW0gQmFydGguIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJGb3J3YXJkaW5nUmVzb3VyY2VIYW5kbGVDbGllbnQuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitGb3J3YXJkaW5nUmVzb3VyY2VIYW5kbGVDbGllbnQ6OkZv
cndhcmRpbmdSZXNvdXJjZUhhbmRsZUNsaWVudChSZXNvdXJjZUhhbmRsZUNsaWVudCogY2xpZW50
KQorICAgIDogbV9jbGllbnQoY2xpZW50KQoreworfQorCit2b2lkIEZvcndhcmRpbmdSZXNvdXJj
ZUhhbmRsZUNsaWVudDo6d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2Up
Cit7CisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+d2lsbFNlbmRSZXF1ZXN0
KGhhbmRsZSwgcmVxdWVzdCwgcmVzcG9uc2UpOworfQorCit2b2lkIEZvcndhcmRpbmdSZXNvdXJj
ZUhhbmRsZUNsaWVudDo6ZGlkU2VuZERhdGEoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgdW5zaWdu
ZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0Jl
U2VudCkKK3sKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT5kaWRTZW5kRGF0
YShoYW5kbGUsIGJ5dGVzU2VudCwgdG90YWxCeXRlc1RvQmVTZW50KTsKK30KKwordm9pZCBGb3J3
YXJkaW5nUmVzb3VyY2VIYW5kbGVDbGllbnQ6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUhh
bmRsZSogaGFuZGxlLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK3sKKyAgICBp
ZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlUmVzcG9uc2UoaGFuZGxl
LCByZXNwb25zZSk7Cit9CisKK3ZvaWQgRm9yd2FyZGluZ1Jlc291cmNlSGFuZGxlQ2xpZW50Ojpk
aWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBjb25zdCBjaGFyKiBkYXRhLCBp
bnQgbGVuZ3RoLCBpbnQgbGVuZ3RoUmVjZWl2ZWQpCit7CisgICAgaWYgKG1fY2xpZW50KQorICAg
ICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZURhdGEoaGFuZGxlLCBkYXRhLCBsZW5ndGgsIGxlbmd0
aFJlY2VpdmVkKTsKK30KKwordm9pZCBGb3J3YXJkaW5nUmVzb3VyY2VIYW5kbGVDbGllbnQ6OmRp
ZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSkKK3sKKyAgICBpZiAobV9jbGll
bnQpCisgICAgICAgIG1fY2xpZW50LT5kaWRGaW5pc2hMb2FkaW5nKGhhbmRsZSk7Cit9CisKK3Zv
aWQgRm9yd2FyZGluZ1Jlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRGYWlsKFJlc291cmNlSGFuZGxl
KiBoYW5kbGUsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQoreworICAgIGlmIChtX2NsaWVu
dCkKKyAgICAgICAgbV9jbGllbnQtPmRpZEZhaWwoaGFuZGxlLCBlcnJvcik7Cit9CisKK3ZvaWQg
Rm9yd2FyZGluZ1Jlc291cmNlSGFuZGxlQ2xpZW50Ojp3YXNCbG9ja2VkKFJlc291cmNlSGFuZGxl
KiBoYW5kbGUpCit7CisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+d2FzQmxv
Y2tlZChoYW5kbGUpOworfQorCit2b2lkIEZvcndhcmRpbmdSZXNvdXJjZUhhbmRsZUNsaWVudDo6
Y2Fubm90U2hvd1VSTChSZXNvdXJjZUhhbmRsZSogaGFuZGxlKQoreworICAgIGlmIChtX2NsaWVu
dCkKKyAgICAgICAgbV9jbGllbnQtPmNhbm5vdFNob3dVUkwoaGFuZGxlKTsKK30KKwordm9pZCBG
b3J3YXJkaW5nUmVzb3VyY2VIYW5kbGVDbGllbnQ6OndpbGxDYWNoZVJlc3BvbnNlKFJlc291cmNl
SGFuZGxlKiBoYW5kbGUsIENhY2hlU3RvcmFnZVBvbGljeSYgcG9saWN5KQoreworICAgIGlmICht
X2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPndpbGxDYWNoZVJlc3BvbnNlKGhhbmRsZSwgcG9s
aWN5KTsKK30KKworYm9vbCBGb3J3YXJkaW5nUmVzb3VyY2VIYW5kbGVDbGllbnQ6OnNob3VsZFVz
ZUNyZWRlbnRpYWxTdG9yYWdlKFJlc291cmNlSGFuZGxlKmhhbmRsZSkKK3sKKyAgICBpZiAobV9j
bGllbnQpCisgICAgICAgIHJldHVybiBtX2NsaWVudC0+c2hvdWxkVXNlQ3JlZGVudGlhbFN0b3Jh
Z2UoaGFuZGxlKTsKKworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBGb3J3YXJkaW5nUmVz
b3VyY2VIYW5kbGVDbGllbnQ6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShSZXNv
dXJjZUhhbmRsZSogaGFuZGxlLCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxl
bmdlKQoreworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZShoYW5kbGUsIGNoYWxsZW5nZSk7Cit9CisKK3ZvaWQgRm9y
d2FyZGluZ1Jlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRDYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZShSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSYgY2hhbGxlbmdlKQoreworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPmRp
ZENhbmNlbEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGhhbmRsZSwgY2hhbGxlbmdlKTsKK30KKwor
dm9pZCBGb3J3YXJkaW5nUmVzb3VyY2VIYW5kbGVDbGllbnQ6OnJlY2VpdmVkQ2FuY2VsbGF0aW9u
KFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBj
aGFsbGVuZ2UpCit7CisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+cmVjZWl2
ZWRDYW5jZWxsYXRpb24oaGFuZGxlLCBjaGFsbGVuZ2UpOworfQorCisjaWYgUExBVEZPUk0oTUFD
KQorTlNDYWNoZWRVUkxSZXNwb25zZSogRm9yd2FyZGluZ1Jlc291cmNlSGFuZGxlQ2xpZW50Ojp3
aWxsQ2FjaGVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBOU0NhY2hlZFVSTFJlc3Bv
bnNlKiByZXNwb25zZSkKK3sKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIHJldHVybiBtX2Ns
aWVudC0+d2lsbENhY2hlUmVzcG9uc2UoaGFuZGxlLCByZXNwb25zZSk7CisKKyAgICByZXR1cm4g
cmVzcG9uc2U7Cit9CisKK3ZvaWQgRm9yd2FyZGluZ1Jlc291cmNlSGFuZGxlQ2xpZW50Ojp3aWxs
U3RvcEJ1ZmZlcmluZ0RhdGEoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgY29uc3QgY2hhciogZGF0
YSwgaW50IGxlbmd0aCkKK3sKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT53
aWxsU3RvcEJ1ZmZlcmluZ0RhdGEoaGFuZGxlLCBkYXRhLCBsZW5ndGgpOworfQorI2VuZGlmCisK
KyNpZiBVU0UoQ0ZORVRXT1JLKQorYm9vbCBGb3J3YXJkaW5nUmVzb3VyY2VIYW5kbGVDbGllbnQ6
OnNob3VsZENhY2hlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBDRkNhY2hlZFVSTFJlc3BvbnNl
UmVmIHJlc3BvbnNlKQoreworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgcmV0dXJuIG1fY2xp
ZW50LT5zaG91bGRDYWNoZVJlc3BvbnNlKGhhbmRsZSwgcmVzcG9uc2UpOworCisgICAgcmV1dHJu
IHRydWU7Cit9CisjZW5kaWYKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCmRpZmYgLS1naXQg
YS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9yd2FyZGluZ1Jlc291cmNlSGFuZGxlQ2xpZW50
LmggYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9yd2FyZGluZ1Jlc291cmNlSGFuZGxlQ2xp
ZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDgxNjY0ZgotLS0gL2Rl
di9udWxsCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3J3YXJkaW5nUmVzb3VyY2VI
YW5kbGVDbGllbnQuaApAQCAtMCwwICsxLDY5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5
IEFkYW0gQmFydGguICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIEZvcndh
cmRpbmdSZXNvdXJjZUhhbmRsZUNsaWVudF9oCisjZGVmaW5lIEZvcndhcmRpbmdSZXNvdXJjZUhh
bmRsZUNsaWVudF9oCisKKyNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZUNsaWVudC5oIgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKKyAgICBjbGFzcyBGb3J3YXJkaW5nUmVzb3VyY2VIYW5kbGVDbGll
bnQgOiBwdWJsaWMgUmVzb3VyY2VIYW5kbGVDbGllbnQgeworICAgIHB1YmxpYzoKKyAgICAgICAg
Ly8gVGhpcyBjbGFzcyB3aWxsIGZvcndhcmQgYWxsIGV2ZW50cyB0byB8Y2xpZW50fC4KKyAgICAg
ICAgRm9yd2FyZGluZ1Jlc291cmNlSGFuZGxlQ2xpZW50KFJlc291cmNlSGFuZGxlQ2xpZW50KiBj
bGllbnQpOworCisgICAgICAgIFJlc291cmNlSGFuZGxlQ2xpZW50KiBjbGllbnQoKSBjb25zdCB7
IHJldHVybiBtX2NsaWVudDsgfQorICAgICAgICB2b2lkIHNldENsaWVudChSZXNvdXJjZUhhbmRs
ZUNsaWVudCogY2xpZW50KSB7IG1fY2xpZW50ID0gY2xpZW50OyB9CisKKyAgICAgICAgLy8gUmVz
b3VyY2VIYW5kbGVDbGllbnQgbWV0aG9kcy4KKyAgICAgICAgdmlydHVhbCB2b2lkIHdpbGxTZW5k
UmVxdWVzdChSZXNvdXJjZUhhbmRsZSosIFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZFNlbmREYXRhKFJlc291cmNlSGFu
ZGxlKiwgdW5zaWduZWQgbG9uZyBsb25nLCB1bnNpZ25lZCBsb25nIGxvbmcpOworICAgICAgICB2
aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYpOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVz
b3VyY2VIYW5kbGUqLCBjb25zdCBjaGFyKiwgaW50LCBpbnQpOworICAgICAgICB2aXJ0dWFsIHZv
aWQgZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUhhbmRsZSopOworICAgICAgICB2aXJ0dWFsIHZv
aWQgZGlkRmFpbChSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKKyAgICAg
ICAgdmlydHVhbCB2b2lkIHdhc0Jsb2NrZWQoUmVzb3VyY2VIYW5kbGUqKTsKKyAgICAgICAgdmly
dHVhbCB2b2lkIGNhbm5vdFNob3dVUkwoUmVzb3VyY2VIYW5kbGUqKTsKKyAgICAgICAgdmlydHVh
bCB2b2lkIHdpbGxDYWNoZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiwgQ2FjaGVTdG9yYWdlUG9s
aWN5Jik7CisgICAgICAgIHZpcnR1YWwgYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZShS
ZXNvdXJjZUhhbmRsZSopOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlKFJlc291cmNlSGFuZGxlKiwgY29uc3QgQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UmKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZENhbmNlbEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKFJlc291cmNlSGFuZGxlKiwgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKTsK
KyAgICAgICAgdmlydHVhbCB2b2lkIHJlY2VpdmVkQ2FuY2VsbGF0aW9uKFJlc291cmNlSGFuZGxl
KiwgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKTsKKyNpZiBQTEFURk9STShNQUMpCisg
ICAgICAgIHZpcnR1YWwgTlNDYWNoZWRVUkxSZXNwb25zZSogd2lsbENhY2hlUmVzcG9uc2UoUmVz
b3VyY2VIYW5kbGUqLCBOU0NhY2hlZFVSTFJlc3BvbnNlKik7CisgICAgICAgIHZpcnR1YWwgdm9p
ZCB3aWxsU3RvcEJ1ZmZlcmluZ0RhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBjaGFyKiwgaW50
KTsKKyNlbmRpZgorI2lmIFVTRShDRk5FVFdPUkspCisgICAgICAgIHZpcnR1YWwgYm9vbCBzaG91
bGRDYWNoZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiwgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZiBy
ZXNwb25zZSk7CisjZW5kaWYKKworICAgIHByaXZhdGU6CisgICAgICAgIFJlc291cmNlSGFuZGxl
Q2xpZW50KiBtX2NsaWVudDsKKyAgICB9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBGb3J3YXJkaW5nUmVzb3VyY2VIYW5kbGVDbGllbnRfaApkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL01JTUVTbmlmZmVyUmVzb3VyY2VIYW5kbGVDbGllbnQuY3Bw
IGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL01JTUVTbmlmZmVyUmVzb3VyY2VIYW5kbGVDbGll
bnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU0NmRlNDkKLS0tIC9k
ZXYvbnVsbAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTUlNRVNuaWZmZXJSZXNvdXJj
ZUhhbmRsZUNsaWVudC5jcHAKQEAgLTAsMCArMSw0NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAwOSBBZGFtIEJhcnRoLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiTUlNRVNuaWZmZXJSZXNvdXJjZUhhbmRsZUNsaWVudC5oIgor
CisjaW5jbHVkZSAiTUlNRVNuaWZmZXIuaCIKKyNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQgTUlNRVNuaWZmZXJSZXNvdXJjZUhhbmRsZUNs
aWVudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQoreworICAgIEZvcndhcmRpbmdSZXNvdXJjZUhhbmRs
ZUNsaWVudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGhhbmRsZSwgcmVzcG9uc2UpOworCisgICAgaWYg
KCFzaG91bGRTbmlmZk1JTUVUeXBlKHJlc3BvbnNlLnVybCgpLCByZXNwb25zZS5taW1lVHlwZSgp
KSkgeworICAgICAgICBoYW5kbGUtPmNsZWFyTUlNRVNuaWZmZXIoKTsKKyAgICAgICAgLy8gV0FS
TklORzogV2UgYXJlIHByb2JhYmx5IGRlbGV0ZWQgYXQgdGhpcyBwb2ludC4KKyAgICB9Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL01JTUVTbmlmZmVyUmVzb3VyY2VIYW5kbGVDbGllbnQuaCBiL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9NSU1FU25pZmZlclJlc291cmNlSGFuZGxlQ2xpZW50LmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjc3ZjQ4ZgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9NSU1FU25pZmZlclJlc291cmNlSGFuZGxlQ2xpZW50LmgKQEAg
LTAsMCArMSw0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBBZGFtIEJhcnRoLiAgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBNSU1FU25pZmZlclJlc291cmNlSGFu
ZGxlQ2xpZW50X2gKKyNkZWZpbmUgTUlNRVNuaWZmZXJSZXNvdXJjZUhhbmRsZUNsaWVudF9oCisK
KyNpbmNsdWRlICJGb3J3YXJkaW5nUmVzb3VyY2VIYW5kbGVDbGllbnQuaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCisgICAgY2xhc3MgTUlNRVNuaWZmZXJSZXNvdXJjZUhhbmRsZUNsaWVudCA6
IHB1YmxpYyBGb3J3YXJkaW5nUmVzb3VyY2VIYW5kbGVDbGllbnQgeworICAgIHB1YmxpYzoKKyAg
ICAgICAgTUlNRVNuaWZmZXJSZXNvdXJjZUhhbmRsZUNsaWVudChSZXNvdXJjZUhhbmRsZUNsaWVu
dCogY2xpZW50KQorICAgICAgICAgICAgOiBGb3J3YXJkaW5nUmVzb3VyY2VIYW5kbGVDbGllbnQo
Y2xpZW50KSB7IH0KKworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFJl
c291cmNlSGFuZGxlKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOworICAgIH07CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIE1JTUVTbmlmZmVyUmVzb3VyY2VIYW5kbGVD
bGllbnRfaApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFu
ZGxlLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5jcHAKaW5k
ZXggYTczMjBiOS4uOWJkYjFlYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlSGFuZGxlLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3Vy
Y2VIYW5kbGUuY3BwCkBAIC04Niw2ICs4NiwxMyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpmaXJl
RmFpbHVyZShUaW1lcjxSZXNvdXJjZUhhbmRsZT4qKQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogfQogCit2b2lkIFJlc291cmNlSGFuZGxlOjpjbGVhck1JTUVTbmlmZmVyKCkgeworICAgIGlm
IChkLT5tX21pbWVTbmlmZmVyKSB7CisgICAgICAgIGQtPm1fY2xpZW50ID0gZC0+bV9taW1lU25p
ZmZlci0+Y2xpZW50KCk7CisgICAgICAgIGQtPm1fbWltZVNuaWZmZXIuY2xlYXIoKTsKKyAgICB9
Cit9CisKIFJlc291cmNlSGFuZGxlQ2xpZW50KiBSZXNvdXJjZUhhbmRsZTo6Y2xpZW50KCkgY29u
c3QKIHsKICAgICByZXR1cm4gZC0+bV9jbGllbnQ7CkBAIC05Myw3ICsxMDAsMTAgQEAgUmVzb3Vy
Y2VIYW5kbGVDbGllbnQqIFJlc291cmNlSGFuZGxlOjpjbGllbnQoKSBjb25zdAogCiB2b2lkIFJl
c291cmNlSGFuZGxlOjpzZXRDbGllbnQoUmVzb3VyY2VIYW5kbGVDbGllbnQqIGNsaWVudCkKIHsK
LSAgICBkLT5tX2NsaWVudCA9IGNsaWVudDsKKyAgICBpZiAoZC0+bV9taW1lU25pZmZlcikKKyAg
ICAgICAgZC0+bV9taW1lU25pZmZlci0+c2V0Q2xpZW50KGNsaWVudCk7CisgICAgZWxzZQorICAg
ICAgICBkLT5tX2NsaWVudCA9IGNsaWVudDsKIH0KIAogY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBS
ZXNvdXJjZUhhbmRsZTo6cmVxdWVzdCgpIGNvbnN0CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaCBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZUhhbmRsZS5oCmluZGV4IGJhZjQxOGIuLjMxZWMwMjMgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCisrKyBiL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCkBAIC0xNzUsNiArMTc1LDggQEAgcHVibGljOgog
ICAgIHZvaWQgY2xlYXJBdXRoZW50aWNhdGlvbigpOwogICAgIHZvaWQgY2FuY2VsKCk7CiAKKyAg
ICB2b2lkIGNsZWFyTUlNRVNuaWZmZXIoKTsKKwogICAgIC8vIFRoZSBjbGllbnQgbWF5IGJlIDAs
IGluIHdoaWNoIGNhc2Ugbm8gY2FsbGJhY2tzIHdpbGwgYmUgbWFkZS4KICAgICBSZXNvdXJjZUhh
bmRsZUNsaWVudCogY2xpZW50KCkgY29uc3Q7CiAgICAgdm9pZCBzZXRDbGllbnQoUmVzb3VyY2VI
YW5kbGVDbGllbnQqKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZUhhbmRsZUludGVybmFsLmggYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VI
YW5kbGVJbnRlcm5hbC5oCmluZGV4IDc5YWY3NWMuLjU5NzYxODQgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmgKKysrIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaApAQCAtMjYsNiArMjYs
NyBAQAogI2lmbmRlZiBSZXNvdXJjZUhhbmRsZUludGVybmFsX2gKICNkZWZpbmUgUmVzb3VyY2VI
YW5kbGVJbnRlcm5hbF9oCiAKKyNpbmNsdWRlICJNSU1FU25pZmZlclJlc291cmNlSGFuZGxlQ2xp
ZW50LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJl
cXVlc3QuaCIKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIgpAQCAtNzMsMTMg
Kzc0LDExIEBAIGNsYXNzIE5TVVJMQ29ubmVjdGlvbjsKIC8vIFdlYkNvcmVSZXNvdXJjZUxvYWRl
ckltcCB3aGljaCBhdm9pZHMgZG9pbmcgd29yayBpbiBkZWFsbG9jKS4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewotICAgIGNsYXNzIFJlc291cmNlSGFuZGxlQ2xpZW50OwogCiAgICAgY2xhc3MgUmVz
b3VyY2VIYW5kbGVJbnRlcm5hbCA6IE5vbmNvcHlhYmxlIHsKICAgICBwdWJsaWM6CiAgICAgICAg
IFJlc291cmNlSGFuZGxlSW50ZXJuYWwoUmVzb3VyY2VIYW5kbGUqIGxvYWRlciwgY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNvdXJjZUhhbmRsZUNsaWVudCogYywgYm9vbCBkZWZl
cnNMb2FkaW5nLCBib29sIHNob3VsZENvbnRlbnRTbmlmZiwgYm9vbCBtaWdodERvd25sb2FkRnJv
bUhhbmRsZSkKLSAgICAgICAgICAgIDogbV9jbGllbnQoYykKLSAgICAgICAgICAgICwgbV9yZXF1
ZXN0KHJlcXVlc3QpCisgICAgICAgICAgICA6IG1fcmVxdWVzdChyZXF1ZXN0KQogICAgICAgICAg
ICAgLCBzdGF0dXMoMCkKICAgICAgICAgICAgICwgbV9kZWZlcnNMb2FkaW5nKGRlZmVyc0xvYWRp
bmcpCiAgICAgICAgICAgICAsIG1fc2hvdWxkQ29udGVudFNuaWZmKHNob3VsZENvbnRlbnRTbmlm
ZikKQEAgLTEzMyw2ICsxMzIsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjZW5kaWYKICAgICAg
ICAgICAgICwgbV9mYWlsdXJlVGltZXIobG9hZGVyLCAmUmVzb3VyY2VIYW5kbGU6OmZpcmVGYWls
dXJlKQogICAgICAgICB7CisgICAgICAgICAgICBtX21pbWVTbmlmZmVyLnNldChuZXcgTUlNRVNu
aWZmZXJSZXNvdXJjZUhhbmRsZUNsaWVudChjKSk7CisgICAgICAgICAgICBtX2NsaWVudCA9IG1f
bWltZVNuaWZmZXIuZ2V0KCk7CisKICAgICAgICAgICAgIGNvbnN0IEtVUkwmIHVybCA9IG1fcmVx
dWVzdC51cmwoKTsKICAgICAgICAgICAgIG1fdXNlciA9IHVybC51c2VyKCk7CiAgICAgICAgICAg
ICBtX3Bhc3MgPSB1cmwucGFzcygpOwpAQCAtMTQ5LDcgKzE1MSw5IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgLy8gU3VnZ2VzdGVkIGNyZWRlbnRpYWxzIGZvciB0aGUgY3VycmVudCBy
ZWRpcmVjdGlvbiBzdGVwLgogICAgICAgICBTdHJpbmcgbV91c2VyOwogICAgICAgICBTdHJpbmcg
bV9wYXNzOwotICAgICAgICAKKworICAgICAgICBPd25QdHI8TUlNRVNuaWZmZXJSZXNvdXJjZUhh
bmRsZUNsaWVudD4gbV9taW1lU25pZmZlcjsKKwogICAgICAgICBpbnQgc3RhdHVzOwogCiAgICAg
ICAgIGJvb2wgbV9kZWZlcnNMb2FkaW5nOwotLSAKMS42LjAuMQoK
</data>
<flag name="review"
          id="15099"
          type_id="1"
          status="-"
          setter="mjs"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>30433</attachid>
            <date>2009-05-17 19:45:18 -0700</date>
            <delta_ts>2009-05-22 21:56:47 -0700</delta_ts>
            <desc>Step 3: Implement sniffing algorithm</desc>
            <filename>port-sniffer.patch</filename>
            <type>text/plain</type>
            <size>18931</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">RnJvbSA1ODU4OGE1MWI3NjBmNjc4NzIyZDUzY2E3NDAyNmYxNzk3MzhhMzk5IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBZGFtIEJhcnRoIDxhYmFydGhAYXJjdGljYS5sb2NhbD4KRGF0
ZTogU3VuLCAxNyBNYXkgMjAwOSAxOToyMjowNiAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIHBvcnQg
c25pZmZlcgoKLS0tCiBXZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgIHwg
ICAyMiArKwogV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL01JTUVTbmlmZmVyLmNwcCB8ICA0MDUg
KysrKysrKysrKysrKysrKysrKysrKysrKysrKystCiBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
TUlNRVNuaWZmZXIuaCAgIHwgICAgMyArLQogMyBmaWxlcyBjaGFuZ2VkLCA0MjQgaW5zZXJ0aW9u
cygrKSwgNiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dl
YkNvcmUvQ2hhbmdlTG9nCmluZGV4IDI3ODVlNjguLjc5OTcyZjMgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIw
MDktMDUtMTcgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjUwNjQKKworICAgICAgICBQb3J0IHRoZSBDaHJvbWl1bSBNSU1F
IHNuaWZmZXIgdG8gb3VyIHNvdXJjZSB0cmVlLgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9NSU1FU25pZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjopOgorICAgICAgICAoV2ViQ29y
ZTo6aXNBc2NpaVdoaXRlc3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6bWF0Y2hNYWdpY051bWJl
cik6CisgICAgICAgIChXZWJDb3JlOjpjaGVja0Zvck1hZ2ljTnVtYmVycyk6CisgICAgICAgIChX
ZWJDb3JlOjpzbmlmZkZvckhUTUwpOgorICAgICAgICAoV2ViQ29yZTo6c25pZmZGb3JNYWdpY051
bWJlcnMpOgorICAgICAgICAoV2ViQ29yZTo6c25pZmZYTUwpOgorICAgICAgICAoV2ViQ29yZTo6
bG9va3NCaW5hcnkpOgorICAgICAgICAoV2ViQ29yZTo6aXNVbmtub3duTUlNRVR5cGUpOgorICAg
ICAgICAoV2ViQ29yZTo6c2hvdWxkU25pZmZNSU1FVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpz
bmlmZk1JTUVUeXBlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL01JTUVTbmlmZmVyLmg6
CisKIDIwMDktMDUtMDYgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9NSU1FU25pZmZlci5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTUlN
RVNuaWZmZXIuY3BwCmluZGV4IDIzYmFjNWMuLjZkNjAyYmUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9NSU1FU25pZmZlci5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL01JTUVTbmlmZmVyLmNwcApAQCAtMjksMTYgKzI5LDQxMSBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLWJvb2wgc2hvdWxkU25pZmZNSU1FVHlwZShjb25zdCBLVVJMJiwgY29uc3Qg
U3RyaW5nJikKKy8vIFdlIGFyZW4ndCBpbnRlcmVzdGVkIGluIGxvb2tpbmcgYXQgbW9yZSB0aGFu
IDUxMiBieXRlcyBvZiBjb250ZW50CitzdGF0aWMgY29uc3QgaW50IGtNYXhCeXRlc1RvU25pZmYg
PSA1MTI7CisKKy8vIFRoZSBudW1iZXIgb2YgY29udGVudCBieXRlcyB3ZSBuZWVkIHRvIHVzZSBh
bGwgb3VyIG1hZ2ljIG51bWJlcnMuICBGZWVsIGZyZWUKKy8vIHRvIGluY3JlYXNlIHRoaXMgbnVt
YmVyIGlmIHlvdSBhZGQgYSBsb25nZXIgbWFnaWMgbnVtYmVyLgorc3RhdGljIGNvbnN0IGludCBr
Qnl0ZXNSZXF1aXJlZEZvck1hZ2ljID0gNDI7CisKKyNkZWZpbmUgYXJyYXlzaXplKEEpIChzaXpl
b2YoQSkgLyBzaXplb2YoQVswXSkpCisKK3N0cnVjdCBNYWdpY051bWJlciB7CisgICAgY29uc3Qg
Y2hhciogbWltZVR5cGU7CisgICAgY29uc3QgY2hhciogbWFnaWM7CisgICAgaW50IG1hZ2ljTGVu
OworICAgIGJvb2wgaXNTdHJpbmc7Cit9OworCisjZGVmaW5lIE1BR0lDX05VTUJFUihtaW1lVHlw
ZSwgbWFnaWMpIFwKKyAgeyAobWltZVR5cGUpLCAobWFnaWMpLCBzaXplb2YobWFnaWMpLTEsIGZh
bHNlIH0sCisKKy8vIE1hZ2ljIHN0cmluZ3MgYXJlIGNhc2UgaW5zZW5zaXRpdmUgYW5kIG11c3Qg
bm90IGluY2x1ZGUgJ1wwJyBjaGFyYWN0ZXJzCisjZGVmaW5lIE1BR0lDX1NUUklORyhtaW1lVHlw
ZSwgbWFnaWMpIFwKKyAgeyAobWltZVR5cGUpLCAobWFnaWMpLCBzaXplb2YobWFnaWMpLTEsIHRy
dWUgfSwKKworc3RhdGljIGNvbnN0IE1hZ2ljTnVtYmVyIGtNYWdpY051bWJlcnNbXSA9IHsKKyAg
ICAvLyBTb3VyY2U6IEhUTUwgNSBzcGVjaWZpY2F0aW9uCisgICAgTUFHSUNfTlVNQkVSKCJhcHBs
aWNhdGlvbi9wZGYiLCAiJVBERi0iKQorICAgIE1BR0lDX05VTUJFUigiYXBwbGljYXRpb24vcG9z
dHNjcmlwdCIsICIlIVBTLUFkb2JlLSIpCisgICAgTUFHSUNfTlVNQkVSKCJpbWFnZS9naWYiLCAi
R0lGODdhIikKKyAgICBNQUdJQ19OVU1CRVIoImltYWdlL2dpZiIsICJHSUY4OWEiKQorICAgIE1B
R0lDX05VTUJFUigiaW1hZ2UvcG5nIiwgIlx4ODkiICJQTkdceDBEXHgwQVx4MUFceDBBIikKKyAg
ICBNQUdJQ19OVU1CRVIoImltYWdlL2pwZWciLCAiXHhGRlx4RDhceEZGIikKKyAgICBNQUdJQ19O
VU1CRVIoImltYWdlL2JtcCIsICJCTSIpCisgICAgLy8gU291cmNlOiBNb3ppbGxhCisgICAgTUFH
SUNfTlVNQkVSKCJ0ZXh0L3BsYWluIiwgIiMhIikgIC8vIFNjcmlwdAorICAgIE1BR0lDX05VTUJF
UigidGV4dC9wbGFpbiIsICIlISIpICAvLyBTY3JpcHQsIHNpbWlsYXIgdG8gUFMKKyAgICBNQUdJ
Q19OVU1CRVIoInRleHQvcGxhaW4iLCAiRnJvbSIpCisgICAgTUFHSUNfTlVNQkVSKCJ0ZXh0L3Bs
YWluIiwgIj5Gcm9tIikKKyAgICAvLyBDaHJvbWUgc3BlY2lmaWMKKyAgICBNQUdJQ19OVU1CRVIo
ImFwcGxpY2F0aW9uL3gtZ3ppcCIsICJceDFGXHg4Qlx4MDgiKQorICAgIE1BR0lDX05VTUJFUigi
YXVkaW8veC1wbi1yZWFsYXVkaW8iLCAiXHgyRVx4NTJceDREXHg0NiIpCisgICAgTUFHSUNfTlVN
QkVSKCJ2aWRlby94LW1zLWFzZiIsCisgICAgICAgICJceDMwXHgyNlx4QjJceDc1XHg4RVx4NjZc
eENGXHgxMVx4QTZceEQ5XHgwMFx4QUFceDAwXHg2Mlx4Q0VceDZDIikKKyAgICBNQUdJQ19OVU1C
RVIoImltYWdlL3RpZmYiLCAiSSBJIikKKyAgICBNQUdJQ19OVU1CRVIoImltYWdlL3RpZmYiLCAi
SUkqIikKKyAgICBNQUdJQ19OVU1CRVIoImltYWdlL3RpZmYiLCAiTU1ceDAwKiIpCisgICAgTUFH
SUNfTlVNQkVSKCJhdWRpby9tcGVnIiwgIklEMyIpCisgICAgLy8gRklYTUU6IHdlIGRvbid0IGhh
bmRsZSBwYXJ0aWFsIGJ5dGUgbWF0Y2hlcyB5ZXQKKyAgICAvLyBNQUdJQ19OVU1CRVIoInZpZGVv
L21wZWciLCAiXHgwMFx4MDBceDAxXHhCIikKKyAgICAvLyBNQUdJQ19OVU1CRVIoImF1ZGlvL21w
ZWciLCAiXHhGRlx4RSIpCisgICAgLy8gTUFHSUNfTlVNQkVSKCJhdWRpby9tcGVnIiwgIlx4RkZc
eEYiKQorICAgIE1BR0lDX05VTUJFUigiYXBwbGljYXRpb24vemlwIiwgIlBLXHgwM1x4MDQiKQor
ICAgIE1BR0lDX05VTUJFUigiYXBwbGljYXRpb24veC1yYXItY29tcHJlc3NlZCIsICJSYXIhXHgx
QVx4MDdceDAwIikKKyAgICBNQUdJQ19OVU1CRVIoImFwcGxpY2F0aW9uL3gtbXNtZXRhZmlsZSIs
ICJceEQ3XHhDRFx4QzZceDlBIikKKyAgICBNQUdJQ19OVU1CRVIoImFwcGxpY2F0aW9uL29jdGV0
LXN0cmVhbSIsICJNWiIpICAvLyBFWEUKKyAgICAvLyBTbmlmZmluZyBmb3IgRmxhc2g6CisgICAg
Ly8KKyAgICAvLyAgIE1BR0lDX05VTUJFUigiYXBwbGljYXRpb24veC1zaG9ja3dhdmUtZmxhc2gi
LCAiQ1dTIikKKyAgICAvLyAgIE1BR0lDX05VTUJFUigiYXBwbGljYXRpb24veC1zaG9ja3dhdmUt
Zmxhc2giLCAiRkxWIikKKyAgICAvLyAgIE1BR0lDX05VTUJFUigiYXBwbGljYXRpb24veC1zaG9j
a3dhdmUtZmxhc2giLCAiRldTIikKKyAgICAvLworICAgIC8vIEluY2x1ZGluZyB0aGVzZSBtYWdp
YyBudW1iZXIgZm9yIEZsYXNoIGlzIGEgdHJhZGUgb2ZmLgorICAgIC8vCisgICAgLy8gUHJvczoK
KyAgICAvLyAgICogRmxhc2ggaXMgYW4gaW1wb3J0YW50IGFuZCBwb3B1bGFyIGZpbGUgZm9ybWF0
CisgICAgLy8KKyAgICAvLyBDb25zOgorICAgIC8vICAgKiBUaGVzZSBwYXR0ZXJucyBhcmUgZmFp
cmx5IHdlYWsKKyAgICAvLyAgICogSWYgd2UgbWlzdGFrZW5seSBkZWNpZGUgc29tZXRoaW5nIGlz
IEZsYXNoLCB3ZSB3aWxsIGV4ZWN1dGUgaXQKKyAgICAvLyAgICAgaW4gdGhlIG9yaWdpbiBvZiBh
biB1bnN1c3BlY3Rpbmcgc2l0ZS4gIFRoaXMgY291bGQgYmUgYSBzZWN1cml0eQorICAgIC8vICAg
ICB2dWxuZXJhYmlsaXR5IGlmIHRoZSBzaXRlIGFsbG93cyB1c2VycyB0byB1cGxvYWQgY29udGVu
dC4KKyAgICAvLworICAgIC8vIE9uIGJhbGFuY2UsIHdlIGRvIG5vdCBpbmNsdWRlIHRoZXNlIHBh
dHRlcm5zLgorfTsKKworLy8gT3VyIEhUTUwgc25pZmZlciBkaWZmZXJzIHNsaWdodGx5IGZyb20g
TW96aWxsYS4gIEZvciBleGFtcGxlLCBNb3ppbGxhIHdpbGwKKy8vIGRlY2lkZSB0aGF0IGEgZG9j
dW1lbnQgdGhhdCBiZWdpbnMgIjwhRE9DVFlQRSBTT0FQLUVOVjpFbnZlbG9wZSBQVUJMSUMgIiBp
cworLy8gSFRNTCwgYnV0IHdlIHdpbGwgbm90LgorCisjZGVmaW5lIE1BR0lDX0hUTUxfVEFHKHRh
ZykgTUFHSUNfU1RSSU5HKCJ0ZXh0L2h0bWwiLCAiPCIgdGFnKQorCitzdGF0aWMgY29uc3QgTWFn
aWNOdW1iZXIga1NuaWZmYWJsZVRhZ3NbXSA9IHsKKyAgICAvLyBYTUwgcHJvY2Vzc2luZyBkaXJl
Y3RpdmUuICBBbHRob3VnaCB0aGlzIGlzIG5vdCBhbiBIVE1MIG1pbWUgdHlwZSwgd2UKKyAgICAv
LyBzbmlmZiBmb3IgdGhpcyBpbiB0aGUgSFRNTCBwaGFzZSBiZWNhdXNlIHRleHQveG1sIGlzIGp1
c3QgYXMgcG93ZXJmdWwgYXMKKyAgICAvLyBIVE1MIGFuZCB3ZSB3YW50IHRvIGxldmVyYWdlIG91
ciB3aGl0ZSBzcGFjZSBza2lwcGluZyB0ZWNobm9sb2d5LgorICAgIE1BR0lDX05VTUJFUigidGV4
dC94bWwiLCAiPD94bWwiKSAgLy8gTW96aWxsYQorICAgIC8vIERPQ1RZUEVzCisgICAgTUFHSUNf
SFRNTF9UQUcoIiFET0NUWVBFIGh0bWwiKSAgLy8gSFRNTDUgc3BlYworICAgIC8vIFNuaWZmYWJs
ZSB0YWdzLCBvcmRlcmVkIGJ5IGhvdyBvZnRlbiB0aGV5IG9jY3VyIGluIHNuaWZmYWJsZSBkb2N1
bWVudHMuCisgICAgTUFHSUNfSFRNTF9UQUcoInNjcmlwdCIpICAvLyBIVE1MNSBzcGVjLCBNb3pp
bGxhCisgICAgTUFHSUNfSFRNTF9UQUcoImh0bWwiKSAgLy8gSFRNTDUgc3BlYywgTW96aWxsYQor
ICAgIE1BR0lDX0hUTUxfVEFHKCIhLS0iKQorICAgIE1BR0lDX0hUTUxfVEFHKCJoZWFkIikgIC8v
IEhUTUw1IHNwZWMsIE1vemlsbGEKKyAgICBNQUdJQ19IVE1MX1RBRygiaWZyYW1lIikgIC8vIE1v
emlsbGEKKyAgICBNQUdJQ19IVE1MX1RBRygiaDEiKSAgLy8gTW96aWxsYQorICAgIE1BR0lDX0hU
TUxfVEFHKCJkaXYiKSAgLy8gTW96aWxsYQorICAgIE1BR0lDX0hUTUxfVEFHKCJmb250IikgIC8v
IE1vemlsbGEKKyAgICBNQUdJQ19IVE1MX1RBRygidGFibGUiKSAgLy8gTW96aWxsYQorICAgIE1B
R0lDX0hUTUxfVEFHKCJhIikgIC8vIE1vemlsbGEKKyAgICBNQUdJQ19IVE1MX1RBRygic3R5bGUi
KSAgLy8gTW96aWxsYQorICAgIE1BR0lDX0hUTUxfVEFHKCJ0aXRsZSIpICAvLyBNb3ppbGxhCisg
ICAgTUFHSUNfSFRNTF9UQUcoImIiKSAgLy8gTW96aWxsYQorICAgIE1BR0lDX0hUTUxfVEFHKCJi
b2R5IikgIC8vIE1vemlsbGEKKyAgICBNQUdJQ19IVE1MX1RBRygiYnIiKQorICAgIE1BR0lDX0hU
TUxfVEFHKCJwIikgIC8vIE1vemlsbGEKK307CisKKy8vIEZJWE1FOiBUaGlzIG11c3QgYmUgZGVm
aW5lZCBzb21ld2hlcmUgZWxzZS4uCitzdGF0aWMgYm9vbCBpc0FzY2lpV2hpdGVzcGFjZShjaGFy
IGMpIHsKKyAgcmV0dXJuIGMgPT0gJyAnIHx8IGMgPT0gJ1xyJyB8fCBjID09ICdcbicgfHwgYyA9
PSAnXHQnOworfQorCitzdGF0aWMgYm9vbCBtYXRjaE1hZ2ljTnVtYmVyKGNvbnN0IGNoYXIqIGNv
bnRlbnQsIGludCBzaXplLCBjb25zdCBNYWdpY051bWJlciogbWFnaWNFbnRyeSwgU3RyaW5nKiBy
ZXN1bHQpCit7CisgICAgY29uc3QgaW50IGxlbiA9IG1hZ2ljRW50cnktPm1hZ2ljTGVuOworCisg
ICAgLy8gS2VlcCBrQnl0ZXNSZXF1aXJlZEZvck1hZ2ljIGhvbmVzdC4KKyAgICBBU1NFUlQobGVu
IDw9IGtCeXRlc1JlcXVpcmVkRm9yTWFnaWMpOworCisgICAgLy8gVG8gY29tcGFyZSB3aXRoIG1h
Z2ljIHN0cmluZ3MsIHdlIG5lZWQgdG8gY29tcHV0ZSBzdHJsZW4oY29udGVudCksIGJ1dAorICAg
IC8vIGNvbnRlbnQgbWlnaHQgbm90IGFjdHVhbGx5IGhhdmUgYSBudWxsIHRlcm1pbmF0b3IuICBJ
biB0aGF0IGNhc2UsIHdlCisgICAgLy8gcHJldGVuZCB0aGUgbGVuZ3RoIGlzIGNvbnRlbnRfc2l6
ZS4KKyAgICBjb25zdCBjaGFyKiBlbmQgPSBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4obWVtY2hy
KGNvbnRlbnQsICdcMCcsIHNpemUpKTsKKyAgICBjb25zdCBpbnQgY29udGVudFN0cmxlbiA9IChl
bmQgIT0gTlVMTCkgPyAoZW5kIC0gY29udGVudCkgOiBzaXplOworCisgICAgYm9vbCBtYXRjaCA9
IGZhbHNlOworICAgIGlmIChtYWdpY0VudHJ5LT5pc1N0cmluZykgeworICAgICAgICBpZiAoY29u
dGVudFN0cmxlbiA+PSBsZW4pIHsKKyAgICAgICAgICAgIC8vIFN0cmluZyBjb21wYXJpc29ucyBh
cmUgY2FzZS1pbnNlbnNpdGl2ZQorICAgICAgICAgICAgbWF0Y2ggPSAoc3RybmNhc2VjbXAobWFn
aWNFbnRyeS0+bWFnaWMsIGNvbnRlbnQsIGxlbikgPT0gMCk7CisgICAgICAgIH0KKyAgICB9IGVs
c2UgeworICAgICAgICBpZiAoc2l6ZSA+PSBsZW4pCisgICAgICAgICAgICBtYXRjaCA9IChtZW1j
bXAobWFnaWNFbnRyeS0+bWFnaWMsIGNvbnRlbnQsIGxlbikgPT0gMCk7CisgICAgfQorCisgICAg
aWYgKG1hdGNoKSB7CisgICAgICAgICpyZXN1bHQgPSBtYWdpY0VudHJ5LT5taW1lVHlwZTsKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKworc3RhdGlj
IGJvb2wgY2hlY2tGb3JNYWdpY051bWJlcnMoY29uc3QgY2hhciogY29udGVudCwgaW50IHNpemUs
IGNvbnN0IE1hZ2ljTnVtYmVyKiBtYWdpYywgaW50IG1hZ2ljTGVuLCBTdHJpbmcqIHJlc3VsdCkK
K3sKKyAgZm9yIChpbnQgaSA9IDA7IGkgPCBtYWdpY0xlbjsgKytpKSB7CisgICAgICBpZiAobWF0
Y2hNYWdpY051bWJlcihjb250ZW50LCBzaXplLCAmKG1hZ2ljW2ldKSwgcmVzdWx0KSkKKyAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgfQorICByZXR1cm4gZmFsc2U7Cit9CisKK3N0YXRpYyBib29s
IHNuaWZmRm9ySFRNTChjb25zdCBjaGFyKiBjb250ZW50LCBpbnQgc2l6ZSwgU3RyaW5nKiByZXN1
bHQpCit7CisgICAgLy8gV2UgYWRvcHQgYSBzdHJhdGVneSBzaW1pbGFyIHRvIHRoYXQgdXNlZCBi
eSBNb3ppbGxhIHRvIHNuaWZmIEhUTUwgdGFncywKKyAgICAvLyBidXQgd2l0aCBzb21lIG1vZGlm
aWNhdGlvbnMgdG8gYmV0dGVyIG1hdGNoIHRoZSBIVE1MNSBzcGVjLgorICAgIGNvbnN0IGNoYXIq
IGNvbnN0IGVuZCA9IGNvbnRlbnQgKyBzaXplOworICAgIGNvbnN0IGNoYXIqIHBvczsKKyAgICBm
b3IgKHBvcyA9IGNvbnRlbnQ7IHBvcyA8IGVuZDsgKytwb3MpIHsKKyAgICAgICAgaWYgKCFpc0Fz
Y2lpV2hpdGVzcGFjZSgqcG9zKSkKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKyAgICAvLyB8
cG9zfCBub3cgcG9pbnRzIHRvIGZpcnN0IG5vbi13aGl0ZXNwYWNlIGNoYXJhY3RlciAob3IgYXQg
ZW5kKS4KKyAgICByZXR1cm4gY2hlY2tGb3JNYWdpY051bWJlcnMocG9zLCBlbmQgLSBwb3MsIGtT
bmlmZmFibGVUYWdzLCBhcnJheXNpemUoa1NuaWZmYWJsZVRhZ3MpLCByZXN1bHQpOworfQorCitz
dGF0aWMgYm9vbCBzbmlmZkZvck1hZ2ljTnVtYmVycyhjb25zdCBjaGFyKiBjb250ZW50LCBpbnQg
c2l6ZSwgU3RyaW5nKiByZXN1bHQpIHsKKyAgLy8gQ2hlY2sgb3VyIGJpZyB0YWJsZSBvZiBNYWdp
YyBOdW1iZXJzCisgIHJldHVybiBjaGVja0Zvck1hZ2ljTnVtYmVycyhjb250ZW50LCBzaXplLCBr
TWFnaWNOdW1iZXJzLCBhcnJheXNpemUoa01hZ2ljTnVtYmVycyksIHJlc3VsdCk7Cit9CisKKy8v
IEJ5dGUgb3JkZXIgbWFya3MKK3N0YXRpYyBjb25zdCBNYWdpY051bWJlciBrTWFnaWNYTUxbXSA9
IHsKKyAgICAvLyBXZSB3YW50IHRvIGJlIHZlcnkgY29uc2VydmF0aXZlIGluIGludGVycHJldGlu
ZyB0ZXh0L3htbCBjb250ZW50IGFzCisgICAgLy8gWEhUTUwgLS0gd2UganVzdCB3YW50IHRvIHNu
aWZmIGVub3VnaCB0byBtYWtlIHVuaXQgdGVzdHMgcGFzcy4KKyAgICAvLyBTbyB3ZSBtYXRjaCBl
eHBsaWNpdGx5IG9uIHRoaXMsIGFuZCBkb24ndCBtYXRjaCBvdGhlciB3YXlzIG9mIHdyaXRpbmcK
KyAgICAvLyBpdCBpbiBzZW1hbnRpY2FsbHktZXF1aXZhbGVudCB3YXlzLgorICAgIE1BR0lDX1NU
UklORygiYXBwbGljYXRpb24veGh0bWwreG1sIiwKKyAgICAgICAgICAgICAgICAgIjxodG1sIHht
bG5zPVwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbFwiIikKKyAgICBNQUdJQ19TVFJJTkco
ImFwcGxpY2F0aW9uL2F0b20reG1sIiwgIjxmZWVkIikKKyAgICBNQUdJQ19TVFJJTkcoImFwcGxp
Y2F0aW9uL3Jzcyt4bWwiLCAiPHJzcyIpICAvLyBVVEYtOAorfTsKKworLy8gU25pZmYgYW4gWE1M
IGRvY3VtZW50IHRvIGp1ZGdlIHdoZXRoZXIgaXQgY29udGFpbnMgWEhUTUwgb3IgYSBmZWVkLgor
Ly8gUmV0dXJucyB0cnVlIGlmIGl0IGhhcyBzZWVuIGVub3VnaCBjb250ZW50IHRvIG1ha2UgYSBk
ZWZpbml0aXZlIGRlY2lzaW9uLgorLy8gRklYTUU6IHRoaXMgaXMgc2ltaWxhciBidXQgbW9yZSBj
b25zZXJ2YXRpdmUgdGhhbiB3aGF0IFNhZmFyaSBkb2VzLAorLy8gd2hpbGUgSFRNTDUgaGFzIGEg
ZGlmZmVyZW50IHJlY29tbWVuZGF0aW9uIC0tIHdoYXQgc2hvdWxkIHdlIGRvPworLy8gRklYTUU6
IHRoaXMgaXMgaW5jb3JyZWN0IGZvciBkb2N1bWVudHMgd2hvc2UgZW5jb2RpbmcgaXNuJ3QgYSBz
dXBlcnNldAorLy8gb2YgQVNDSUkgLS0gZG8gd2UgY2FyZT8KK3N0YXRpYyBib29sIHNuaWZmWE1M
KGNvbnN0IGNoYXIqIGNvbnRlbnQsIGludCBzaXplLCBTdHJpbmcqIHJlc3VsdCkKK3sKKyAgICAv
LyBXZSBhbGxvdyBhdCBtb3N0IGtGaXJzdFRhZ0J5dGVzIGJ5dGVzIG9mIGNvbnRlbnQgYmVmb3Jl
IHdlIGV4cGVjdCB0aGUKKyAgICAvLyBvcGVuaW5nIHRhZy4KKyAgICBjb25zdCBpbnQga0ZlZWRB
bGxvd2VkSGVhZGVyQnl0ZXMgPSAzMDA7CisgICAgY29uc3QgY2hhciogY29uc3QgZW5kID0gY29u
dGVudCArIHN0ZDo6bWluKHNpemUsIGtGZWVkQWxsb3dlZEhlYWRlckJ5dGVzKTsKKyAgICBjb25z
dCBjaGFyKiBwb3MgPSBjb250ZW50OworCisgICAgLy8gVGhpcyBsb29wIGl0ZXJhdGVzIHRocm91
Z2ggdGFnLWxvb2tpbmcgb2Zmc2V0cyBpbiB0aGUgZmlsZS4KKyAgICAvLyBXZSB3YW50IHRvIHNr
aXAgWE1MIHByb2Nlc3NpbmcgaW5zdHJ1Y3Rpb25zIChvZiB0aGUgZm9ybSAiPD94bWwgLi4uIikK
KyAgICAvLyBhbmQgc3RvcCBhdCB0aGUgZmlyc3QgInBsYWluIiB0YWcsIHRoZW4gbWFrZSBhIGRl
Y2lzaW9uIG9uIHRoZSBtaW1lLXR5cGUKKyAgICAvLyBiYXNlZCBvbiB0aGUgbmFtZSAob3IgcG9z
c2libHkgYXR0cmlidXRlcykgb2YgdGhhdCB0YWcuCisgICAgY29uc3QgaW50IGtNYXhUYWdJdGVy
YXRpb25zID0gNTsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGtNYXhUYWdJdGVyYXRpb25zICYm
IHBvcyA8IGVuZDsgKytpKSB7CisgICAgICAgIHBvcyA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
Y2hhcio+KG1lbWNocihwb3MsICc8JywgZW5kIC0gcG9zKSk7CisgICAgICAgIGlmICghcG9zKQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIGlmIChzdHJuY2FzZWNtcChwb3Ms
ICI8P3htbCIsIHNpemVvZigiPD94bWwiKS0xKSA9PSAwKSB7CisgICAgICAgICAgICAvLyBTa2lw
IFhNTCBkZWNsYXJhdGlvbnMuCisgICAgICAgICAgICArK3BvczsKKyAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICB9IGVsc2UgaWYgKHN0cm5jYXNlY21wKHBvcywgIjwhRE9DVFlQRSIsIHNp
emVvZigiPCFET0NUWVBFIiktMSkgPT0gMCkgeworICAgICAgICAgICAgLy8gU2tpcCBET0NUWVBF
IGRlY2xhcmF0aW9ucy4KKyAgICAgICAgICAgICsrcG9zOworICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgIH0KKworICAgICAgICBpZiAoY2hlY2tGb3JNYWdpY051bWJlcnMocG9zLCBlbmQg
LSBwb3MsIGtNYWdpY1hNTCwgYXJyYXlzaXplKGtNYWdpY1hNTCksIHJlc3VsdCkpCisgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICAvLyBGSVhNRTogaGFuZGxlIFJTUyAxLjAsIHdo
aWNoIGlzIGFuIFJERiBmb3JtYXQgYW5kIG1vcmUgZGlmZmljdWx0CisgICAgICAgIC8vIHRvIGlk
ZW50aWZ5LgorCisgICAgICAgIC8vIElmIHdlIGdldCBoZXJlLCB3ZSd2ZSBoaXQgYW4gaW5pdGlh
bCB0YWcgdGhhdCBoYXNuJ3QgbWF0Y2hlZCBvbmUgb2YgdGhlCisgICAgICAgIC8vIGFib3ZlIHRl
c3RzLiAgQWJvcnQuCisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIC8vIFdlIGl0
ZXJhdGVkIHRvbyBmYXIgd2l0aG91dCBmaW5kaW5nIGEgc3RhcnQgdGFnLgorICAgIC8vIElmIHdl
IGhhdmUgbW9yZSBjb250ZW50IHRvIGxvb2sgYXQsIHdlIGFyZW4ndCBnb2luZyB0byBjaGFuZ2Ug
b3VyIG1pbmQgYnkKKyAgICAvLyBzZWVpbmcgbW9yZSBieXRlcyBmcm9tIHRoZSBuZXR3b3JrLgor
ICAgIHJldHVybiBwb3MgPCBlbmQ7Cit9CisKKy8vIEJ5dGUgb3JkZXIgbWFya3MKK3N0YXRpYyBj
b25zdCBNYWdpY051bWJlciBrQnl0ZU9yZGVyTWFya1tdID0geworICAgIE1BR0lDX05VTUJFUigi
dGV4dC9wbGFpbiIsICJceEZFXHhGRiIpICAvLyBVVEYtMTZCRQorICAgIE1BR0lDX05VTUJFUigi
dGV4dC9wbGFpbiIsICJceEZGXHhGRSIpICAvLyBVVEYtMTZMRQorICAgIE1BR0lDX05VTUJFUigi
dGV4dC9wbGFpbiIsICJceEVGXHhCQlx4QkYiKSAgLy8gVVRGLTgKK307CisKKy8vIFdoZXRoZXIg
YSBnaXZlbiBieXRlIGxvb2tzIGxpa2UgaXQgbWlnaHQgYmUgcGFydCBvZiBiaW5hcnkgY29udGVu
dC4KKy8vIFNvdXJjZTogSFRNTDUgc3BlYworc3RhdGljIGNoYXIga0J5dGVMb29rc0JpbmFyeVtd
ID0geworICAgIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDAsIDAsIDEsIDAsIDAsIDEsIDEs
ICAvLyAweDAwIC0gMHgwRgorICAgIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDAs
IDEsIDEsIDEsIDEsICAvLyAweDEwIC0gMHgxRgorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsICAvLyAweDIwIC0gMHgyRgorICAgIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsICAvLyAweDMwIC0gMHgzRgorICAg
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsICAvLyAweDQw
IC0gMHg0RgorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsICAvLyAweDUwIC0gMHg1RgorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsICAvLyAweDYwIC0gMHg2RgorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsICAvLyAweDcwIC0gMHg3RgorICAgIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsICAvLyAweDgwIC0gMHg4Rgor
ICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsICAvLyAw
eDkwIC0gMHg5RgorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsICAvLyAweEEwIC0gMHhBRgorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsICAvLyAweEIwIC0gMHhCRgorICAgIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsICAvLyAweEMwIC0gMHhDRgorICAgIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsICAvLyAweEQwIC0gMHhE
RgorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsICAv
LyAweEUwIC0gMHhFRgorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsICAvLyAweEYwIC0gMHhGRgorfTsKKworc3RhdGljIGJvb2wgbG9va3NCaW5hcnko
Y29uc3QgY2hhciogY29udGVudCwgaW50IHNpemUpCit7CisgICAgLy8gRmlyc3QsIHdlIGxvb2sg
Zm9yIGEgQk9NLgorICAgIFN0cmluZyB1bnVzZWQ7CisgICAgaWYgKGNoZWNrRm9yTWFnaWNOdW1i
ZXJzKGNvbnRlbnQsIHNpemUsIGtCeXRlT3JkZXJNYXJrLCBhcnJheXNpemUoa0J5dGVPcmRlck1h
cmspLCAmdW51c2VkKSkgeworICAgICAgICAvLyBJZiB0aGVyZSBpcyBCT00sIHdlIHRoaW5rIHRo
ZSBidWZmZXIgaXMgbm90IGJpbmFyeS4KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKwor
ICAgIC8vIE5leHQgd2UgbG9vayB0byBzZWUgaWYgYW55IG9mIHRoZSBieXRlcyAibG9vayBiaW5h
cnkuIgorICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CisgICAgICAgIC8vIElm
IHdlIGEgc2VlIGEgYmluYXJ5LWxvb2tpbmcgYnl0ZSwgd2UgdGhpbmsgdGhlIGNvbnRlbnQgaXMg
YmluYXJ5LgorICAgICAgICBpZiAoa0J5dGVMb29rc0JpbmFyeVtzdGF0aWNfY2FzdDx1bnNpZ25l
ZCBjaGFyPihjb250ZW50W2ldKV0pCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisK
KyAgICAvLyBObyBldmlkZW5jZSBlaXRoZXIgd2F5LCBkZWZhdWx0IHRvIG5vbi1iaW5hcnkuCisg
ICAgcmV0dXJuIGZhbHNlOworfQorCitzdGF0aWMgYm9vbCBpc1Vua25vd25NSU1FVHlwZShjb25z
dCBTdHJpbmcmIG1pbWVUeXBlKQogewotICAgIC8vIFRPRE86IEltcGxlbWVudCBtZS4KKyAgICBz
dGF0aWMgY29uc3QgY2hhcioga1Vua25vd25NSU1FVHlwZXNbXSA9IHsKKyAgICAgICAgLy8gRW1w
dHkgbWltZSB0eXBlcyBhcmUgYXMgdW5rbm93biBhcyB0aGV5IGdldC4KKyAgICAgICAgIiIsCisg
ICAgICAgIC8vIFRoZSB1bmtub3duL3Vua25vd24gdHlwZSBpcyBwb3B1bGFyIGFuZCB1bmluZm9y
bWF0aXZlCisgICAgICAgICJ1bmtub3duL3Vua25vd24iLAorICAgICAgICAvLyBUaGUgc2Vjb25k
IG1vc3QgcG9wdWxhciB1bmtub3duIG1pbWUgdHlwZSBpcyBhcHBsaWNhdGlvbi91bmtub3duCisg
ICAgICAgICJhcHBsaWNhdGlvbi91bmtub3duIiwKKyAgICAgICAgLy8gRmlyZWZveCByZWplY3Rz
IGEgbWltZSB0eXBlIGlmIGl0IGlzIGV4YWN0bHkgKi8qCisgICAgICAgICIqLyoiLAorICAgIH07
CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhcnJheXNpemUoa1Vua25vd25NSU1FVHlwZXMp
OyArK2kpIHsKKyAgICAgICAgaWYgKG1pbWVUeXBlID09IGtVbmtub3duTUlNRVR5cGVzW2ldKQor
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIGlmIChtaW1lVHlwZS5maW5kKCcv
JykgPT0gLTEpIHsKKyAgICAgICAgLy8gRmlyZWZveCByZWplY3RzIGEgbWltZSB0eXBlIGlmIGl0
IGRvZXMgbm90IGNvbnRhaW4gYSBzbGFzaAorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCi1TdHJpbmcgc25pZmZNSU1FVHlwZShjb25zdCBjaGFyKiwg
aW50LCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiB0eXBlSGludCkKK2Jvb2wgc2hvdWxkU25p
ZmZNSU1FVHlwZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiB7Ci0g
ICAgLy8gVE9ETzogSW1wbGVtZW50IG1lLgotICAgIHJldHVybiB0eXBlSGludDsKKyAgICAvLyBX
ZSBhcmUgd2lsbGluZyB0byBzbmlmZiB0aGUgbWltZSB0eXBlIGZvciBIVFRQLCBIVFRQUywgYW5k
IEZUUAorICAgIGNvbnN0IGJvb2wgc25pZmZhYmxlU2NoZW1lID0gdXJsLnByb3RvY29sSXMoImh0
dHAiKSB8fCB1cmwucHJvdG9jb2xJcygiaHR0cHMiKSB8fCB1cmwucHJvdG9jb2xJcygiZnRwIik7
CisgICAgaWYgKCFzbmlmZmFibGVTY2hlbWUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IHN0YXRpYyBjb25zdCBjaGFyKiBrU25pZmZhYmxlVHlwZXNbXSA9IHsKKyAgICAgICAgLy8gTWFu
eSB3ZWIgc2VydmVycyBhcmUgbWlzY29uZmlndXJlZCB0byBzZW5kIHRleHQvcGxhaW4gZm9yIG1h
bnkKKyAgICAgICAgLy8gZGlmZmVyZW50IHR5cGVzIG9mIGNvbnRlbnQuCisgICAgICAgICJ0ZXh0
L3BsYWluIiwKKyAgICAgICAgLy8gSUlTIDQuMCBhbmQgNS4wIHNlbmQgYXBwbGljYXRpb24vb2N0
ZXQtc3RyZWFtIHdoZW4gc2VydmluZyAueGh0bWwKKyAgICAgICAgLy8gZmlsZXMuICBGaXJlZm94
IDIuMCBkb2VzIG5vdCBzbmlmZiB4aHRtbCBoZXJlLCBidXQgU2FmYXJpIDMsCisgICAgICAgIC8v
IE9wZXJhIDksIGFuZCBJRSBkby4KKyAgICAgICAgImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSIs
CisgICAgICAgIC8vIFhIVE1MIGFuZCBBdG9tL1JTUyBmZWVkcyBhcmUgb2Z0ZW4gc2VydmVkIGFz
IHBsYWluIHhtbCBpbnN0ZWFkIG9mCisgICAgICAgIC8vIHRoZWlyIG1vcmUgc3BlY2lmaWMgbWlt
ZSB0eXBlcy4KKyAgICAgICAgInRleHQveG1sIiwKKyAgICAgICAgImFwcGxpY2F0aW9uL3htbCIs
CisgICAgfTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFycmF5c2l6ZShrU25pZmZhYmxl
VHlwZXMpOyArK2kpIHsKKyAgICAgICAgaWYgKG1pbWVUeXBlID09IGtTbmlmZmFibGVUeXBlc1tp
XSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBpZiAoaXNVbmtub3duTUlN
RVR5cGUobWltZVR5cGUpKSB7CisgICAgICAgIC8vIFRoZSB3ZWIgc2VydmVyIGRpZG4ndCBzcGVj
aWZ5IGEgY29udGVudCB0eXBlIG9yIHNwZWNpZmllZCBhIG1pbWUKKyAgICAgICAgLy8gdHlwZSB0
aGF0IHdlIGlnbm9yZS4KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBm
YWxzZTsKK30KKworYm9vbCBzbmlmZk1JTUVUeXBlKGNvbnN0IGNoYXIqIGNvbnRlbnQsIGludCBj
b250ZW50U2l6ZSwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgdHlwZUhpbnQsIFN0cmluZyog
cmVzdWx0KQoreworICAgIEFTU0VSVChjb250ZW50KTsKKyAgICBBU1NFUlQocmVzdWx0KTsKKwor
ICAgIC8vIEJ5IGRlZmF1bHQsIHdlJ2xsIHJldHVybiB0aGUgdHlwZSBoaW50LgorICAgICpyZXN1
bHQgPSB0eXBlSGludDsKKworICAgIC8vIEZsYWcgZm9yIHRyYWNraW5nIHdoZXRoZXIgb3VyIGRl
Y2lzaW9uIHdhcyBsaW1pdGVkIGJ5IGNvbnRlbnRfc2l6ZS4gIFdlCisgICAgLy8gcHJvYmFibHkg
aGF2ZSBlbm91Z2ggY29udGVudCBpZiB3ZSBjYW4gdXNlIGFsbCBvdXIgbWFnaWMgbnVtYmVycy4K
KyAgICBjb25zdCBib29sIGhhdmVFbm91Z2hDb250ZW50ID0gY29udGVudFNpemUgPj0ga0J5dGVz
UmVxdWlyZWRGb3JNYWdpYzsKKworICAgIC8vIFdlIGhhdmUgYW4gdXBwZXIgbGltaXQgb24gdGhl
IG51bWJlciBvZiBieXRlcyB3ZSB3aWxsIGNvbnNpZGVyLgorICAgIGlmIChjb250ZW50U2l6ZSA+
IGtNYXhCeXRlc1RvU25pZmYpCisgICAgICBjb250ZW50U2l6ZSA9IGtNYXhCeXRlc1RvU25pZmY7
CisKKyAgICAvLyBDYWNoZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgdHlwZUhpbnQKKyAgICBjb25z
dCBib29sIGhpbnRJc1Vua25vd25NSU1FVHlwZSA9IGlzVW5rbm93bk1JTUVUeXBlKHR5cGVIaW50
KTsKKworICAgIC8vIEZpcnN0IGNoZWNrIGZvciBIVE1MCisgICAgaWYgKGhpbnRJc1Vua25vd25N
SU1FVHlwZSkgeworICAgICAgICAvLyBXZSdyZSBvbmx5IHdpbGxpbmcgdG8gc25pZmYgSFRNTCBp
ZiB0aGUgc2VydmVyIGhhcyBub3Qgc3VwcGxpZWQgYQorICAgICAgICAvLyBtaW1lIHR5cGUsIG9y
IGlmIHRoZSB0eXBlIGl0IGRpZCBzdXBwbHkgaW5kaWNhdGVzIHRoYXQgaXQgZG9lc24ndAorICAg
ICAgICAvLyBrbm93IHdoYXQgdGhlIHR5cGUgc2hvdWxkIGJlLgorICAgICAgICBpZiAoc25pZmZG
b3JIVE1MKGNvbnRlbnQsIGNvbnRlbnRTaXplLCByZXN1bHQpKSB7CisgICAgICAgICAgICAvLyBX
ZSBzdWNjZWVkZWQgaW4gc25pZmZpbmcgSFRNTC4gIE5vIG1vcmUgY29udGVudCBuZWVkZWQuCisg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIFdlJ2xs
IHJldXNlIHRoaXMgaW5mb3JtYXRpb24gbGF0ZXIKKyAgICBjb25zdCBib29sIGhpbnRJc1RleHRQ
bGFpbiA9ICh0eXBlSGludCA9PSAidGV4dC9wbGFpbiIpOworICAgIGNvbnN0IGJvb2wgY29udGVu
dExvb2tzQmluYXJ5ID0gbG9va3NCaW5hcnkoY29udGVudCwgY29udGVudFNpemUpOworCisgICAg
aWYgKGhpbnRJc1RleHRQbGFpbiAmJiAhY29udGVudExvb2tzQmluYXJ5KSB7CisgICAgICAvLyBU
aGUgc2VydmVyIHNhaWQgdGhlIGNvbnRlbnQgd2FzIHRleHQvcGxhaW4gYW5kIHdlIGRvbid0IHJl
YWxseSBoYXZlIGFueQorICAgICAgLy8gZXZpZGVuY2Ugb3RoZXJ3aXNlLgorICAgICAgKnJlc3Vs
dCA9ICJ0ZXh0L3BsYWluIjsKKyAgICAgIHJldHVybiBoYXZlRW5vdWdoQ29udGVudDsKKyAgICB9
CisKKyAgICAvLyBJZiB3ZSBoYXZlIHBsYWluIFhNTCwgc25pZmYgWE1MIHN1YnR5cGVzLgorICAg
IGlmICh0eXBlSGludCA9PSAidGV4dC94bWwiIHx8IHR5cGVIaW50ID09ICJhcHBsaWNhdGlvbi94
bWwiKSB7CisgICAgICAgIC8vIFdlJ3JlIG5vdCBpbnRlcmVzdGVkIGluIHNuaWZmaW5nIHRoZXNl
IHR5cGVzIGZvciBpbWFnZXMgYW5kIHRoZQorICAgICAgICAvLyBsaWtlLiAgSW5zdGVhZCwgd2Un
cmUgbG9va2luZyBleHBsaWNpdGx5IGZvciBhIGZlZWQuICBJZiB3ZSBkb24ndAorICAgICAgICAv
LyBmaW5kIG9uZSB3ZSdyZSBkb25lIGFuZCByZXR1cm4gZWFybHkuCisgICAgICAgIGlmIChzbmlm
ZlhNTChjb250ZW50LCBjb250ZW50U2l6ZSwgcmVzdWx0KSkKKyAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgICAgICByZXR1cm4gY29udGVudFNpemUgPj0ga01heEJ5dGVzVG9TbmlmZjsKKyAg
ICB9CisKKyAgICAvLyBOb3cgd2UgbG9vayBpbiBvdXIgbGFyZ2UgdGFibGUgb2YgbWFnaWMgbnVt
YmVycyB0byBzZWUgaWYgd2UgY2FuIGZpbmQKKyAgICAvLyBhbnl0aGluZyB0aGF0IG1hdGNoZXMg
dGhlIGNvbnRlbnQuCisgICAgaWYgKHNuaWZmRm9yTWFnaWNOdW1iZXJzKGNvbnRlbnQsIGNvbnRl
bnRTaXplLCByZXN1bHQpKQorICAgICAgICByZXR1cm4gdHJ1ZTsgIC8vIFdlJ3ZlIG1hdGNoZWQg
YSBtYWdpYyBudW1iZXIuICBObyBtb3JlIGNvbnRlbnQgbmVlZGVkLgorCisgICAgLy8gSGF2aW5n
IGZhaWxlZCB0aHVzIGZhciwgd2UncmUgd2lsbGluZyB0byBvdmVycmlkZSB1bmtub3duIG1pbWUg
dHlwZXMgYW5kCisgICAgLy8gdGV4dC9wbGFpbi4KKyAgICBpZiAoaGludElzVW5rbm93bk1JTUVU
eXBlIHx8IGhpbnRJc1RleHRQbGFpbikgeworICAgICAgICBpZiAoY29udGVudExvb2tzQmluYXJ5
KQorICAgICAgICAgICAgKnJlc3VsdCA9ICJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iOworICAg
ICAgICBlbHNlCisgICAgICAgICAgICAqcmVzdWx0ID0gInRleHQvcGxhaW4iOworICAgICAgICAv
LyBXZSBjb3VsZCBjaGFuZ2Ugb3VyIG1pbmQgaWYgYSBiaW5hcnktbG9va2luZyBieXRlIGFwcGVh
cnMgbGF0ZXIgaW4KKyAgICAgICAgLy8gdGhlIGNvbnRlbnQsIHNvIHdlIG9ubHkgaGF2ZSBlbm91
Z2ggY29udGVudCBpZiB3ZSBoYXZlIHRoZSBtYXguCisgICAgICAgIHJldHVybiBjb250ZW50U2l6
ZSA+PSBrTWF4Qnl0ZXNUb1NuaWZmOworICAgIH0KKworICAgIHJldHVybiBoYXZlRW5vdWdoQ29u
dGVudDsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL01JTUVTbmlmZmVyLmggYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
TUlNRVNuaWZmZXIuaAppbmRleCBjZmMyZjEzLi4wODUyOTE3IDEwMDY0NAotLS0gYS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvTUlNRVNuaWZmZXIuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvTUlNRVNuaWZmZXIuaApAQCAtMzYsNyArMzYsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBib29sIHNob3VsZFNuaWZmTUlNRVR5cGUoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcm
IG1pbWVUeXBlKTsKIAogLy8gR3Vlc3MgYSBNSU1FIHR5cGUgZnJvbSB0aGUgZmlyc3QgZmV3IGJ5
dGVzIG9mIGNvbnRlbnQgYW4gaXRzIFVSTC4KLVN0cmluZyBzbmlmZk1JTUVUeXBlKGNvbnN0IGNo
YXIqIGNvbnRlbnQsIGludCBsZW5ndGgsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0
eXBlSGludCk7CisvLyBSZXR1cm5zIHdoZXRoZXIgd2UgaGFkIGVub3VnaCBjb250ZW50IHRvIG1h
a2UgYSBmaW5hbCBkZXRlbXJpbmF0aW9uLgorYm9vbCBzbmlmZk1JTUVUeXBlKGNvbnN0IGNoYXIq
IGNvbnRlbnQsIGludCBsZW5ndGgsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0eXBl
SGludCwgU3RyaW5nKiByZXN1bHQpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLS0gCjEu
Ni4wLjEKCg==
</data>
<flag name="review"
          id="15348"
          type_id="1"
          status="-"
          setter="mjs"
    />
          </attachment>
      

    </bug>

</bugzilla>