<?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>20348</bug_id>
          
          <creation_ts>2008-08-11 14:36:08 -0700</creation_ts>
          <short_desc>Background color formatting lost on enter</short_desc>
          <delta_ts>2009-08-10 15:29:17 -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>HTML Editing</component>
          <version>525.x (Safari 3.1)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar, NeedsReduction</keywords>
          <priority>P3</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>27325</dependson>
    
    <dependson>28057</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Julie Parent">jparent</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>darin</cc>
    
    <cc>eric</cc>
    
    <cc>justin.garcia</cc>
    
    <cc>mitz</cc>
    
    <cc>ojan</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>88239</commentid>
    <comment_count>0</comment_count>
    <who name="Julie Parent">jparent</who>
    <bug_when>2008-08-11 14:36:08 -0700</bug_when>
    <thetext>1. Go to midas demo: http://www.mozilla.org/editor/midasdemo/
2. Enter a word.
3. Select all.
4. Apply background color.
5. Place cursor at end of word.
6. Hit enter
7. Type a word.

Result: New text has no background color.
Expected result: Text has background color from first line.

Note: Font face, size, color, and bold/underline/italics are do not have this issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>88250</commentid>
    <comment_count>1</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2008-08-11 17:07:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/6142319&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>128074</commentid>
    <comment_count>2</comment_count>
      <attachid>31828</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2009-06-24 19:20:16 -0700</bug_when>
    <thetext>Created attachment 31828
demonstrates the bug</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>131424</commentid>
    <comment_count>3</comment_count>
      <attachid>32684</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2009-07-13 15:28:25 -0700</bug_when>
    <thetext>Created attachment 32684
fixes the bug by making more CSS properties inheritable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>131466</commentid>
    <comment_count>4</comment_count>
    <who name="Justin Garcia">justin.garcia</who>
    <bug_when>2009-07-13 18:52:19 -0700</bug_when>
    <thetext>Background color and text decoration are not inherited, so I think this needs to be fixed for editing specifically.  Also please add more details to your LayoutTests ChangeLog when your changes there go beyond adding a test case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>131622</commentid>
    <comment_count>5</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2009-07-14 11:43:29 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Background color and text decoration are not inherited, so I think this needs
&gt; to be fixed for editing specifically.

Thank you for pointing that out.  So then I can add new function copyEditableProperties to CSSComputedStyleDeclaration, and replace all instances of copyInheritableProperties in editing code by copyEditableProperties.  Do you think this is sensible approach?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>131624</commentid>
    <comment_count>6</comment_count>
      <attachid>32684</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-07-14 11:54:50 -0700</bug_when>
    <thetext>Comment on attachment 32684
fixes the bug by making more CSS properties inheritable.

We have to be quite careful about this. I do not believe that text-decoration is inheritable. Instead it simply looks as if it is, since the text decoration on the parent overwrites the child. I also am concerned that some fo these tests are showing explicit background-color values in cases where the color already matches its parent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>131638</commentid>
    <comment_count>7</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2009-07-14 12:37:23 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 32684 [details])
&gt; We have to be quite careful about this. I do not believe that text-decoration
&gt; is inheritable. Instead it simply looks as if it is, since the text decoration
&gt; on the parent overwrites the child. I also am concerned that some fo these
&gt; tests are showing explicit background-color values in cases where the color
&gt; already matches its parent.

Thank you for your response.  You&apos;re right, somehow I didn&apos;t connect the world
&quot;inheritable&quot; to that of CSS properties.  Anyway, I searched WebCore and it
turned out that copyInheritableProperties is only used under editing directory.
 So perhaps we can rename that function and start copying background color and
text decorations.  And I think spans having explicit background-color values is
another bug.  I&apos;ve been a similar bug report somewhere.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>131967</commentid>
    <comment_count>8</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2009-07-15 11:28:14 -0700</bug_when>
    <thetext>I did further investigation, and it turned out that inheritableProperties (1446@CSSComputedStyleDeclaration.cpp) is used in only two functions: removeComputedInheritablePropertiesFrom and copyInheritableProperties.  But it turned out that removeComputedInheritablePropertiesFrom is NOT used anywhere.  And copyInheritableProperties is used only in WebCore/editing/.  So it&apos;s safe to say that inheritableProperties doesn&apos;t need to represent CSS inheritable properties.

At this point, we have three choices.
1. Use my patch.
2. My patch + rename removeComputedInheritablePropertiesFrom and copyInheritableProperties
3. We add another function like copyEditableProperties, and gradually replace them (it&apos;s used in 6 editing files)

Comments?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>131968</commentid>
    <comment_count>9</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-07-15 11:30:44 -0700</bug_when>
    <thetext>I prefer (2).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>131981</commentid>
    <comment_count>10</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2009-07-15 12:00:37 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; I prefer (2).

Hi Darin, I talked with Ojan about this further, and he told me that he talked about CSSComputedStyleDeclaration with Mitz, and Mitz had an intention of separating it into two classes that are purely computed styles and editing styles instead of us having one class that are multi-purpose.

But then I realized that we can take copyInheritableProperties out of the class and make it a function.  To achieve this, I still need to add getRenderStyleOfNode that returns m_node-&gt;computedStyle() but I don&apos;t see why that would be a problem.  Do you think this is a good approach?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>131984</commentid>
    <comment_count>11</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-07-15 12:03:07 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; To achieve this, I still need to add getRenderStyleOfNode that returns m_node-&gt;computedStyle()

I’m sorry, I don’t understand this part. Where do you need to add this, and why? Why does this function’s name have &quot;get&quot; in it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>131988</commentid>
    <comment_count>12</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2009-07-15 12:08:59 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; I’m sorry, I don’t understand this part. Where do you need to add this, and
&gt; why? Why does this function’s name have &quot;get&quot; in it?

http://trac.webkit.org/browser/trunk/WebCore/css/CSSComputedStyleDeclaration.cpp
1503	        if (!m_node-&gt;computedStyle()-&gt;textFillColor().isValid())
1504	            style-&gt;removeProperty(CSSPropertyWebkitTextFillColor, ec);
1505	        if (!m_node-&gt;computedStyle()-&gt;textStrokeColor().isValid())
1506	            style-&gt;removeProperty(CSSPropertyWebkitTextStrokeColor, ec);

Because this code, my function still need to be able to access to the render style of the node.

so I added a new method to CSSComputedStyleDeclaration:
RenderStyle* renderStyleOfNode()
{
   ASSERT(m_node);
    return m_node-&gt;computedStyle();
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>132081</commentid>
    <comment_count>13</comment_count>
      <attachid>32820</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2009-07-15 16:20:49 -0700</bug_when>
    <thetext>Created attachment 32820
fixes the bug and renames copyInheritableProperties to copyPropertiesForEditing and removes removeComputedInheritablePropertiesFrom

This is the patch for (2).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>132094</commentid>
    <comment_count>14</comment_count>
      <attachid>32820</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-07-15 16:59:55 -0700</bug_when>
    <thetext>Comment on attachment 32820
fixes the bug and renames copyInheritableProperties to copyPropertiesForEditing and removes removeComputedInheritablePropertiesFrom

This name is not sufficiently clear:
+static const int propertiesForEditing[] = {

What are these actually used for?

Do we have tests for both of these?
     // Properties for editing
 1472     CSSPropertyTextDecoration,
 1473     CSSPropertyBackgroundColor,
14701474 };

It seems this could break the optimization in:
handleStyleSpansBeforeInsertion
(which may already be broken)

Seems uses of this function are inconsistent in their needs.  I think this is just a bad function which dates from before time:
(I stopped digging after http://trac.webkit.org/changeset/7314)

I think we should just deprecate this function and make a new (somewhat copied) one which works for your uses.  All the callers of this need to change, but I&apos;m not gonna ask you to do that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>136525</commentid>
    <comment_count>15</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2009-08-02 01:04:53 -0700</bug_when>
    <thetext>It turned out that making new version of this function and using it at specific places causes a lot of tests to fail because we&apos;re taking the difference of the style we&apos;re applying and the copyInheritableProperties of computed style in many places where we apply the style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>136889</commentid>
    <comment_count>16</comment_count>
      <attachid>34034</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2009-08-03 19:23:15 -0700</bug_when>
    <thetext>Created attachment 34034
fixes the bug and adds new functions to replace copyInheritableProperties</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>137429</commentid>
    <comment_count>17</comment_count>
      <attachid>34034</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-05 14:05:22 -0700</bug_when>
    <thetext>Comment on attachment 34034
fixes the bug and adds new functions to replace copyInheritableProperties

Intent:
static const int editingStyleProperties[] = {
 307 CSSPropertyBackgroundColor,
 308 

Also, needs some sort of comment to explain what &quot;editing style&quot; is.

We could use an enum to make typing style includes more readable at the callsite:

editingStyleAtPosition(position, IncludeTypingStyle);

You would do that by making a 2 state enum:
enum ShouldIncludeTypingStyle {
    IncludeTypingStyle,
    IgnoreTypingStyle
};

You could even default the value to one or the other to whatever the more common behavior is.

I think you probably mean &quot;removeStylesFromNode&quot; instead of &quot;removeStyleOfNode&quot;.

We could even consider putting this stuff in a new TypingStyle.h/cpp or EditingStyle.h/cpp file.  Especially if you think we&apos;re going to have more logic like these.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>137435</commentid>
    <comment_count>18</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2009-08-05 14:14:30 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; I think you probably mean &quot;removeStylesFromNode&quot; instead of
&gt; &quot;removeStyleOfNode&quot;.

Since we&apos;re removing style coming from a particular node instead of removing style on a note, should call it removeStylesAddedByNode as you suggested on chat.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>137632</commentid>
    <comment_count>19</comment_count>
      <attachid>34222</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2009-08-06 13:23:36 -0700</bug_when>
    <thetext>Created attachment 34222
fixed per comment &amp; removes deprecatedCopyInheritableProperties</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>138186</commentid>
    <comment_count>20</comment_count>
      <attachid>34336</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2009-08-07 15:25:07 -0700</bug_when>
    <thetext>Created attachment 34336
fixes the bug</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>138190</commentid>
    <comment_count>21</comment_count>
      <attachid>34337</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2009-08-07 15:27:24 -0700</bug_when>
    <thetext>Created attachment 34337
fixed the WebCore/ChangeLog</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>138728</commentid>
    <comment_count>22</comment_count>
      <attachid>34337</attachid>
    <who name="Justin Garcia">justin.garcia</who>
    <bug_when>2009-08-10 11:04:26 -0700</bug_when>
    <thetext>Comment on attachment 34337
fixed the WebCore/ChangeLog

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>138842</commentid>
    <comment_count>23</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2009-08-10 15:29:17 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/47008.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>31828</attachid>
            <date>2009-06-24 19:20:16 -0700</date>
            <delta_ts>2009-06-24 19:20:16 -0700</delta_ts>
            <desc>demonstrates the bug</desc>
            <filename>20348.html</filename>
            <type>text/html</type>
            <size>1026</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">PGh0bWw+Cjxib2R5Pgo8ZGl2IGlkPSJ0ZXN0IiBjb250ZW50ZWRpdGFibGU9InRydWUiPgp0ZXN0
CjwvZGl2PgoKPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoKZnVuY3Rpb24gcHJlc3NL
ZXkoIGtleSApIHsKICAgIGlmICh3aW5kb3cuS2V5RXZlbnQpIHsKICAgICAgICB2YXIgZXYgPSBk
b2N1bWVudC5jcmVhdGVFdmVudCgiS2V5Ym9hcmRFdmVudCIpOwogICAgICAgIGV2LmluaXRLZXlF
dmVudCgia2V5cHJlc3MiLCB0cnVlLCB0cnVlLCB3aW5kb3csICAwLDAsMCwwLCAwLCBrZXkuY2hh
ckNvZGVBdCgwKSk7CiAgICAgICAgZG9jdW1lbnQuYm9keS5kaXNwYXRjaEV2ZW50KGV2KTsKICAg
IH0KICAgIGVsc2UgewogICAgICAgIHZhciBldiA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCJUZXh0
RXZlbnQiKTsKICAgICAgICBldi5pbml0VGV4dEV2ZW50KCd0ZXh0SW5wdXQnLCB0cnVlLCB0cnVl
LCBudWxsLCBrZXkuY2hhckF0KDApKTsKICAgICAgICBkb2N1bWVudC5ib2R5LmRpc3BhdGNoRXZl
bnQoZXYpOwogICAgfQp9Cgpkb2N1bWVudC5kZXNpZ25Nb2RlPSdvbic7Cgp2YXIgZSA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0Jyk7CnZhciBzID0gd2luZG93LmdldFNlbGVjdGlvbigp
OwoKciA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CgpyLnNldFN0YXJ0KGUuZmlyc3RDaGlsZCww
KTsKci5zZXRFbmQoZS5maXJzdENoaWxkLDUpOwoKcy5hZGRSYW5nZShyKTsKZG9jdW1lbnQuZXhl
Y0NvbW1hbmQoImhpbGl0ZUNvbG9yIixmYWxzZSwiIzk5ZiIpOwoKciA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7CnIuc2V0U3RhcnQoZS5maXJzdENoaWxkLmZpcnN0Q2hpbGQsNSk7CnIuc2V0RW5k
KGUuZmlyc3RDaGlsZC5maXJzdENoaWxkLDUpOwpzLnJlbW92ZUFsbFJhbmdlcygpOwpzLmFkZFJh
bmdlKHIpOwoKcHJlc3NLZXkoJ1xuJyk7CnByZXNzS2V5KCdlJyk7CgovL2RvY3VtZW50LmV4ZWND
b21tYW5kKCJpbnNlcnRIVE1MIixmYWxzZSwiPGJyPmhlbGxvIHdvcmxkIik7Cgo8L3NjcmlwdD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>32684</attachid>
            <date>2009-07-13 15:28:25 -0700</date>
            <delta_ts>2009-07-15 16:20:49 -0700</delta_ts>
            <desc>fixes the bug by making more CSS properties inheritable.</desc>
            <filename>fix20348</filename>
            <type>text/plain</type>
            <size>17516</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NTg0MCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTggQEAKKzIwMDktMDctMTMgIFJ5b3N1a2UgTml3YSAgPHJ5b3N1a2Uubml3YUBn
bWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQmFja2dyb3VuZCBjb2xvciBmb3JtYXR0aW5nIGxvc3Qgb24gZW50ZXIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMzQ4CisKKyAgICAgICAgVGhp
cyBwYXRjaCBhZGRzIENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yIGFuZCBDU1NQcm9wZXJ0eVRl
eHREZWNvcmF0aW9uIHRvIGluaGVyaXRhYmxlUHJvcGVydGllcworICAgICAgICBhbGxvd2luZyBj
b3B5SW5oZXJpdGFibGVQcm9wZXJ0aWVzIHRvIGNvcHkgYmFja2dyb3VuZCBjb2xvciBhbmQgdGV4
dCBkZWNvcmF0aW9uIHByb3BlcnRpZXMuCisKKyAgICAgICAgVGVzdDogZWRpdGluZy9zdHlsZS9o
aWdobGlnaHQtYWZ0ZXItZW50ZXIuaHRtbAorCisgICAgICAgICogY3NzL0NTU0NvbXB1dGVkU3R5
bGVEZWNsYXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjppbmhlcml0YWJsZVByb3BlcnRp
ZXMpOiBDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciBhbmQgQ1NTUHJvcGVydHlUZXh0RGVjb3Jh
dGlvbiBhcmUgYWRkZWQuCisKIDIwMDktMDctMTMgIERtaXRyeSBUaXRvdiAgPGRpbWljaEBjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgTm90IHJldmlld2VkLCBhbm90aGVyIHNtYWxsIGZpeCBmb3Ig
Q2hyb21pdW0gYnVpbGQuCkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFy
YXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNs
YXJhdGlvbi5jcHAJKHJldmlzaW9uIDQ1NTY0KQorKysgV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRT
dHlsZURlY2xhcmF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ0Niw2ICsxNDQ2LDcgQEAg
U3RyaW5nIENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6aXRlbQogc3RhdGljIGNvbnN0IGlu
dCBpbmhlcml0YWJsZVByb3BlcnRpZXNbXSA9IHsKICAgICBDU1NQcm9wZXJ0eUJvcmRlckNvbGxh
cHNlLAogICAgIENTU1Byb3BlcnR5Q29sb3IsCisgICAgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29s
b3IsLy8gRklYTUU6IGRvIHdlIHdhbnQgYmFja2dyb3VuZC1pbWFnZSBhcyB3ZWxsPwogICAgIENT
U1Byb3BlcnR5Rm9udEZhbWlseSwKICAgICBDU1NQcm9wZXJ0eUZvbnRTaXplLAogICAgIENTU1By
b3BlcnR5Rm9udFN0eWxlLApAQCAtMTQ1Nyw2ICsxNDU4LDcgQEAgc3RhdGljIGNvbnN0IGludCBp
bmhlcml0YWJsZVByb3BlcnRpZXNbXQogICAgIENTU1Byb3BlcnR5VGV4dEFsaWduLAogICAgIENT
U1Byb3BlcnR5VGV4dEluZGVudCwKICAgICBDU1NQcm9wZXJ0eVRleHRUcmFuc2Zvcm0sCisgICAg
Q1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvbiwKICAgICBDU1NQcm9wZXJ0eVdoaXRlU3BhY2UsCiAg
ICAgQ1NTUHJvcGVydHlXaWRvd3MsCiAgICAgQ1NTUHJvcGVydHlXb3JkU3BhY2luZywKSW5kZXg6
IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cJKHJldmlzaW9uIDQ1ODQwKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMjMgQEAKKzIwMDktMDctMTMgIFJ5b3N1a2UgTml3YSAgPHJ5b3N1a2Uu
bml3YUBnbWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQmFja2dyb3VuZCBjb2xvciBmb3JtYXR0aW5nIGxvc3Qgb24gZW50ZXIKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMzQ4CisKKyAgICAg
ICAgVGhpcyBwYXRjaCBhZGRzIENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yIGFuZCBDU1NQcm9w
ZXJ0eVRleHREZWNvcmF0aW9uIHRvIGluaGVyaXRhYmxlUHJvcGVydGllcworICAgICAgICBhbGxv
d2luZyBjb3B5SW5oZXJpdGFibGVQcm9wZXJ0aWVzIHRvIGNvcHkgYmFja2dyb3VuZCBjb2xvciBh
bmQgdGV4dCBkZWNvcmF0aW9uIHByb3BlcnRpZXMuCisKKyAgICAgICAgKiBlZGl0aW5nL2luc2Vy
dGluZy81OTk0NDgwLTItZXhwZWN0ZWQudHh0OiB3aGl0ZSBiYWNrZ3JvdW5kIGNvbG9yIGlzIHNw
ZWNpZmllZCBidXQgdmlzdWFsbHkgaWRlbnRpY2FsLgorICAgICAgICAqIGVkaXRpbmcvcGFzdGVi
b2FyZC8xOTY0NC0yLWV4cGVjdGVkLnR4dDogbmV3IHNwYW4gaXMgYWRkZWQgKGNhdXNlcyBidWcg
MjY5MzcpIHRvIGFwcGVhciBidXQgdmlzdWFsbHkgaWRlbnRpY2FsLgorICAgICAgICAqIGVkaXRp
bmcvc3R5bGUvaGlnaGxpZ2h0LWFmdGVyLWVudGVyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogZWRpdGluZy9zdHlsZS9oaWdobGlnaHQtYWZ0ZXItZW50ZXIuaHRtbDogQWRkZWQuCisg
ICAgICAgICogcGxhdGZvcm0vbWFjL2VkaXRpbmcvaW5zZXJ0aW5nL2luc2VydC1kaXYtMDIyLWV4
cGVjdGVkLnR4dDogRXh0cmEgc3BhbiBpcyBhZGRlZCBidXQgdmlzdWFsbHkgaWRlbnRpY2FsLgor
ICAgICAgICAqIHBsYXRmb3JtL21hYy9lZGl0aW5nL2luc2VydGluZy9pbnNlcnQtZGl2LTAyMy1l
eHBlY3RlZC50eHQ6IEV4dHJhIHNwYW4gaXMgYWRkZWQgYnV0IHZpc3VhbGx5IGlkZW50aWNhbC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvZWRpdGluZy9pbnNlcnRpbmcvaW5zZXJ0LWRpdi0wMjQt
ZXhwZWN0ZWQudHh0OiBFeHRyYSBzcGFuIGlzIGFkZGVkIGJ1dCB2aXN1YWxseSBpZGVudGljYWwu
CisgICAgICAgICogcGxhdGZvcm0vbWFjL2VkaXRpbmcvcGFzdGVib2FyZC9zZWxlY3QtZWxlbWVu
dC0xLWV4cGVjdGVkLnR4dDogd2hpdGUgYmFja2dyb3VuZCBjb2xvciBpcyBzcGVjaWZpZWQgYnV0
IHZpc3VhbGx5IGlkZW50aWNhbC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvZWRpdGluZy9zZWxl
Y3Rpb24vY29udGFpbnMtYm91bmRhcmllcy1leHBlY3RlZC50eHQ6IEV4dHJhIHNwYW4gaXMgYWRk
ZWQgYnV0IHZpc3VhbGx5IGlkZW50aWNhbC4KKwogMjAwOS0wNy0xMyAgTWFyayBSb3dlICA8bXJv
d2VAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBhIG1pc3NpbmcgbGF5b3V0IHRlc3QgcmVzdWx0
IHRvIGltcHJvdmUgdGhlIHF1YWxpdHkgb2YgbGlmZSBvZiB0aGUgTWFjIGJ1aWxkYm90cy4KSW5k
ZXg6IExheW91dFRlc3RzL2VkaXRpbmcvaW5zZXJ0aW5nLzU5OTQ0ODAtMi1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9pbnNlcnRpbmcvNTk5NDQ4MC0yLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gNDU1NjQpCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL2luc2Vy
dGluZy81OTk0NDgwLTItZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xICsxIEBACi08
Zm9udCBjbGFzcz0iQXBwbGUtc3R5bGUtc3BhbiIgZmFjZT0iJ0x1Y2lkYSBHcmFuZGUnIiBzaXpl
PSIzIj48c3BhbiBjbGFzcz0iQXBwbGUtc3R5bGUtc3BhbiIgc3R5bGU9ImZvbnQtc2l6ZTogMTFw
eDsiPjxicj48L3NwYW4+PC9mb250PgorPGZvbnQgY2xhc3M9IkFwcGxlLXN0eWxlLXNwYW4iIGZh
Y2U9IidMdWNpZGEgR3JhbmRlJyIgc2l6ZT0iMyI+PHNwYW4gY2xhc3M9IkFwcGxlLXN0eWxlLXNw
YW4iIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjU1LCAyNTUsIDI1NSk7IGZvbnQtc2l6
ZTogMTFweDsiPjxicj48L3NwYW4+PC9mb250PgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9w
YXN0ZWJvYXJkLzE5NjQ0LTItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2VkaXRpbmcvcGFzdGVib2FyZC8xOTY0NC0yLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNDU1NjQp
CisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvMTk2NDQtMi1leHBlY3RlZC50eHQJ
KHdvcmtpbmcgY29weSkKQEAgLTEgKzEgQEAKLTxkaXYgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6
IHJnYigxODcsIDE4NywgMTg3KTsgIj5UaGlzIHRlc3RzIHRvIG1ha2Ugc3VyZSB0aGF0IHdlIHdy
YXAgY29waWVkIG1hcmt1cCBpbiBhIGRpdiB0byBob2xkIGEgZnVsbHkgc2VsZWN0ZWQgYm9keSdz
IGF0dHJpYnV0ZXMgYW5kIHN0eWxlIHdoZW4gdGhlIHRoYXQgYm9keSBoYXMgYSBiYWNrZ3JvdW5k
LWNvbG9yLiBJZiB5b3UgY29weSBhbmQgcGFzdGUgdGhpcyB0ZXh0IGludG8gTWFpbCwgaXQgc2hv
dWxkIGhhdmUgYSBncmV5IGJhY2tncm91bmQuPC9kaXY+Cis8c3BhbiBjbGFzcz0iQXBwbGUtc3R5
bGUtc3BhbiIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMCk7ICI+PGRp
diBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogcmdiKDE4NywgMTg3LCAxODcpOyAiPlRoaXMgdGVz
dHMgdG8gbWFrZSBzdXJlIHRoYXQgd2Ugd3JhcCBjb3BpZWQgbWFya3VwIGluIGEgZGl2IHRvIGhv
bGQgYSBmdWxseSBzZWxlY3RlZCBib2R5J3MgYXR0cmlidXRlcyBhbmQgc3R5bGUgd2hlbiB0aGUg
dGhhdCBib2R5IGhhcyBhIGJhY2tncm91bmQtY29sb3IuIElmIHlvdSBjb3B5IGFuZCBwYXN0ZSB0
aGlzIHRleHQgaW50byBNYWlsLCBpdCBzaG91bGQgaGF2ZSBhIGdyZXkgYmFja2dyb3VuZC48L2Rp
dj48L3NwYW4+CkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL3N0eWxlL2hpZ2hsaWdodC1hZnRl
ci1lbnRlci1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9z
dHlsZS9oaWdobGlnaHQtYWZ0ZXItZW50ZXItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvZWRpdGluZy9zdHlsZS9oaWdobGlnaHQtYWZ0ZXItZW50ZXItZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMgQEAKK3Rlc3QKK2UKKzxzcGFuIGNsYXNzPSJB
cHBsZS1zdHlsZS1zcGFuIiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogcmdiKDE1MywgMTUzLCAy
NTUpOyI+IHRlc3QgPC9zcGFuPgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9zdHlsZS9oaWdo
bGlnaHQtYWZ0ZXItZW50ZXIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5n
L3N0eWxlL2hpZ2hsaWdodC1hZnRlci1lbnRlci5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvZWRpdGluZy9zdHlsZS9oaWdobGlnaHQtYWZ0ZXItZW50ZXIuaHRtbAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw1MCBAQAorPGh0bWw+Cis8Ym9keT4KKzxkaXYgaWQ9InRlc3QiIGNvbnRl
bnRlZGl0YWJsZT0idHJ1ZSI+Cit0ZXN0Cis8L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgorCis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisKK2Z1bmN0aW9uIHByZXNzS2V5
KCBrZXkgKSB7CisgICAgaWYgKHdpbmRvdy5LZXlFdmVudCkgeworICAgICAgICB2YXIgZXYgPSBk
b2N1bWVudC5jcmVhdGVFdmVudCgiS2V5Ym9hcmRFdmVudCIpOworICAgICAgICBldi5pbml0S2V5
RXZlbnQoImtleXByZXNzIiwgdHJ1ZSwgdHJ1ZSwgd2luZG93LCAgMCwwLDAsMCwgMCwga2V5LmNo
YXJDb2RlQXQoMCkpOworICAgICAgICBkb2N1bWVudC5ib2R5LmRpc3BhdGNoRXZlbnQoZXYpOwor
ICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgdmFyIGV2ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQo
IlRleHRFdmVudCIpOworICAgICAgICBldi5pbml0VGV4dEV2ZW50KCd0ZXh0SW5wdXQnLCB0cnVl
LCB0cnVlLCBudWxsLCBrZXkuY2hhckF0KDApKTsKKyAgICAgICAgZG9jdW1lbnQuYm9keS5kaXNw
YXRjaEV2ZW50KGV2KTsKKyAgICB9Cit9CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCitkb2N1bWVudC5k
ZXNpZ25Nb2RlPSdvbic7CisKK3ZhciBlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlc3Qn
KTsKK3ZhciBzID0gd2luZG93LmdldFNlbGVjdGlvbigpOworCityID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKworci5zZXRTdGFydChlLmZpcnN0Q2hpbGQsMCk7CityLnNldEVuZChlLmZpcnN0
Q2hpbGQsNSk7CisKK3MuYWRkUmFuZ2Uocik7Citkb2N1bWVudC5leGVjQ29tbWFuZCgiaGlsaXRl
Q29sb3IiLGZhbHNlLCIjOTlmIik7CisKK3IgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworci5z
ZXRTdGFydChlLmZpcnN0Q2hpbGQuZmlyc3RDaGlsZCw1KTsKK3Iuc2V0RW5kKGUuZmlyc3RDaGls
ZC5maXJzdENoaWxkLDUpOworcy5yZW1vdmVBbGxSYW5nZXMoKTsKK3MuYWRkUmFuZ2Uocik7CisK
K3ByZXNzS2V5KCdcbicpOworcHJlc3NLZXkoJ2UnKTsKKworZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ2NvbnNvbGUnKS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShlLmlubmVy
SFRNTCkpOworCis8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0
aW5nL2luc2VydGluZy9pbnNlcnQtZGl2LTAyMi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvaW5zZXJ0aW5nL2luc2VydC1kaXYtMDIy
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNDU1NjQpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMvZWRpdGluZy9pbnNlcnRpbmcvaW5zZXJ0LWRpdi0wMjItZXhwZWN0ZWQudHh0CSh3b3JraW5n
IGNvcHkpCkBAIC03LDcgKzcsNyBAQCBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdl
U2VsZWN0CiBFRElUSU5HIERFTEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOnJh
bmdlIGZyb20gMyBvZiAjdGV4dCA+IEIgPiBQID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8g
MyBvZiAjdGV4dCA+IEIgPiBQID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG9ET01SYW5nZTpy
YW5nZSBmcm9tIDAgb2YgUCA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDAgb2YgUCA+IEJP
RFkgPiBIVE1MID4gI2RvY3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3Ry
ZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hh
bmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KIEVESVRJ
TkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2U6V2ViVmlld0RpZENoYW5nZU5vdGlmaWNhdGlv
bgotRURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5nZTpyYW5nZSBm
cm9tIDEgb2YgI3RleHQgPiBCID4gUCA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDEgb2Yg
I3RleHQgPiBCID4gUCA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvRE9NUmFuZ2U6cmFuZ2Ug
ZnJvbSAxIG9mICN0ZXh0ID4gQiA+IFAgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAxIG9m
ICN0ZXh0ID4gQiA+IFAgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCBhZmZpbml0eTpOU1NlbGVj
dGlvbkFmZmluaXR5RG93bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxTRQorRURJVElORyBERUxF
R0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5nZTpyYW5nZSBmcm9tIDEgb2YgI3RleHQg
PiBCID4gU1BBTiA+IFAgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAxIG9mICN0ZXh0ID4g
QiA+IFNQQU4gPiBQID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG9ET01SYW5nZTpyYW5nZSBm
cm9tIDEgb2YgI3RleHQgPiBCID4gU1BBTiA+IFAgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0
byAxIG9mICN0ZXh0ID4gQiA+IFNQQU4gPiBQID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgYWZm
aW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0eURvd25zdHJlYW0gc3RpbGxTZWxlY3Rpbmc6RkFMU0UK
IEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENo
YW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgogRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENo
YW5nZTpXZWJWaWV3RGlkQ2hhbmdlTm90aWZpY2F0aW9uCiBsYXllciBhdCAoMCwwKSBzaXplIDgw
MHg2MDAKQEAgLTM1LDEwICszNSwxMSBAQCBsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKICAg
ICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDE0LDE0KSBzaXplIDMyeDI4CiAgICAgICAg
ICAgICB0ZXh0IHJ1biBhdCAoMTQsMTQpIHdpZHRoIDMyOiAiZm9vIgogICAgICAgUmVuZGVyQmxv
Y2sge1B9IGF0ICgwLDIyOCkgc2l6ZSA3ODR4ODQgW2JvcmRlcjogKDJweCBzb2xpZCAjMDAwMEZG
KV0KLSAgICAgICAgUmVuZGVySW5saW5lIHtCfSBhdCAoMCwwKSBzaXplIDEyeDI4Ci0gICAgICAg
ICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgxNCwxNCkgc2l6ZSAxMngyOAotICAgICAgICAgICAg
dGV4dCBydW4gYXQgKDE0LDE0KSB3aWR0aCAxMjogIngiCi0gICAgICAgICAgUmVuZGVyQlIge0JS
fSBhdCAoMjYsMzYpIHNpemUgMHgwIFtiZ2NvbG9yPSMwMDgwMDBdCisgICAgICAgIFJlbmRlcklu
bGluZSB7U1BBTn0gYXQgKDAsMCkgc2l6ZSAxMngyOAorICAgICAgICAgIFJlbmRlcklubGluZSB7
Qn0gYXQgKDAsMCkgc2l6ZSAxMngyOAorICAgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0
ICgxNCwxNCkgc2l6ZSAxMngyOAorICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMTQsMTQpIHdp
ZHRoIDEyOiAieCIKKyAgICAgICAgICAgIFJlbmRlckJSIHtCUn0gYXQgKDI2LDM2KSBzaXplIDB4
MCBbYmdjb2xvcj0jMDA4MDAwXQogICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDE0LDQy
KSBzaXplIDMxeDI4CiAgICAgICAgICAgdGV4dCBydW4gYXQgKDE0LDQyKSB3aWR0aCAzMTogImJh
ciIKLWNhcmV0OiBwb3NpdGlvbiAxIG9mIGNoaWxkIDAgeyN0ZXh0fSBvZiBjaGlsZCAwIHtCfSBv
ZiBjaGlsZCA2IHtQfSBvZiBjaGlsZCAxIHtCT0RZfSBvZiBjaGlsZCAwIHtIVE1MfSBvZiBkb2N1
bWVudAorY2FyZXQ6IHBvc2l0aW9uIDEgb2YgY2hpbGQgMCB7I3RleHR9IG9mIGNoaWxkIDAge0J9
IG9mIGNoaWxkIDAge1NQQU59IG9mIGNoaWxkIDYge1B9IG9mIGNoaWxkIDEge0JPRFl9IG9mIGNo
aWxkIDAge0hUTUx9IG9mIGRvY3VtZW50CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMv
ZWRpdGluZy9pbnNlcnRpbmcvaW5zZXJ0LWRpdi0wMjMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL2luc2VydGluZy9pbnNlcnQtZGl2
LTAyMy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDQ1NTY0KQorKysgTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjL2VkaXRpbmcvaW5zZXJ0aW5nL2luc2VydC1kaXYtMDIzLWV4cGVjdGVkLnR4dAkod29y
a2luZyBjb3B5KQpAQCAtNTMsOCArNTMsOSBAQCBsYXllciBhdCAoMCwwKSBzaXplIDc4NXg2ODgK
ICAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDE0LDE0KSBzaXplIDU2eDI4CiAgICAg
ICAgICAgICB0ZXh0IHJ1biBhdCAoMTQsMTQpIHdpZHRoIDU2OiAibGluZSAyIgogICAgICAgUmVu
ZGVyQmxvY2sge1B9IGF0ICgwLDM2MCkgc2l6ZSA3Njl4NTYgW2JvcmRlcjogKDJweCBzb2xpZCAj
MDAwMEZGKV0KLSAgICAgICAgUmVuZGVySW5saW5lIHtCfSBhdCAoMCwwKSBzaXplIDB4MjgKLSAg
ICAgICAgICBSZW5kZXJCUiB7QlJ9IGF0ICgxNCwxNCkgc2l6ZSAweDI4IFtiZ2NvbG9yPSMwMDgw
MDBdCisgICAgICAgIFJlbmRlcklubGluZSB7U1BBTn0gYXQgKDAsMCkgc2l6ZSAweDI4CisgICAg
ICAgICAgUmVuZGVySW5saW5lIHtCfSBhdCAoMCwwKSBzaXplIDB4MjgKKyAgICAgICAgICAgIFJl
bmRlckJSIHtCUn0gYXQgKDE0LDE0KSBzaXplIDB4MjggW2JnY29sb3I9IzAwODAwMF0KICAgICAg
IFJlbmRlckJsb2NrIHtQfSBhdCAoMCw0NDApIHNpemUgNzY5eDU2IFtib3JkZXI6ICgycHggc29s
aWQgIzAwMDBGRildCiAgICAgICAgIFJlbmRlcklubGluZSB7Qn0gYXQgKDAsMCkgc2l6ZSAxMngy
OAogICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMTQsMTQpIHNpemUgMTJ4MjgKSW5k
ZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL2luc2VydGluZy9pbnNlcnQtZGl2
LTAyNC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
L2VkaXRpbmcvaW5zZXJ0aW5nL2luc2VydC1kaXYtMDI0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
NDU1NjQpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9pbnNlcnRpbmcvaW5z
ZXJ0LWRpdi0wMjQtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xNiwxNiArMTYsMTYg
QEAgRURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRETwogRURJVElORyBERUxF
R0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9u
Tm90aWZpY2F0aW9uCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlOldlYlZpZXdE
aWRDaGFuZ2VOb3RpZmljYXRpb24KIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VT
ZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgotRURJVElORyBE
RUxFR0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5nZToobnVsbCkgdG9ET01SYW5nZTpy
YW5nZSBmcm9tIDEgb2YgI3RleHQgPiBQID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMSBv
ZiAjdGV4dCA+IFAgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCBhZmZpbml0eTpOU1NlbGVjdGlv
bkFmZmluaXR5RG93bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxTRQorRURJVElORyBERUxFR0FU
RTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5nZToobnVsbCkgdG9ET01SYW5nZTpyYW5nZSBm
cm9tIDEgb2YgI3RleHQgPiBTUEFOID4gUCA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDEg
b2YgI3RleHQgPiBTUEFOID4gUCA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGFmZmluaXR5Ok5T
U2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCiBFRElUSU5H
IERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxl
Y3Rpb25Ob3RpZmljYXRpb24KIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2U6V2Vi
Vmlld0RpZENoYW5nZU5vdGlmaWNhdGlvbgotRURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdl
U2VsZWN0ZWRET01SYW5nZTpyYW5nZSBmcm9tIDEgb2YgI3RleHQgPiBQID4gQk9EWSA+IEhUTUwg
PiAjZG9jdW1lbnQgdG8gMSBvZiAjdGV4dCA+IFAgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0
b0RPTVJhbmdlOnJhbmdlIGZyb20gMiBvZiAjdGV4dCA+IFAgPiBCT0RZID4gSFRNTCA+ICNkb2N1
bWVudCB0byAyIG9mICN0ZXh0ID4gUCA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGFmZmluaXR5
Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCitFRElU
SU5HIERFTEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOnJhbmdlIGZyb20gMSBv
ZiAjdGV4dCA+IFNQQU4gPiBQID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMSBvZiAjdGV4
dCA+IFNQQU4gPiBQID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG9ET01SYW5nZTpyYW5nZSBm
cm9tIDIgb2YgI3RleHQgPiBTUEFOID4gUCA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDIg
b2YgI3RleHQgPiBTUEFOID4gUCA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGFmZmluaXR5Ok5T
U2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCiBFRElUSU5H
IERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxl
Y3Rpb25Ob3RpZmljYXRpb24KIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2U6V2Vi
Vmlld0RpZENoYW5nZU5vdGlmaWNhdGlvbgotRURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdl
U2VsZWN0ZWRET01SYW5nZTpyYW5nZSBmcm9tIDIgb2YgI3RleHQgPiBQID4gQk9EWSA+IEhUTUwg
PiAjZG9jdW1lbnQgdG8gMiBvZiAjdGV4dCA+IFAgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0
b0RPTVJhbmdlOnJhbmdlIGZyb20gMyBvZiAjdGV4dCA+IFAgPiBCT0RZID4gSFRNTCA+ICNkb2N1
bWVudCB0byAzIG9mICN0ZXh0ID4gUCA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGFmZmluaXR5
Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCitFRElU
SU5HIERFTEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOnJhbmdlIGZyb20gMiBv
ZiAjdGV4dCA+IFNQQU4gPiBQID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMiBvZiAjdGV4
dCA+IFNQQU4gPiBQID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG9ET01SYW5nZTpyYW5nZSBm
cm9tIDMgb2YgI3RleHQgPiBTUEFOID4gUCA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDMg
b2YgI3RleHQgPiBTUEFOID4gUCA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGFmZmluaXR5Ok5T
U2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCiBFRElUSU5H
IERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxl
Y3Rpb25Ob3RpZmljYXRpb24KIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2U6V2Vi
Vmlld0RpZENoYW5nZU5vdGlmaWNhdGlvbgotRURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdl
U2VsZWN0ZWRET01SYW5nZTpyYW5nZSBmcm9tIDMgb2YgI3RleHQgPiBQID4gQk9EWSA+IEhUTUwg
PiAjZG9jdW1lbnQgdG8gMyBvZiAjdGV4dCA+IFAgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0
b0RPTVJhbmdlOnJhbmdlIGZyb20gMCBvZiBQID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8g
MCBvZiBQID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgYWZmaW5pdHk6TlNTZWxlY3Rpb25BZmZp
bml0eURvd25zdHJlYW0gc3RpbGxTZWxlY3Rpbmc6RkFMU0UKK0VESVRJTkcgREVMRUdBVEU6IHNo
b3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6cmFuZ2UgZnJvbSAzIG9mICN0ZXh0ID4gU1BBTiA+
IFAgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAzIG9mICN0ZXh0ID4gU1BBTiA+IFAgPiBC
T0RZID4gSFRNTCA+ICNkb2N1bWVudCB0b0RPTVJhbmdlOnJhbmdlIGZyb20gMCBvZiBQID4gQk9E
WSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMCBvZiBQID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQg
YWZmaW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0eURvd25zdHJlYW0gc3RpbGxTZWxlY3Rpbmc6RkFM
U0UKIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0Rp
ZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgogRURJVElORyBERUxFR0FURTogd2ViVmlld0Rp
ZENoYW5nZTpXZWJWaWV3RGlkQ2hhbmdlTm90aWZpY2F0aW9uCiBFRElUSU5HIERFTEVHQVRFOiBz
aG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOnJhbmdlIGZyb20gMCBvZiBQID4gQk9EWSA+IEhU
TUwgPiAjZG9jdW1lbnQgdG8gMCBvZiBQID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG9ET01S
YW5nZTpyYW5nZSBmcm9tIDAgb2YgUCA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDAgb2Yg
UCA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlE
b3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCkBAIC02NSwxMCArNjUsMTIgQEAgbGF5ZXIg
YXQgKDAsMCkgc2l6ZSA4MDB4NjAwCiAgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgx
NCwxNCkgc2l6ZSA1NngyOAogICAgICAgICAgICAgdGV4dCBydW4gYXQgKDE0LDE0KSB3aWR0aCA1
NjogImxpbmUgMSIKICAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCwyMjgpIHNpemUgNzg0eDU2
IFtib3JkZXI6ICgycHggc29saWQgIzAwMDBGRildCi0gICAgICAgIFJlbmRlclRleHQgeyN0ZXh0
fSBhdCAoMTQsMTQpIHNpemUgMzZ4MjgKLSAgICAgICAgICB0ZXh0IHJ1biBhdCAoMTQsMTQpIHdp
ZHRoIDM2OiAieHh4IgorICAgICAgICBSZW5kZXJJbmxpbmUge1NQQU59IGF0ICgwLDApIHNpemUg
MzZ4MjgKKyAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDE0LDE0KSBzaXplIDM2eDI4
CisgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMTQsMTQpIHdpZHRoIDM2OiAieHh4IgogICAgICAg
UmVuZGVyQmxvY2sge1B9IGF0ICgwLDMwOCkgc2l6ZSA3ODR4NTYgW2JvcmRlcjogKDJweCBzb2xp
ZCAjMDAwMEZGKV0KLSAgICAgICAgUmVuZGVyQlIge0JSfSBhdCAoMTQsMTQpIHNpemUgMHgyOCBb
Ymdjb2xvcj0jMDA4MDAwXQorICAgICAgICBSZW5kZXJJbmxpbmUge1NQQU59IGF0ICgwLDApIHNp
emUgMHgyOAorICAgICAgICAgIFJlbmRlckJSIHtCUn0gYXQgKDE0LDE0KSBzaXplIDB4MjggW2Jn
Y29sb3I9IzAwODAwMF0KICAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCwzODgpIHNpemUgNzg0
eDU2IFtib3JkZXI6ICgycHggc29saWQgIzAwMDBGRildCiAgICAgICAgIFJlbmRlclRleHQgeyN0
ZXh0fSBhdCAoMTQsMTQpIHNpemUgMzZ4MjgKICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMTQsMTQp
IHdpZHRoIDM2OiAieHh4IgpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcv
cGFzdGVib2FyZC9zZWxlY3QtZWxlbWVudC0xLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9wYXN0ZWJvYXJkL3NlbGVjdC1lbGVtZW50
LTEtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA0NTU2NCkKKysrIExheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy9lZGl0aW5nL3Bhc3RlYm9hcmQvc2VsZWN0LWVsZW1lbnQtMS1leHBlY3RlZC50eHQJKHdv
cmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDcgQEAgbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAw
CiAgICAgICAgICAgdGV4dCBydW4gYXQgKDI1MywwKSB3aWR0aCAyMjA6ICJBbGwgdGhlIG9wdGlv
bnMgc2hvdWxkIGJlIGluY2x1ZGVkLiIKICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDM0
KSBzaXplIDc4NHgxMwogICAgICAgICBSZW5kZXJJbmxpbmUge0ZPTlR9IGF0ICgwLDApIHNpemUg
MHgxMwotICAgICAgICAgIFJlbmRlcklubGluZSB7U1BBTn0gYXQgKDAsMCkgc2l6ZSAweDEzCisg
ICAgICAgICAgUmVuZGVySW5saW5lIHtTUEFOfSBhdCAoMCwwKSBzaXplIDB4MTMgW2JnY29sb3I9
I0ZGRkZGRl0KICAgICAgICAgICAgIFJlbmRlckJSIHtCUn0gYXQgKDAsMCkgc2l6ZSAweDEzCiAg
ICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCw0Nykgc2l6ZSA3ODR4MjIKICAgICAgICAgUmVu
ZGVyTWVudUxpc3Qge1NFTEVDVH0gYXQgKDIsMikgc2l6ZSA2MngxOCBbYmdjb2xvcj0jRkZGRkZG
XQpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvc2VsZWN0aW9uL2NvbnRh
aW5zLWJvdW5kYXJpZXMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy9lZGl0aW5nL3NlbGVjdGlvbi9jb250YWlucy1ib3VuZGFyaWVzLWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gNDU1NjQpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGlu
Zy9zZWxlY3Rpb24vY29udGFpbnMtYm91bmRhcmllcy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29w
eSkKQEAgLTIzLDcgKzIzLDggQEAgbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCiAgICAgICAg
IFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDY4eDgzCiAgICAgICAgICAgdGV4dCBy
dW4gYXQgKDAsMCkgd2lkdGggNjg6ICJXIgogICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAs
MTY5KSBzaXplIDc4NHg4MyBbYmdjb2xvcj0jRkZGRkNDXQotICAgICAgICBSZW5kZXJUZXh0IHsj
dGV4dH0gYXQgKDAsMCkgc2l6ZSA2OHg4MwotICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdp
ZHRoIDY4OiAiVyIKLXNlbGVjdGlvbiBzdGFydDogcG9zaXRpb24gMCBvZiBjaGlsZCAwIHsjdGV4
dH0gb2YgY2hpbGQgNiB7RElWfSBvZiBjaGlsZCAxIHtCT0RZfSBvZiBjaGlsZCAwIHtIVE1MfSBv
ZiBkb2N1bWVudAotc2VsZWN0aW9uIGVuZDogICBwb3NpdGlvbiAxIG9mIGNoaWxkIDAgeyN0ZXh0
fSBvZiBjaGlsZCA2IHtESVZ9IG9mIGNoaWxkIDEge0JPRFl9IG9mIGNoaWxkIDAge0hUTUx9IG9m
IGRvY3VtZW50CisgICAgICAgIFJlbmRlcklubGluZSB7U1BBTn0gYXQgKDAsMCkgc2l6ZSA2OHg4
MworICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDY4eDgzCisgICAg
ICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA2ODogIlciCitzZWxlY3Rpb24gc3RhcnQ6
IHBvc2l0aW9uIDAgb2YgY2hpbGQgMCB7I3RleHR9IG9mIGNoaWxkIDAge1NQQU59IG9mIGNoaWxk
IDYge0RJVn0gb2YgY2hpbGQgMSB7Qk9EWX0gb2YgY2hpbGQgMCB7SFRNTH0gb2YgZG9jdW1lbnQK
K3NlbGVjdGlvbiBlbmQ6ICAgcG9zaXRpb24gMSBvZiBjaGlsZCAwIHsjdGV4dH0gb2YgY2hpbGQg
MCB7U1BBTn0gb2YgY2hpbGQgNiB7RElWfSBvZiBjaGlsZCAxIHtCT0RZfSBvZiBjaGlsZCAwIHtI
VE1MfSBvZiBkb2N1bWVudAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>32820</attachid>
            <date>2009-07-15 16:20:49 -0700</date>
            <delta_ts>2009-08-03 19:23:15 -0700</delta_ts>
            <desc>fixes the bug and renames copyInheritableProperties to copyPropertiesForEditing and removes removeComputedInheritablePropertiesFrom</desc>
            <filename>fix20348b</filename>
            <type>text/plain</type>
            <size>33554</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NTk1MCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzkgQEAKKzIwMDktMDctMTUgIFJ5b3N1a2UgTml3YSAgPHJ5b3N1a2Uubml3YUBn
bWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQmFja2dyb3VuZCBjb2xvciBmb3JtYXR0aW5nIGxvc3Qgb24gZW50ZXIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMzQ4CisKKyAgICAgICAgVGhp
cyBwYXRjaCBhZGRzIENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yIGFuZCBDU1NQcm9wZXJ0eVRl
eHREZWNvcmF0aW9uIHRvIGNvcHlQcm9wZXJ0aWVzRm9yRWRpdGluZworICAgICAgICAodXNlZCB0
byBiZSBjYWxsZWQgaW5oZXJpdGFibGVQcm9wZXJ0aWVzKS4gIEJ5IGRvaW5nIHNvLCB3ZSBhbGxv
dyBiYWNrZ3JvdW5kIGNvbG9yIGFuZCB0ZXh0IGRlY29yYXRpb25zCisgICAgICAgIHRvIGJlIHBy
ZXNlcnZlZCB1bmRlciB2YXJpb3VzIGVkaXRpbmcgb3BlcmF0aW9ucy4KKworICAgICAgICBTaW5j
ZSBjb3B5SW5oZXJpdGFibGVQcm9wZXJ0aWVzIHdhcyBlZGl0aW5nIHNwZWNpZmljLCBpdCBoYXMg
YmVlbiByZW5hbWVkIHRvIGNvcHlQcm9wZXJ0aWVzRm9yRWRpdGluZy4KKyAgICAgICAgVGhlIGNv
ZGUgdGhhdCByZW1vdmVzIGludmFsaWQgdGV4dCBzdHlsZXMgaGFzIGJlZW4gaXNvbGF0ZWQgaW50
byByZW1vdmVJbnZhbGlkVGV4dFN0eWxlLgorCisgICAgICAgIFRlc3Q6IGVkaXRpbmcvc3R5bGUv
aGlnaGxpZ2h0LWFmdGVyLWVudGVyLmh0bWwKKworICAgICAgICAqIGNzcy9DU1NDb21wdXRlZFN0
eWxlRGVjbGFyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6KTogcmVtb3ZlQ29tcHV0ZWRJ
bmhlcml0YWJsZVByb3BlcnRpZXNGcm9tIGhhcyBiZWVuIGRlbGV0ZWQKKyAgICAgICAgKFdlYkNv
cmU6OkNTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Y29weVByb3BlcnRpZXNGb3JFZGl0aW5n
KTogcmVuYW1lZCBjb3B5SW5oZXJpdGFibGVQcm9wZXJ0aWVzCisgICAgICAgIChXZWJDb3JlOjpD
U1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OnJlbW92ZUludmFsaWRUZXh0U3R5bGUpOiBpc29s
YXRlZCBjb2RlIGZyb20gY29weUluaGVyaXRhYmxlUHJvcGVydGllcworICAgICAgICAqIGNzcy9D
U1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaDogcHJvdG90eXBlIGNoYW5nZQorICAgICAgICAq
IGVkaXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpy
ZW1vdmVFbmNsb3NpbmdBbmNob3JTdHlsZSk6IHVzZXMgY29weVByb3BlcnRpZXNGb3JFZGl0aW5n
IGluc3RlYWQgb2YgY29weUluaGVyaXRhYmxlUHJvcGVydGllcworICAgICAgICAoV2ViQ29yZTo6
RGVsZXRlU2VsZWN0aW9uQ29tbWFuZDo6c2F2ZVR5cGluZ1N0eWxlU3RhdGUpOiBkaXR0bworICAg
ICAgICAqIGVkaXRpbmcvRWRpdENvbW1hbmQuY3BwOiBkaXR0bworICAgICAgICAoV2ViQ29yZTo6
RWRpdENvbW1hbmQ6OnN0eWxlQXRQb3NpdGlvbik6IGRpdHRvCisgICAgICAgICogZWRpdGluZy9S
ZW1vdmVGb3JtYXRDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbW92ZUZvcm1hdENv
bW1hbmQ6OmRvQXBwbHkpOiBkaXR0bworICAgICAgICAqIGVkaXRpbmcvUmVwbGFjZVNlbGVjdGlv
bkNvbW1hbmQuY3BwOiBkaXR0bworICAgICAgICAoV2ViQ29yZTo6aGFuZGxlU3R5bGVTcGFuc0Jl
Zm9yZUluc2VydGlvbik6IGRpdHRvCisgICAgICAgIChXZWJDb3JlOjpSZXBsYWNlU2VsZWN0aW9u
Q29tbWFuZDo6aGFuZGxlU3R5bGVTcGFucyk6IGRpdHRvCisgICAgICAgICogZWRpdGluZy9tYXJr
dXAuY3BwOiBkaXR0bworICAgICAgICAoV2ViQ29yZTo6cmVtb3ZlRW5jbG9zaW5nTWFpbEJsb2Nr
cXVvdGVTdHlsZSk6IGRpdHRvCisgICAgICAgIChXZWJDb3JlOjpyZW1vdmVEZWZhdWx0U3R5bGVz
KTogZGl0dG8KKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZU1hcmt1cCk6IGRpdHRvCisKIDIwMDkt
MDctMTUgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IFNhbSBXZWluaWcuCkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFy
YXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNs
YXJhdGlvbi5jcHAJKHJldmlzaW9uIDQ1ODY0KQorKysgV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRT
dHlsZURlY2xhcmF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ0MCwxMCArMTQ0MCwxMCBA
QCBTdHJpbmcgQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjppdGVtCiAgICAgcmV0dXJuIGdl
dFByb3BlcnR5TmFtZShzdGF0aWNfY2FzdDxDU1NQcm9wZXJ0eUlEPihjb21wdXRlZFByb3BlcnRp
ZXNbaV0pKTsKIH0KIAotLy8gVGhpcyBpcyB0aGUgbGlzdCBvZiBwcm9wZXJ0aWVzIHdlIHdhbnQg
dG8gY29weSBpbiB0aGUgY29weUluaGVyaXRhYmxlUHJvcGVydGllcygpIGZ1bmN0aW9uLgotLy8g
SXQgaXMgdGhlIGludGVyc2VjdGlvbiBvZiB0aGUgbGlzdCBvZiBpbmhlcml0ZWQgQ1NTIHByb3Bl
cnRpZXMgYW5kIHRoZQorLy8gVGhpcyBpcyB0aGUgbGlzdCBvZiBwcm9wZXJ0aWVzIHdlIHdhbnQg
dG8gY29weSBpbiB0aGUgY29weUVkaXRhYmxlUHJvcGVydGllcygpIGZ1bmN0aW9uLgorLy8gSXQg
aXMgdGhlIGludGVyc2VjdGlvbiBvZiB0aGUgbGlzdCBvZiBpbmhlcml0ZWQgQ1NTIHByb3BlcnRp
ZXMgKyBwcm9wZXJ0aWVzIGZvciBlZGl0aW5nIGFuZCB0aGUKIC8vIHByb3BlcnRpZXMgZm9yIHdo
aWNoIHdlIGhhdmUgYSBjb21wdXRlZCBpbXBsZW1lbnRhdGlvbiBpbiB0aGlzIGZpbGUuCi1zdGF0
aWMgY29uc3QgaW50IGluaGVyaXRhYmxlUHJvcGVydGllc1tdID0geworc3RhdGljIGNvbnN0IGlu
dCBwcm9wZXJ0aWVzRm9yRWRpdGluZ1tdID0gewogICAgIENTU1Byb3BlcnR5Qm9yZGVyQ29sbGFw
c2UsCiAgICAgQ1NTUHJvcGVydHlDb2xvciwKICAgICBDU1NQcm9wZXJ0eUZvbnRGYW1pbHksCkBA
IC0xNDY3LDE0ICsxNDY3LDEzIEBAIHN0YXRpYyBjb25zdCBpbnQgaW5oZXJpdGFibGVQcm9wZXJ0
aWVzW10KICAgICBDU1NQcm9wZXJ0eVdlYmtpdFRleHRTaXplQWRqdXN0LAogICAgIENTU1Byb3Bl
cnR5V2Via2l0VGV4dFN0cm9rZUNvbG9yLAogICAgIENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9r
ZVdpZHRoLAorCisgICAgLy8gUHJvcGVydGllcyBmb3IgZWRpdGluZworICAgIENTU1Byb3BlcnR5
VGV4dERlY29yYXRpb24sCisgICAgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IsCiB9OwogCi1z
dGF0aWMgY29uc3QgdW5zaWduZWQgbnVtSW5oZXJpdGFibGVQcm9wZXJ0aWVzID0gc2l6ZW9mKGlu
aGVyaXRhYmxlUHJvcGVydGllcykgLyBzaXplb2YoaW5oZXJpdGFibGVQcm9wZXJ0aWVzWzBdKTsK
LQotdm9pZCBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OnJlbW92ZUNvbXB1dGVkSW5oZXJp
dGFibGVQcm9wZXJ0aWVzRnJvbShDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiogZGVjbGFyYXRp
b24pCi17Ci0gICAgZGVjbGFyYXRpb24tPnJlbW92ZVByb3BlcnRpZXNJblNldChpbmhlcml0YWJs
ZVByb3BlcnRpZXMsIG51bUluaGVyaXRhYmxlUHJvcGVydGllcyk7Ci19CitzdGF0aWMgY29uc3Qg
dW5zaWduZWQgbnVtYmVyT2ZQcm9wZXJ0aWVzRm9yRWRpdGluZyA9IHNpemVvZihwcm9wZXJ0aWVz
Rm9yRWRpdGluZykgLyBzaXplb2YocHJvcGVydGllc0ZvckVkaXRpbmdbMF0pOwogCiBib29sIENT
U0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Y3NzUHJvcGVydHlNYXRjaGVzKGNvbnN0IENTU1By
b3BlcnR5KiBwcm9wZXJ0eSkgY29uc3QKIHsKQEAgLTE0OTIsMjUgKzE0OTEsMzEgQEAgYm9vbCBD
U1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmNzc1BybwogICAgIHJldHVybiBDU1NTdHlsZURl
Y2xhcmF0aW9uOjpjc3NQcm9wZXJ0eU1hdGNoZXMocHJvcGVydHkpOwogfQogCi1QYXNzUmVmUHRy
PENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246
OmNvcHlJbmhlcml0YWJsZVByb3BlcnRpZXMoKSBjb25zdAorUGFzc1JlZlB0cjxDU1NNdXRhYmxl
U3R5bGVEZWNsYXJhdGlvbj4gQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpjb3B5UHJvcGVy
dGllc0ZvckVkaXRpbmcoKSBjb25zdAogewotICAgIFJlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNs
YXJhdGlvbj4gc3R5bGUgPSBjb3B5UHJvcGVydGllc0luU2V0KGluaGVyaXRhYmxlUHJvcGVydGll
cywgbnVtSW5oZXJpdGFibGVQcm9wZXJ0aWVzKTsKLSAgICBpZiAoc3R5bGUgJiYgbV9ub2RlICYm
IG1fbm9kZS0+Y29tcHV0ZWRTdHlsZSgpKSB7Ci0gICAgICAgIC8vIElmIGEgbm9kZSdzIHRleHQg
ZmlsbCBjb2xvciBpcyBpbnZhbGlkLCB0aGVuIGl0cyBjaGlsZHJlbiB1c2UgCi0gICAgICAgIC8v
IHRoZWlyIGZvbnQtY29sb3IgYXMgdGhlaXIgdGV4dCBmaWxsIGNvbG9yICh0aGV5IGRvbid0Ci0g
ICAgICAgIC8vIGluaGVyaXQgaXQpLiAgTGlrZXdpc2UgZm9yIHN0cm9rZSBjb2xvci4KLSAgICAg
ICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgICAgIGlmICghbV9ub2RlLT5jb21wdXRlZFN0
eWxlKCktPnRleHRGaWxsQ29sb3IoKS5pc1ZhbGlkKCkpCi0gICAgICAgICAgICBzdHlsZS0+cmVt
b3ZlUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRUZXh0RmlsbENvbG9yLCBlYyk7Ci0gICAgICAg
IGlmICghbV9ub2RlLT5jb21wdXRlZFN0eWxlKCktPnRleHRTdHJva2VDb2xvcigpLmlzVmFsaWQo
KSkKLSAgICAgICAgICAgIHN0eWxlLT5yZW1vdmVQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdFRl
eHRTdHJva2VDb2xvciwgZWMpOwotICAgICAgICBBU1NFUlQoZWMgPT0gMCk7Ci0gICAgICAgIGlm
IChpbnQga2V5d29yZFNpemUgPSBtX25vZGUtPmNvbXB1dGVkU3R5bGUoKS0+Zm9udERlc2NyaXB0
aW9uKCkua2V5d29yZFNpemUoKSkKLSAgICAgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQ
cm9wZXJ0eUZvbnRTaXplLCBjc3NJZGVudGlmaWVyRm9yRm9udFNpemVLZXl3b3JkKGtleXdvcmRT
aXplKSk7Ci0gICAgfQorICAgIFJlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gc3R5
bGUgPSBjb3B5UHJvcGVydGllc0luU2V0KHByb3BlcnRpZXNGb3JFZGl0aW5nLCBudW1iZXJPZlBy
b3BlcnRpZXNGb3JFZGl0aW5nKTsKKyAgICByZW1vdmVJbnZhbGlkVGV4dFN0eWxlKHN0eWxlKTsK
ICAgICByZXR1cm4gc3R5bGUucmVsZWFzZSgpOwogfQogCit2b2lkIENTU0NvbXB1dGVkU3R5bGVE
ZWNsYXJhdGlvbjo6cmVtb3ZlSW52YWxpZFRleHRTdHlsZSggUmVmUHRyPENTU011dGFibGVTdHls
ZURlY2xhcmF0aW9uPiYgc3R5bGUgKSBjb25zdAoreworICAgIGlmICghc3R5bGUgfHwgIW1fbm9k
ZSB8fCAhbV9ub2RlLT5jb21wdXRlZFN0eWxlKCkpCisgICAgICAgIHJldHVybjsKKworICAgIC8v
IElmIGEgbm9kZSdzIHRleHQgZmlsbCBjb2xvciBpcyBpbnZhbGlkLCB0aGVuIGl0cyBjaGlsZHJl
biB1c2UgdGhlaXIgZm9udC1jb2xvciBhcyB0aGVpciB0ZXh0IGZpbGwgY29sb3IKKyAgICAvLyAo
dGhleSBkb24ndCBpbmhlcml0IGl0KS4gIExpa2V3aXNlIGZvciBzdHJva2UgY29sb3IuCisgICAg
RXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgUmVuZGVyU3R5bGUqIHJlbmRlclN0eWxlID0gbV9u
b2RlLT5jb21wdXRlZFN0eWxlKCk7CisgICAgaWYgKCFyZW5kZXJTdHlsZS0+dGV4dEZpbGxDb2xv
cigpLmlzVmFsaWQoKSkKKyAgICAgICAgc3R5bGUtPnJlbW92ZVByb3BlcnR5KENTU1Byb3BlcnR5
V2Via2l0VGV4dEZpbGxDb2xvciwgZWMpOworICAgIGlmICghcmVuZGVyU3R5bGUtPnRleHRTdHJv
a2VDb2xvcigpLmlzVmFsaWQoKSkKKyAgICAgICAgc3R5bGUtPnJlbW92ZVByb3BlcnR5KENTU1By
b3BlcnR5V2Via2l0VGV4dFN0cm9rZUNvbG9yLCBlYyk7CisgICAgQVNTRVJUKGVjID09IDApOwor
ICAgIGlmIChpbnQga2V5d29yZFNpemUgPSByZW5kZXJTdHlsZS0+Zm9udERlc2NyaXB0aW9uKCku
a2V5d29yZFNpemUoKSkKKyAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5Rm9u
dFNpemUsIGNzc0lkZW50aWZpZXJGb3JGb250U2l6ZUtleXdvcmQoa2V5d29yZFNpemUpKTsKK30K
KwogUGFzc1JlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gQ1NTQ29tcHV0ZWRTdHls
ZURlY2xhcmF0aW9uOjpjb3B5KCkgY29uc3QKIHsKICAgICByZXR1cm4gY29weVByb3BlcnRpZXNJ
blNldChjb21wdXRlZFByb3BlcnRpZXMsIG51bUNvbXB1dGVkUHJvcGVydGllcyk7CkluZGV4OiBX
ZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaAkocmV2aXNpb24gNDU4NjQp
CisrKyBXZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaAkod29ya2luZyBj
b3B5KQpAQCAtNTUsOSArNTUsNyBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4g
Z2V0U1ZHUHJvcGVydHlDU1NWYWx1ZShpbnQgcHJvcGVydHlJRCwgRVVwZGF0ZUxheW91dCkgY29u
c3Q7CiAjZW5kaWYKIAotICAgIFBhc3NSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+
IGNvcHlJbmhlcml0YWJsZVByb3BlcnRpZXMoKSBjb25zdDsKLQotICAgIHN0YXRpYyB2b2lkIHJl
bW92ZUNvbXB1dGVkSW5oZXJpdGFibGVQcm9wZXJ0aWVzRnJvbShDU1NNdXRhYmxlU3R5bGVEZWNs
YXJhdGlvbiopOworICAgIFBhc3NSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IGNv
cHlQcm9wZXJ0aWVzRm9yRWRpdGluZygpIGNvbnN0OwogCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVh
bCBib29sIGNzc1Byb3BlcnR5TWF0Y2hlcyhjb25zdCBDU1NQcm9wZXJ0eSopIGNvbnN0OwpAQCAt
NzAsNiArNjgsOCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgU3RyaW5nIHJlbW92ZVByb3BlcnR5
KGludCBwcm9wZXJ0eUlELCBFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCB2b2lkIHNldFBy
b3BlcnR5KGludCBwcm9wZXJ0eUlkLCBjb25zdCBTdHJpbmcmIHZhbHVlLCBib29sIGltcG9ydGFu
dCwgRXhjZXB0aW9uQ29kZSYpOwogCisgICAgdm9pZCByZW1vdmVJbnZhbGlkVGV4dFN0eWxlKCBS
ZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+JiBzdHlsZSApIGNvbnN0OworCiAgICAg
UmVmUHRyPE5vZGU+IG1fbm9kZTsKIH07CiAKSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9EZWxldGVT
ZWxlY3Rpb25Db21tYW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvRGVsZXRl
U2VsZWN0aW9uQ29tbWFuZC5jcHAJKHJldmlzaW9uIDQ1ODY0KQorKysgV2ViQ29yZS9lZGl0aW5n
L0RlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTksOSArMjU5
LDkgQEAgc3RhdGljIHZvaWQgcmVtb3ZlRW5jbG9zaW5nQW5jaG9yU3R5bGUoQwogICAgIE5vZGUq
IGVuY2xvc2luZ0FuY2hvciA9IGVuY2xvc2luZ0FuY2hvckVsZW1lbnQocG9zaXRpb24pOwogICAg
IGlmICghZW5jbG9zaW5nQW5jaG9yIHx8ICFlbmNsb3NpbmdBbmNob3ItPnBhcmVudE5vZGUoKSkK
ICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgCi0gICAgUmVmUHRyPENTU011dGFibGVTdHls
ZURlY2xhcmF0aW9uPiBwYXJlbnRTdHlsZSA9IFBvc2l0aW9uKGVuY2xvc2luZ0FuY2hvci0+cGFy
ZW50Tm9kZSgpLCAwKS5jb21wdXRlZFN0eWxlKCktPmNvcHlJbmhlcml0YWJsZVByb3BlcnRpZXMo
KTsKLSAgICBSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IGFuY2hvclN0eWxlID0g
UG9zaXRpb24oZW5jbG9zaW5nQW5jaG9yLCAwKS5jb21wdXRlZFN0eWxlKCktPmNvcHlJbmhlcml0
YWJsZVByb3BlcnRpZXMoKTsKKworICAgIFJlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlv
bj4gcGFyZW50U3R5bGUgPSBQb3NpdGlvbihlbmNsb3NpbmdBbmNob3ItPnBhcmVudE5vZGUoKSwg
MCkuY29tcHV0ZWRTdHlsZSgpLT5jb3B5UHJvcGVydGllc0ZvckVkaXRpbmcoKTsKKyAgICBSZWZQ
dHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IGFuY2hvclN0eWxlID0gUG9zaXRpb24oZW5j
bG9zaW5nQW5jaG9yLCAwKS5jb21wdXRlZFN0eWxlKCktPmNvcHlQcm9wZXJ0aWVzRm9yRWRpdGlu
ZygpOwogICAgIHBhcmVudFN0eWxlLT5kaWZmKGFuY2hvclN0eWxlLmdldCgpKTsKICAgICBhbmNo
b3JTdHlsZS0+ZGlmZihzdHlsZSk7CiB9CkBAIC0yODAsNyArMjgwLDcgQEAgdm9pZCBEZWxldGVT
ZWxlY3Rpb25Db21tYW5kOjpzYXZlVHlwaW5nUwogICAgICAgICAKICAgICAvLyBGaWd1cmUgb3V0
IHRoZSB0eXBpbmcgc3R5bGUgaW4gZWZmZWN0IGJlZm9yZSB0aGUgZGVsZXRlIGlzIGRvbmUuCiAg
ICAgUmVmUHRyPENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbj4gY29tcHV0ZWRTdHlsZSA9IHBv
c2l0aW9uQmVmb3JlVGFiU3BhbihtX3NlbGVjdGlvblRvRGVsZXRlLnN0YXJ0KCkpLmNvbXB1dGVk
U3R5bGUoKTsKLSAgICBtX3R5cGluZ1N0eWxlID0gY29tcHV0ZWRTdHlsZS0+Y29weUluaGVyaXRh
YmxlUHJvcGVydGllcygpOworICAgIG1fdHlwaW5nU3R5bGUgPSBjb21wdXRlZFN0eWxlLT5jb3B5
UHJvcGVydGllc0ZvckVkaXRpbmcoKTsKICAgICAKICAgICByZW1vdmVFbmNsb3NpbmdBbmNob3JT
dHlsZShtX3R5cGluZ1N0eWxlLmdldCgpLCBtX3NlbGVjdGlvblRvRGVsZXRlLnN0YXJ0KCkpOwog
ICAgIApAQCAtMjg4LDcgKzI4OCw3IEBAIHZvaWQgRGVsZXRlU2VsZWN0aW9uQ29tbWFuZDo6c2F2
ZVR5cGluZ1MKICAgICAvLyBXZSdsbCB1c2UgdGhpcyBsYXRlciBpbiBjb21wdXRlVHlwaW5nU3R5
bGVBZnRlckRlbGV0ZSBpZiB3ZSBlbmQgdXAgb3V0c2lkZSBvZiBhIE1haWwgYmxvY2txdW90ZQog
ICAgIGlmIChuZWFyZXN0TWFpbEJsb2NrcXVvdGUobV9zZWxlY3Rpb25Ub0RlbGV0ZS5zdGFydCgp
Lm5vZGUoKSkpIHsKICAgICAgICAgY29tcHV0ZWRTdHlsZSA9IG1fc2VsZWN0aW9uVG9EZWxldGUu
ZW5kKCkuY29tcHV0ZWRTdHlsZSgpOwotICAgICAgICBtX2RlbGV0ZUludG9CbG9ja3F1b3RlU3R5
bGUgPSBjb21wdXRlZFN0eWxlLT5jb3B5SW5oZXJpdGFibGVQcm9wZXJ0aWVzKCk7CisgICAgICAg
IG1fZGVsZXRlSW50b0Jsb2NrcXVvdGVTdHlsZSA9IGNvbXB1dGVkU3R5bGUtPmNvcHlQcm9wZXJ0
aWVzRm9yRWRpdGluZygpOwogICAgIH0gZWxzZQogICAgICAgICBtX2RlbGV0ZUludG9CbG9ja3F1
b3RlU3R5bGUgPSAwOwogfQpJbmRleDogV2ViQ29yZS9lZGl0aW5nL0VkaXRDb21tYW5kLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvRWRpdENvbW1hbmQuY3BwCShyZXZpc2lvbiA0
NTg2NCkKKysrIFdlYkNvcmUvZWRpdGluZy9FZGl0Q29tbWFuZC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE5Nyw3ICsxOTcsNyBAQCBib29sIEVkaXRDb21tYW5kOjppc1R5cGluZ0NvbW1hbmQoKSBj
b25zCiAKIFBhc3NSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IEVkaXRDb21tYW5k
OjpzdHlsZUF0UG9zaXRpb24oY29uc3QgUG9zaXRpb24gJnBvcykKIHsKLSAgICBSZWZQdHI8Q1NT
TXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IHN0eWxlID0gcG9zaXRpb25CZWZvcmVUYWJTcGFuKHBv
cykuY29tcHV0ZWRTdHlsZSgpLT5jb3B5SW5oZXJpdGFibGVQcm9wZXJ0aWVzKCk7CisgICAgUmVm
UHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBzdHlsZSA9IHBvc2l0aW9uQmVmb3JlVGFi
U3Bhbihwb3MpLmNvbXB1dGVkU3R5bGUoKS0+Y29weVByb3BlcnRpZXNGb3JFZGl0aW5nKCk7CiAg
CiAgICAgLy8gRklYTUU6IEl0IHNlZW1zIG1pc2xlYWRpbmcgdG8gYWxzbyBpbmNsdWRlIHRoZSB0
eXBpbmcgc3R5bGUgd2hlbiByZXR1cm5pbmcgdGhlIHN0eWxlIGF0IHNvbWUgYXJiaXRyYXJ5CiAg
ICAgLy8gcG9zaXRpb24gaW4gdGhlIGRvY3VtZW50LgpJbmRleDogV2ViQ29yZS9lZGl0aW5nL1Jl
bW92ZUZvcm1hdENvbW1hbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZWRpdGluZy9SZW1v
dmVGb3JtYXRDb21tYW5kLmNwcAkocmV2aXNpb24gNDU4NjQpCisrKyBXZWJDb3JlL2VkaXRpbmcv
UmVtb3ZlRm9ybWF0Q29tbWFuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1LDcgKzU1LDcgQEAg
dm9pZCBSZW1vdmVGb3JtYXRDb21tYW5kOjpkb0FwcGx5KCkKICAgICAvLyBHZXQgdGhlIGRlZmF1
bHQgc3R5bGUgZm9yIHRoaXMgZWRpdGFibGUgcm9vdCwgaXQncyB0aGUgc3R5bGUgdGhhdCB3ZSds
bCBnaXZlIHRoZQogICAgIC8vIGNvbnRlbnQgdGhhdCB3ZSdyZSBvcGVyYXRpbmcgb24uCiAgICAg
Tm9kZSogcm9vdCA9IGZyYW1lLT5zZWxlY3Rpb24oKS0+cm9vdEVkaXRhYmxlRWxlbWVudCgpOwot
ICAgIFJlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gZGVmYXVsdFN0eWxlID0gY29t
cHV0ZWRTdHlsZShyb290KS0+Y29weUluaGVyaXRhYmxlUHJvcGVydGllcygpOworICAgIFJlZlB0
cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gZGVmYXVsdFN0eWxlID0gY29tcHV0ZWRTdHls
ZShyb290KS0+Y29weVByb3BlcnRpZXNGb3JFZGl0aW5nKCk7CiAgICAgCiAgICAgLy8gRGVsZXRl
IHRoZSBzZWxlY3RlZCBjb250ZW50LgogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYmUgYWJsZSB0
byBsZWF2ZSB0aGlzIHRvIGluc2VydFRleHQsIGJ1dCBpdHMgZGVsZXRlIG9wZXJhdGlvbgpJbmRl
eDogV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCShyZXZpc2lv
biA0NTg2NCkKKysrIFdlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTU0OSw4ICs1NDksOCBAQCBzdGF0aWMgYm9vbCBoYW5kbGVTdHls
ZVNwYW5zQmVmb3JlSW5zZXJ0CiAgICAgCiAgICAgTm9kZSogc291cmNlRG9jdW1lbnRTdHlsZVNw
YW4gPSB0b3BOb2RlOwogICAgIFJlZlB0cjxOb2RlPiBjb3BpZWRSYW5nZVN0eWxlU3BhbiA9IHNv
dXJjZURvY3VtZW50U3R5bGVTcGFuLT5maXJzdENoaWxkKCk7Ci0gICAgCi0gICAgUmVmUHRyPENT
U011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBzdHlsZUF0SW5zZXJ0aW9uUG9zID0gcmFuZ2VDb21w
bGlhbnRFcXVpdmFsZW50KGluc2VydGlvblBvcykuY29tcHV0ZWRTdHlsZSgpLT5jb3B5SW5oZXJp
dGFibGVQcm9wZXJ0aWVzKCk7CisKKyAgICBSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRp
b24+IHN0eWxlQXRJbnNlcnRpb25Qb3MgPSByYW5nZUNvbXBsaWFudEVxdWl2YWxlbnQoaW5zZXJ0
aW9uUG9zKS5jb21wdXRlZFN0eWxlKCktPmNvcHlQcm9wZXJ0aWVzRm9yRWRpdGluZygpOwogICAg
IFN0cmluZyBzdHlsZVRleHQgPSBzdHlsZUF0SW5zZXJ0aW9uUG9zLT5jc3NUZXh0KCk7CiAgICAg
CiAgICAgaWYgKHN0eWxlVGV4dCA9PSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4oc291cmNlRG9jdW1l
bnRTdHlsZVNwYW4pLT5nZXRBdHRyaWJ1dGUoc3R5bGVBdHRyKSkgewpAQCAtNjA2LDggKzYwNiw4
IEBAIHZvaWQgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OmhhbmRsZVN0eWwKICAgICAvLyBzdHls
ZXMgZnJvbSBibG9ja3F1b3RlTm9kZSBhcmUgYWxsb3dlZCB0byBvdmVycmlkZSB0aG9zZSBmcm9t
IHRoZSBzb3VyY2UgZG9jdW1lbnQsIHNlZSA8cmRhcjovL3Byb2JsZW0vNDkzMDk4Nj4gYW5kIDxy
ZGFyOi8vcHJvYmxlbS81MDg5MzI3Pi4KICAgICBOb2RlKiBibG9ja3F1b3RlTm9kZSA9IGlzTWFp
bFBhc3RlQXNRdW90YXRpb25Ob2RlKGNvbnRleHQpID8gY29udGV4dCA6IG5lYXJlc3RNYWlsQmxv
Y2txdW90ZShjb250ZXh0KTsKICAgICBpZiAoYmxvY2txdW90ZU5vZGUpIHsKLSAgICAgICAgUmVm
UHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBibG9ja3F1b3RlU3R5bGUgPSBjb21wdXRl
ZFN0eWxlKGJsb2NrcXVvdGVOb2RlKS0+Y29weUluaGVyaXRhYmxlUHJvcGVydGllcygpOwotICAg
ICAgICBSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IHBhcmVudFN0eWxlID0gY29t
cHV0ZWRTdHlsZShibG9ja3F1b3RlTm9kZS0+cGFyZW50Tm9kZSgpKS0+Y29weUluaGVyaXRhYmxl
UHJvcGVydGllcygpOworICAgICAgICBSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+
IGJsb2NrcXVvdGVTdHlsZSA9IGNvbXB1dGVkU3R5bGUoYmxvY2txdW90ZU5vZGUpLT5jb3B5UHJv
cGVydGllc0ZvckVkaXRpbmcoKTsKKyAgICAgICAgUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xh
cmF0aW9uPiBwYXJlbnRTdHlsZSA9IGNvbXB1dGVkU3R5bGUoYmxvY2txdW90ZU5vZGUtPnBhcmVu
dE5vZGUoKSktPmNvcHlQcm9wZXJ0aWVzRm9yRWRpdGluZygpOwogICAgICAgICBwYXJlbnRTdHls
ZS0+ZGlmZihibG9ja3F1b3RlU3R5bGUuZ2V0KCkpOwogCiAgICAgICAgIENTU011dGFibGVTdHls
ZURlY2xhcmF0aW9uOjpjb25zdF9pdGVyYXRvciBlbmQgPSBibG9ja3F1b3RlU3R5bGUtPmVuZCgp
OwpAQCAtNjE5LDcgKzYxOSw3IEBAIHZvaWQgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OmhhbmRs
ZVN0eWwKICAgICAgICAgY29udGV4dCA9IGJsb2NrcXVvdGVOb2RlLT5wYXJlbnROb2RlKCk7CiAg
ICAgfQogICAgIAotICAgIFJlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gY29udGV4
dFN0eWxlID0gY29tcHV0ZWRTdHlsZShjb250ZXh0KS0+Y29weUluaGVyaXRhYmxlUHJvcGVydGll
cygpOworICAgIFJlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gY29udGV4dFN0eWxl
ID0gY29tcHV0ZWRTdHlsZShjb250ZXh0KS0+Y29weVByb3BlcnRpZXNGb3JFZGl0aW5nKCk7CiAg
ICAgY29udGV4dFN0eWxlLT5kaWZmKHNvdXJjZURvY3VtZW50U3R5bGUuZ2V0KCkpOwogICAgIAog
ICAgIC8vIFJlbW92ZSBibG9jayBwcm9wZXJ0aWVzIGluIHRoZSBzcGFuJ3Mgc3R5bGUuIFRoaXMg
cHJldmVudHMgcHJvcGVydGllcyB0aGF0IHByb2JhYmx5IGhhdmUgbm8gZWZmZWN0IApAQCAtNjU1
LDcgKzY1NSw3IEBAIHZvaWQgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OmhhbmRsZVN0eWwKICAg
ICAKICAgICAvLyBSZW1vdmUgcmVkdW5kYW50IHN0eWxlcy4KICAgICBjb250ZXh0ID0gY29waWVk
UmFuZ2VTdHlsZVNwYW4tPnBhcmVudE5vZGUoKTsKLSAgICBjb250ZXh0U3R5bGUgPSBjb21wdXRl
ZFN0eWxlKGNvbnRleHQpLT5jb3B5SW5oZXJpdGFibGVQcm9wZXJ0aWVzKCk7CisgICAgY29udGV4
dFN0eWxlID0gY29tcHV0ZWRTdHlsZShjb250ZXh0KS0+Y29weVByb3BlcnRpZXNGb3JFZGl0aW5n
KCk7CiAgICAgY29udGV4dFN0eWxlLT5kaWZmKGNvcGllZFJhbmdlU3R5bGUuZ2V0KCkpOwogICAg
IAogICAgIC8vIFNlZSB0aGUgY29tbWVudHMgYWJvdmUgYWJvdXQgcmVtb3ZpbmcgYmxvY2sgcHJv
cGVydGllcy4KSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCShyZXZpc2lvbiA0NTg2NCkKKysrIFdlYkNvcmUv
ZWRpdGluZy9tYXJrdXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOTEsOSArMjkxLDkgQEAgc3Rh
dGljIHZvaWQgcmVtb3ZlRW5jbG9zaW5nTWFpbEJsb2NrcXVvdAogICAgIE5vZGUqIGJsb2NrcXVv
dGUgPSBuZWFyZXN0TWFpbEJsb2NrcXVvdGUobm9kZSk7CiAgICAgaWYgKCFibG9ja3F1b3RlIHx8
ICFibG9ja3F1b3RlLT5wYXJlbnROb2RlKCkpCiAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAg
IAotICAgIFJlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gcGFyZW50U3R5bGUgPSBQ
b3NpdGlvbihibG9ja3F1b3RlLT5wYXJlbnROb2RlKCksIDApLmNvbXB1dGVkU3R5bGUoKS0+Y29w
eUluaGVyaXRhYmxlUHJvcGVydGllcygpOwotICAgIFJlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNs
YXJhdGlvbj4gYmxvY2txdW90ZVN0eWxlID0gUG9zaXRpb24oYmxvY2txdW90ZSwgMCkuY29tcHV0
ZWRTdHlsZSgpLT5jb3B5SW5oZXJpdGFibGVQcm9wZXJ0aWVzKCk7CisKKyAgICBSZWZQdHI8Q1NT
TXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IHBhcmVudFN0eWxlID0gUG9zaXRpb24oYmxvY2txdW90
ZS0+cGFyZW50Tm9kZSgpLCAwKS5jb21wdXRlZFN0eWxlKCktPmNvcHlQcm9wZXJ0aWVzRm9yRWRp
dGluZygpOworICAgIFJlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gYmxvY2txdW90
ZVN0eWxlID0gUG9zaXRpb24oYmxvY2txdW90ZSwgMCkuY29tcHV0ZWRTdHlsZSgpLT5jb3B5UHJv
cGVydGllc0ZvckVkaXRpbmcoKTsKICAgICBwYXJlbnRTdHlsZS0+ZGlmZihibG9ja3F1b3RlU3R5
bGUuZ2V0KCkpOwogICAgIGJsb2NrcXVvdGVTdHlsZS0+ZGlmZihzdHlsZSk7CiB9CkBAIC0zMDIs
OCArMzAyLDggQEAgc3RhdGljIHZvaWQgcmVtb3ZlRGVmYXVsdFN0eWxlcyhDU1NNdXRhYgogewog
ICAgIGlmICghZG9jdW1lbnQgfHwgIWRvY3VtZW50LT5kb2N1bWVudEVsZW1lbnQoKSkKICAgICAg
ICAgcmV0dXJuOwotICAgICAgICAgICAgCi0gICAgUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xh
cmF0aW9uPiBkb2N1bWVudFN0eWxlID0gY29tcHV0ZWRTdHlsZShkb2N1bWVudC0+ZG9jdW1lbnRF
bGVtZW50KCkpLT5jb3B5SW5oZXJpdGFibGVQcm9wZXJ0aWVzKCk7CisKKyAgICBSZWZQdHI8Q1NT
TXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IGRvY3VtZW50U3R5bGUgPSBjb21wdXRlZFN0eWxlKGRv
Y3VtZW50LT5kb2N1bWVudEVsZW1lbnQoKSktPmNvcHlQcm9wZXJ0aWVzRm9yRWRpdGluZygpOwog
ICAgIGRvY3VtZW50U3R5bGUtPmRpZmYoc3R5bGUpOwogfQogCkBAIC05MzAsNyArOTMwLDcgQEAg
U3RyaW5nIGNyZWF0ZU1hcmt1cChjb25zdCBSYW5nZSogcmFuZ2UsIAogICAgIAogICAgIE5vZGUq
IGNoZWNrQW5jZXN0b3IgPSBzcGVjaWFsQ29tbW9uQW5jZXN0b3IgPyBzcGVjaWFsQ29tbW9uQW5j
ZXN0b3IgOiBjb21tb25BbmNlc3RvcjsKICAgICBpZiAoY2hlY2tBbmNlc3Rvci0+cmVuZGVyZXIo
KSkgewotICAgICAgICBSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IGNoZWNrQW5j
ZXN0b3JTdHlsZSA9IGNvbXB1dGVkU3R5bGUoY2hlY2tBbmNlc3RvciktPmNvcHlJbmhlcml0YWJs
ZVByb3BlcnRpZXMoKTsKKyAgICAgICAgUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9u
PiBjaGVja0FuY2VzdG9yU3R5bGUgPSBjb21wdXRlZFN0eWxlKGNoZWNrQW5jZXN0b3IpLT5jb3B5
UHJvcGVydGllc0ZvckVkaXRpbmcoKTsKICAgICAgICAgaWYgKCFwcm9wZXJ0eU1pc3NpbmdPckVx
dWFsVG9Ob25lKGNoZWNrQW5jZXN0b3JTdHlsZS5nZXQoKSwgQ1NTUHJvcGVydHlXZWJraXRUZXh0
RGVjb3JhdGlvbnNJbkVmZmVjdCkpCiAgICAgICAgICAgICBzcGVjaWFsQ29tbW9uQW5jZXN0b3Ig
PSBlbmNsb3NpbmdOb2RlT2ZUeXBlKFBvc2l0aW9uKGNoZWNrQW5jZXN0b3IsIDApLCAmZWxlbWVu
dEhhc1RleHREZWNvcmF0aW9uUHJvcGVydHkpOwogICAgIH0KQEAgLTEwMDAsNyArMTAwMCw3IEBA
IFN0cmluZyBjcmVhdGVNYXJrdXAoY29uc3QgUmFuZ2UqIHJhbmdlLCAKICAgICAvLyBBZGQgYSB3
cmFwcGVyIHNwYW4gd2l0aCB0aGUgc3R5bGVzIHRoYXQgYWxsIG9mIHRoZSBub2RlcyBpbiB0aGUg
bWFya3VwIGluaGVyaXQuCiAgICAgTm9kZSogcGFyZW50T2ZMYXN0Q2xvc2VkID0gbGFzdENsb3Nl
ZCA/IGxhc3RDbG9zZWQtPnBhcmVudE5vZGUoKSA6IDA7CiAgICAgaWYgKHBhcmVudE9mTGFzdENs
b3NlZCAmJiBwYXJlbnRPZkxhc3RDbG9zZWQtPnJlbmRlcmVyKCkpIHsKLSAgICAgICAgUmVmUHRy
PENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBzdHlsZSA9IGNvbXB1dGVkU3R5bGUocGFyZW50
T2ZMYXN0Q2xvc2VkKS0+Y29weUluaGVyaXRhYmxlUHJvcGVydGllcygpOworICAgICAgICBSZWZQ
dHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IHN0eWxlID0gY29tcHV0ZWRTdHlsZShwYXJl
bnRPZkxhc3RDbG9zZWQpLT5jb3B5UHJvcGVydGllc0ZvckVkaXRpbmcoKTsKIAogICAgICAgICAv
LyBTdHlsZXMgdGhhdCBNYWlsIGJsb2NrcXVvdGVzIGNvbnRyaWJ1dGUgc2hvdWxkIG9ubHkgYmUg
cGxhY2VkIG9uIHRoZSBNYWlsIGJsb2NrcXVvdGUsIHRvIGhlbHAKICAgICAgICAgLy8gdXMgZGlm
ZmVyZW50aWF0ZSB0aG9zZSBzdHlsZXMgZnJvbSBvbmVzIHRoYXQgdGhlIHVzZXIgaGFzIGFwcGxp
ZWQuICBUaGlzIGhlbHBzIHVzCkBAIC0xMDMyLDcgKzEwMzIsNyBAQCBTdHJpbmcgY3JlYXRlTWFy
a3VwKGNvbnN0IFJhbmdlKiByYW5nZSwgCiAgICAgICAgIC8vIEFkZCBhIHN0eWxlIHNwYW4gd2l0
aCB0aGUgZG9jdW1lbnQncyBkZWZhdWx0IHN0eWxlcy4gIFdlIGFkZCB0aGVzZSBpbiBhIHNlcGFy
YXRlCiAgICAgICAgIC8vIHNwYW4gc28gdGhhdCBhdCBwYXN0ZSB0aW1lIHdlIGNhbiBkaWZmZXJl
bnRpYXRlIGJldHdlZW4gZG9jdW1lbnQgZGVmYXVsdHMgYW5kIHVzZXIKICAgICAgICAgLy8gYXBw
bGllZCBzdHlsZXMuCi0gICAgICAgIFJlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4g
ZGVmYXVsdFN0eWxlID0gY29tcHV0ZWRTdHlsZShkb2N1bWVudC0+ZG9jdW1lbnRFbGVtZW50KCkp
LT5jb3B5SW5oZXJpdGFibGVQcm9wZXJ0aWVzKCk7CisgICAgICAgIFJlZlB0cjxDU1NNdXRhYmxl
U3R5bGVEZWNsYXJhdGlvbj4gZGVmYXVsdFN0eWxlID0gY29tcHV0ZWRTdHlsZShkb2N1bWVudC0+
ZG9jdW1lbnRFbGVtZW50KCkpLT5jb3B5UHJvcGVydGllc0ZvckVkaXRpbmcoKTsKICAgICAgICAg
CiAgICAgICAgIGlmIChkZWZhdWx0U3R5bGUtPmxlbmd0aCgpID4gMCkgewogICAgICAgICAgICAg
VmVjdG9yPFVDaGFyPiBvcGVuVGFnOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNDU5NTApCisrKyBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyOCBAQAorMjAwOS0w
Ny0xNSAgUnlvc3VrZSBOaXdhICA8cnlvc3VrZS5uaXdhQGdtYWlsLmNvbT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBCYWNrZ3JvdW5kIGNvbG9yIGZv
cm1hdHRpbmcgbG9zdCBvbiBlbnRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjAzNDgKKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgQ1NTUHJvcGVy
dHlCYWNrZ3JvdW5kQ29sb3IgYW5kIENTU1Byb3BlcnR5VGV4dERlY29yYXRpb24gdG8gY29weVBy
b3BlcnRpZXNGb3JFZGl0aW5nCisgICAgICAgICh1c2VkIHRvIGJlIGNhbGxlZCBpbmhlcml0YWJs
ZVByb3BlcnRpZXMpLiAgQnkgZG9pbmcgc28sIHdlIGFsbG93IGJhY2tncm91bmQgY29sb3IgYW5k
IHRleHQgZGVjb3JhdGlvbnMKKyAgICAgICAgdG8gYmUgcHJlc2VydmVkIHVuZGVyIHZhcmlvdXMg
ZWRpdGluZyBvcGVyYXRpb25zLgorCisgICAgICAgIFNvbWUgdGVzdHMgYXJlIHJlYmFzZWxpbmVk
IHNpbmNlIFdlYktpdCBub3cgcHJvZHVjZXMgZXh0cmEgc3BhbiB0byBpbmNsdWRlIHdoaXRlIGJh
Y2tncm91bmQuCisgICAgICAgIFdoaWxlIHNvbWUgb2YgbmV3IGV4cGVjdGVkIHJlc3VsdHMgY29u
dGFpbiBleHRyYSBzcGFucyB0aGF0IGNvdWxkIGJlIG1lcmdlZCB3aXRoIGFkam9pbnQgc3BhbnMs
CisgICAgICAgIHRoaXMgd291bGQgYmUgZGVhbHQgYXMgYSBzZXBhcmF0ZSBidWcuCisKKyAgICAg
ICAgKiBlZGl0aW5nL2luc2VydGluZy81OTk0NDgwLTItZXhwZWN0ZWQudHh0OiBXaGl0ZSBiYWNr
Z3JvdW5kIGNvbG9yIGlzIHNwZWNpZmllZCBidXQgdmlzdWFsbHkgaWRlbnRpY2FsLgorICAgICAg
ICAqIGVkaXRpbmcvcGFzdGVib2FyZC8xOTY0NC0yLWV4cGVjdGVkLnR4dDogIEV4dHJhIHNwYW4g
aXMgYWRkZWQgKGNhdXNlcyBidWcgMjY5MzcgdG8gYXBwZWFyKSBidXQgdmlzdWFsbHkgaWRlbnRp
Y2FsLgorICAgICAgICAqIGVkaXRpbmcvc3R5bGUvaGlnaGxpZ2h0LWFmdGVyLWVudGVyLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9zdHlsZS9oaWdobGlnaHQtYWZ0ZXIt
ZW50ZXIuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL2VkaXRpbmcvaW5zZXJ0
aW5nL2luc2VydC1kaXYtMDIyLWV4cGVjdGVkLnR4dDogRXh0cmEgc3BhbiBpcyBhZGRlZCBidXQg
dmlzdWFsbHkgaWRlbnRpY2FsLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9lZGl0aW5nL2luc2Vy
dGluZy9pbnNlcnQtZGl2LTAyMy1leHBlY3RlZC50eHQ6IEV4dHJhIHNwYW4gaXMgYWRkZWQgYnV0
IHZpc3VhbGx5IGlkZW50aWNhbC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvZWRpdGluZy9pbnNl
cnRpbmcvaW5zZXJ0LWRpdi0wMjQtZXhwZWN0ZWQudHh0OiBFeHRyYSBzcGFuIGlzIGFkZGVkIGJ1
dCB2aXN1YWxseSBpZGVudGljYWwuCisgICAgICAgICogcGxhdGZvcm0vbWFjL2VkaXRpbmcvcGFz
dGVib2FyZC9zZWxlY3QtZWxlbWVudC0xLWV4cGVjdGVkLnR4dDogV2hpdGUgYmFja2dyb3VuZCBj
b2xvciBpcyBzcGVjaWZpZWQgYnV0IHZpc3VhbGx5IGlkZW50aWNhbC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9tYWMvZWRpdGluZy9zZWxlY3Rpb24vY29udGFpbnMtYm91bmRhcmllcy1leHBlY3RlZC50
eHQ6IEV4dHJhIHNwYW4gaXMgYWRkZWQgYnV0IHZpc3VhbGx5IGlkZW50aWNhbC4KKwogMjAwOS0w
Ny0xNSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgRGFuIEJlcm5zdGVpbi4KSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvaW5zZXJ0aW5nLzU5
OTQ0ODAtMi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9p
bnNlcnRpbmcvNTk5NDQ4MC0yLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNDU4NjQpCisrKyBMYXlv
dXRUZXN0cy9lZGl0aW5nL2luc2VydGluZy81OTk0NDgwLTItZXhwZWN0ZWQudHh0CSh3b3JraW5n
IGNvcHkpCkBAIC0xICsxIEBACi08Zm9udCBjbGFzcz0iQXBwbGUtc3R5bGUtc3BhbiIgZmFjZT0i
J0x1Y2lkYSBHcmFuZGUnIiBzaXplPSIzIj48c3BhbiBjbGFzcz0iQXBwbGUtc3R5bGUtc3BhbiIg
c3R5bGU9ImZvbnQtc2l6ZTogMTFweDsiPjxicj48L3NwYW4+PC9mb250PgorPGZvbnQgY2xhc3M9
IkFwcGxlLXN0eWxlLXNwYW4iIGZhY2U9IidMdWNpZGEgR3JhbmRlJyIgc2l6ZT0iMyI+PHNwYW4g
Y2xhc3M9IkFwcGxlLXN0eWxlLXNwYW4iIHN0eWxlPSJmb250LXNpemU6IDExcHg7IGJhY2tncm91
bmQtY29sb3I6IHJnYigyNTUsIDI1NSwgMjU1KTsiPjxicj48L3NwYW4+PC9mb250PgpJbmRleDog
TGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkLzE5NjQ0LTItZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC8xOTY0NC0yLWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gNDU4NjQpCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQv
MTk2NDQtMi1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEgKzEgQEAKLTxkaXYgc3R5
bGU9ImJhY2tncm91bmQtY29sb3I6IHJnYigxODcsIDE4NywgMTg3KTsgIj5UaGlzIHRlc3RzIHRv
IG1ha2Ugc3VyZSB0aGF0IHdlIHdyYXAgY29waWVkIG1hcmt1cCBpbiBhIGRpdiB0byBob2xkIGEg
ZnVsbHkgc2VsZWN0ZWQgYm9keSdzIGF0dHJpYnV0ZXMgYW5kIHN0eWxlIHdoZW4gdGhlIHRoYXQg
Ym9keSBoYXMgYSBiYWNrZ3JvdW5kLWNvbG9yLiBJZiB5b3UgY29weSBhbmQgcGFzdGUgdGhpcyB0
ZXh0IGludG8gTWFpbCwgaXQgc2hvdWxkIGhhdmUgYSBncmV5IGJhY2tncm91bmQuPC9kaXY+Cis8
c3BhbiBjbGFzcz0iQXBwbGUtc3R5bGUtc3BhbiIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6IHJn
YmEoMCwgMCwgMCwgMCk7ICI+PGRpdiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogcmdiKDE4Nywg
MTg3LCAxODcpOyAiPlRoaXMgdGVzdHMgdG8gbWFrZSBzdXJlIHRoYXQgd2Ugd3JhcCBjb3BpZWQg
bWFya3VwIGluIGEgZGl2IHRvIGhvbGQgYSBmdWxseSBzZWxlY3RlZCBib2R5J3MgYXR0cmlidXRl
cyBhbmQgc3R5bGUgd2hlbiB0aGUgdGhhdCBib2R5IGhhcyBhIGJhY2tncm91bmQtY29sb3IuIElm
IHlvdSBjb3B5IGFuZCBwYXN0ZSB0aGlzIHRleHQgaW50byBNYWlsLCBpdCBzaG91bGQgaGF2ZSBh
IGdyZXkgYmFja2dyb3VuZC48L2Rpdj48L3NwYW4+CkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5n
L3N0eWxlL2hpZ2hsaWdodC1hZnRlci1lbnRlci1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZWRpdGluZy9zdHlsZS9oaWdobGlnaHQtYWZ0ZXItZW50ZXItZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9zdHlsZS9oaWdobGlnaHQt
YWZ0ZXItZW50ZXItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMgQEAKK3Rl
c3QKK2UKKzxzcGFuIGNsYXNzPSJBcHBsZS1zdHlsZS1zcGFuIiBzdHlsZT0iYmFja2dyb3VuZC1j
b2xvcjogcmdiKDE1MywgMTUzLCAyNTUpOyI+IHRlc3QgPC9zcGFuPgpJbmRleDogTGF5b3V0VGVz
dHMvZWRpdGluZy9zdHlsZS9oaWdobGlnaHQtYWZ0ZXItZW50ZXIuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9lZGl0aW5nL3N0eWxlL2hpZ2hsaWdodC1hZnRlci1lbnRlci5odG1sCShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9zdHlsZS9oaWdobGlnaHQtYWZ0ZXIt
ZW50ZXIuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MCBAQAorPGh0bWw+Cis8Ym9keT4K
KzxkaXYgaWQ9InRlc3QiIGNvbnRlbnRlZGl0YWJsZT0idHJ1ZSI+Cit0ZXN0Cis8L2Rpdj4KKzxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorCis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+
CisKK2Z1bmN0aW9uIHByZXNzS2V5KCBrZXkgKSB7CisgICAgaWYgKHdpbmRvdy5LZXlFdmVudCkg
eworICAgICAgICB2YXIgZXYgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgiS2V5Ym9hcmRFdmVudCIp
OworICAgICAgICBldi5pbml0S2V5RXZlbnQoImtleXByZXNzIiwgdHJ1ZSwgdHJ1ZSwgd2luZG93
LCAgMCwwLDAsMCwgMCwga2V5LmNoYXJDb2RlQXQoMCkpOworICAgICAgICBkb2N1bWVudC5ib2R5
LmRpc3BhdGNoRXZlbnQoZXYpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgdmFyIGV2ID0g
ZG9jdW1lbnQuY3JlYXRlRXZlbnQoIlRleHRFdmVudCIpOworICAgICAgICBldi5pbml0VGV4dEV2
ZW50KCd0ZXh0SW5wdXQnLCB0cnVlLCB0cnVlLCBudWxsLCBrZXkuY2hhckF0KDApKTsKKyAgICAg
ICAgZG9jdW1lbnQuYm9keS5kaXNwYXRjaEV2ZW50KGV2KTsKKyAgICB9Cit9CisKK2lmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFz
VGV4dCgpOworCitkb2N1bWVudC5kZXNpZ25Nb2RlPSdvbic7CisKK3ZhciBlID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ3Rlc3QnKTsKK3ZhciBzID0gd2luZG93LmdldFNlbGVjdGlvbigpOwor
CityID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKworci5zZXRTdGFydChlLmZpcnN0Q2hpbGQs
MCk7CityLnNldEVuZChlLmZpcnN0Q2hpbGQsNSk7CisKK3MuYWRkUmFuZ2Uocik7Citkb2N1bWVu
dC5leGVjQ29tbWFuZCgiaGlsaXRlQ29sb3IiLGZhbHNlLCIjOTlmIik7CisKK3IgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworci5zZXRTdGFydChlLmZpcnN0Q2hpbGQuZmlyc3RDaGlsZCw1KTsK
K3Iuc2V0RW5kKGUuZmlyc3RDaGlsZC5maXJzdENoaWxkLDUpOworcy5yZW1vdmVBbGxSYW5nZXMo
KTsKK3MuYWRkUmFuZ2Uocik7CisKK3ByZXNzS2V5KCdcbicpOworcHJlc3NLZXkoJ2UnKTsKKwor
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKS5hcHBlbmRDaGlsZChkb2N1bWVudC5j
cmVhdGVUZXh0Tm9kZShlLmlubmVySFRNTCkpOworCis8L3NjcmlwdD4KSW5kZXg6IExheW91dFRl
c3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL2luc2VydGluZy9pbnNlcnQtZGl2LTAyMi1leHBlY3Rl
ZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvaW5z
ZXJ0aW5nL2luc2VydC1kaXYtMDIyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNDU4NjQpCisrKyBM
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9pbnNlcnRpbmcvaW5zZXJ0LWRpdi0wMjIt
ZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC03LDcgKzcsNyBAQCBFRElUSU5HIERFTEVH
QVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0CiBFRElUSU5HIERFTEVHQVRFOiBzaG91bGRDaGFu
Z2VTZWxlY3RlZERPTVJhbmdlOnJhbmdlIGZyb20gMyBvZiAjdGV4dCA+IEIgPiBQID4gQk9EWSA+
IEhUTUwgPiAjZG9jdW1lbnQgdG8gMyBvZiAjdGV4dCA+IEIgPiBQID4gQk9EWSA+IEhUTUwgPiAj
ZG9jdW1lbnQgdG9ET01SYW5nZTpyYW5nZSBmcm9tIDAgb2YgUCA+IEJPRFkgPiBIVE1MID4gI2Rv
Y3VtZW50IHRvIDAgb2YgUCA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGFmZmluaXR5Ok5TU2Vs
ZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCiBFRElUSU5HIERF
TEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rp
b25Ob3RpZmljYXRpb24KIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2U6V2ViVmll
d0RpZENoYW5nZU5vdGlmaWNhdGlvbgotRURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2Vs
ZWN0ZWRET01SYW5nZTpyYW5nZSBmcm9tIDEgb2YgI3RleHQgPiBCID4gUCA+IEJPRFkgPiBIVE1M
ID4gI2RvY3VtZW50IHRvIDEgb2YgI3RleHQgPiBCID4gUCA+IEJPRFkgPiBIVE1MID4gI2RvY3Vt
ZW50IHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSAxIG9mICN0ZXh0ID4gQiA+IFAgPiBCT0RZID4gSFRN
TCA+ICNkb2N1bWVudCB0byAxIG9mICN0ZXh0ID4gQiA+IFAgPiBCT0RZID4gSFRNTCA+ICNkb2N1
bWVudCBhZmZpbml0eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVhbSBzdGlsbFNlbGVjdGlu
ZzpGQUxTRQorRURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5nZTpy
YW5nZSBmcm9tIDEgb2YgI3RleHQgPiBCID4gU1BBTiA+IFAgPiBCT0RZID4gSFRNTCA+ICNkb2N1
bWVudCB0byAxIG9mICN0ZXh0ID4gQiA+IFNQQU4gPiBQID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1l
bnQgdG9ET01SYW5nZTpyYW5nZSBmcm9tIDEgb2YgI3RleHQgPiBCID4gU1BBTiA+IFAgPiBCT0RZ
ID4gSFRNTCA+ICNkb2N1bWVudCB0byAxIG9mICN0ZXh0ID4gQiA+IFNQQU4gPiBQID4gQk9EWSA+
IEhUTUwgPiAjZG9jdW1lbnQgYWZmaW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0eURvd25zdHJlYW0g
c3RpbGxTZWxlY3Rpbmc6RkFMU0UKIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VT
ZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgogRURJVElORyBE
RUxFR0FURTogd2ViVmlld0RpZENoYW5nZTpXZWJWaWV3RGlkQ2hhbmdlTm90aWZpY2F0aW9uCiBs
YXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKQEAgLTM1LDEwICszNSwxMSBAQCBsYXllciBhdCAo
MCwwKSBzaXplIDgwMHg2MDAKICAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDE0LDE0
KSBzaXplIDMyeDI4CiAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMTQsMTQpIHdpZHRoIDMyOiAi
Zm9vIgogICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDIyOCkgc2l6ZSA3ODR4ODQgW2JvcmRl
cjogKDJweCBzb2xpZCAjMDAwMEZGKV0KLSAgICAgICAgUmVuZGVySW5saW5lIHtCfSBhdCAoMCww
KSBzaXplIDEyeDI4Ci0gICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgxNCwxNCkgc2l6
ZSAxMngyOAotICAgICAgICAgICAgdGV4dCBydW4gYXQgKDE0LDE0KSB3aWR0aCAxMjogIngiCi0g
ICAgICAgICAgUmVuZGVyQlIge0JSfSBhdCAoMjYsMzYpIHNpemUgMHgwIFtiZ2NvbG9yPSMwMDgw
MDBdCisgICAgICAgIFJlbmRlcklubGluZSB7U1BBTn0gYXQgKDAsMCkgc2l6ZSAxMngyOAorICAg
ICAgICAgIFJlbmRlcklubGluZSB7Qn0gYXQgKDAsMCkgc2l6ZSAxMngyOAorICAgICAgICAgICAg
UmVuZGVyVGV4dCB7I3RleHR9IGF0ICgxNCwxNCkgc2l6ZSAxMngyOAorICAgICAgICAgICAgICB0
ZXh0IHJ1biBhdCAoMTQsMTQpIHdpZHRoIDEyOiAieCIKKyAgICAgICAgICAgIFJlbmRlckJSIHtC
Un0gYXQgKDI2LDM2KSBzaXplIDB4MCBbYmdjb2xvcj0jMDA4MDAwXQogICAgICAgICBSZW5kZXJU
ZXh0IHsjdGV4dH0gYXQgKDE0LDQyKSBzaXplIDMxeDI4CiAgICAgICAgICAgdGV4dCBydW4gYXQg
KDE0LDQyKSB3aWR0aCAzMTogImJhciIKLWNhcmV0OiBwb3NpdGlvbiAxIG9mIGNoaWxkIDAgeyN0
ZXh0fSBvZiBjaGlsZCAwIHtCfSBvZiBjaGlsZCA2IHtQfSBvZiBjaGlsZCAxIHtCT0RZfSBvZiBj
aGlsZCAwIHtIVE1MfSBvZiBkb2N1bWVudAorY2FyZXQ6IHBvc2l0aW9uIDEgb2YgY2hpbGQgMCB7
I3RleHR9IG9mIGNoaWxkIDAge0J9IG9mIGNoaWxkIDAge1NQQU59IG9mIGNoaWxkIDYge1B9IG9m
IGNoaWxkIDEge0JPRFl9IG9mIGNoaWxkIDAge0hUTUx9IG9mIGRvY3VtZW50CkluZGV4OiBMYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9pbnNlcnRpbmcvaW5zZXJ0LWRpdi0wMjMtZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5n
L2luc2VydGluZy9pbnNlcnQtZGl2LTAyMy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDQ1ODY0KQor
KysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvaW5zZXJ0aW5nL2luc2VydC1kaXYt
MDIzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNTMsOCArNTMsOSBAQCBsYXllciBh
dCAoMCwwKSBzaXplIDc4NXg2ODgKICAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDE0
LDE0KSBzaXplIDU2eDI4CiAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMTQsMTQpIHdpZHRoIDU2
OiAibGluZSAyIgogICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDM2MCkgc2l6ZSA3Njl4NTYg
W2JvcmRlcjogKDJweCBzb2xpZCAjMDAwMEZGKV0KLSAgICAgICAgUmVuZGVySW5saW5lIHtCfSBh
dCAoMCwwKSBzaXplIDB4MjgKLSAgICAgICAgICBSZW5kZXJCUiB7QlJ9IGF0ICgxNCwxNCkgc2l6
ZSAweDI4IFtiZ2NvbG9yPSMwMDgwMDBdCisgICAgICAgIFJlbmRlcklubGluZSB7U1BBTn0gYXQg
KDAsMCkgc2l6ZSAweDI4CisgICAgICAgICAgUmVuZGVySW5saW5lIHtCfSBhdCAoMCwwKSBzaXpl
IDB4MjgKKyAgICAgICAgICAgIFJlbmRlckJSIHtCUn0gYXQgKDE0LDE0KSBzaXplIDB4MjggW2Jn
Y29sb3I9IzAwODAwMF0KICAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCw0NDApIHNpemUgNzY5
eDU2IFtib3JkZXI6ICgycHggc29saWQgIzAwMDBGRildCiAgICAgICAgIFJlbmRlcklubGluZSB7
Qn0gYXQgKDAsMCkgc2l6ZSAxMngyOAogICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAo
MTQsMTQpIHNpemUgMTJ4MjgKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5n
L2luc2VydGluZy9pbnNlcnQtZGl2LTAyNC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvaW5zZXJ0aW5nL2luc2VydC1kaXYtMDI0LWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gNDU4NjQpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMv
ZWRpdGluZy9pbnNlcnRpbmcvaW5zZXJ0LWRpdi0wMjQtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNv
cHkpCkBAIC0xNiwxNiArMTYsMTYgQEAgRURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2Vs
ZWN0ZWRETwogRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJW
aWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJW
aWV3RGlkQ2hhbmdlOldlYlZpZXdEaWRDaGFuZ2VOb3RpZmljYXRpb24KIEVESVRJTkcgREVMRUdB
VEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5v
dGlmaWNhdGlvbgotRURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5n
ZToobnVsbCkgdG9ET01SYW5nZTpyYW5nZSBmcm9tIDEgb2YgI3RleHQgPiBQID4gQk9EWSA+IEhU
TUwgPiAjZG9jdW1lbnQgdG8gMSBvZiAjdGV4dCA+IFAgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVu
dCBhZmZpbml0eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpG
QUxTRQorRURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5nZToobnVs
bCkgdG9ET01SYW5nZTpyYW5nZSBmcm9tIDEgb2YgI3RleHQgPiBTUEFOID4gUCA+IEJPRFkgPiBI
VE1MID4gI2RvY3VtZW50IHRvIDEgb2YgI3RleHQgPiBTUEFOID4gUCA+IEJPRFkgPiBIVE1MID4g
I2RvY3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2Vs
ZWN0aW5nOkZBTFNFCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9u
OldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KIEVESVRJTkcgREVMRUdBVEU6
IHdlYlZpZXdEaWRDaGFuZ2U6V2ViVmlld0RpZENoYW5nZU5vdGlmaWNhdGlvbgotRURJVElORyBE
RUxFR0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5nZTpyYW5nZSBmcm9tIDEgb2YgI3Rl
eHQgPiBQID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMSBvZiAjdGV4dCA+IFAgPiBCT0RZ
ID4gSFRNTCA+ICNkb2N1bWVudCB0b0RPTVJhbmdlOnJhbmdlIGZyb20gMiBvZiAjdGV4dCA+IFAg
PiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAyIG9mICN0ZXh0ID4gUCA+IEJPRFkgPiBIVE1M
ID4gI2RvY3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxs
U2VsZWN0aW5nOkZBTFNFCitFRElUSU5HIERFTEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxlY3RlZERP
TVJhbmdlOnJhbmdlIGZyb20gMSBvZiAjdGV4dCA+IFNQQU4gPiBQID4gQk9EWSA+IEhUTUwgPiAj
ZG9jdW1lbnQgdG8gMSBvZiAjdGV4dCA+IFNQQU4gPiBQID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1l
bnQgdG9ET01SYW5nZTpyYW5nZSBmcm9tIDIgb2YgI3RleHQgPiBTUEFOID4gUCA+IEJPRFkgPiBI
VE1MID4gI2RvY3VtZW50IHRvIDIgb2YgI3RleHQgPiBTUEFOID4gUCA+IEJPRFkgPiBIVE1MID4g
I2RvY3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2Vs
ZWN0aW5nOkZBTFNFCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9u
OldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KIEVESVRJTkcgREVMRUdBVEU6
IHdlYlZpZXdEaWRDaGFuZ2U6V2ViVmlld0RpZENoYW5nZU5vdGlmaWNhdGlvbgotRURJVElORyBE
RUxFR0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5nZTpyYW5nZSBmcm9tIDIgb2YgI3Rl
eHQgPiBQID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMiBvZiAjdGV4dCA+IFAgPiBCT0RZ
ID4gSFRNTCA+ICNkb2N1bWVudCB0b0RPTVJhbmdlOnJhbmdlIGZyb20gMyBvZiAjdGV4dCA+IFAg
PiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAzIG9mICN0ZXh0ID4gUCA+IEJPRFkgPiBIVE1M
ID4gI2RvY3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxs
U2VsZWN0aW5nOkZBTFNFCitFRElUSU5HIERFTEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxlY3RlZERP
TVJhbmdlOnJhbmdlIGZyb20gMiBvZiAjdGV4dCA+IFNQQU4gPiBQID4gQk9EWSA+IEhUTUwgPiAj
ZG9jdW1lbnQgdG8gMiBvZiAjdGV4dCA+IFNQQU4gPiBQID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1l
bnQgdG9ET01SYW5nZTpyYW5nZSBmcm9tIDMgb2YgI3RleHQgPiBTUEFOID4gUCA+IEJPRFkgPiBI
VE1MID4gI2RvY3VtZW50IHRvIDMgb2YgI3RleHQgPiBTUEFOID4gUCA+IEJPRFkgPiBIVE1MID4g
I2RvY3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2Vs
ZWN0aW5nOkZBTFNFCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9u
OldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KIEVESVRJTkcgREVMRUdBVEU6
IHdlYlZpZXdEaWRDaGFuZ2U6V2ViVmlld0RpZENoYW5nZU5vdGlmaWNhdGlvbgotRURJVElORyBE
RUxFR0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5nZTpyYW5nZSBmcm9tIDMgb2YgI3Rl
eHQgPiBQID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMyBvZiAjdGV4dCA+IFAgPiBCT0RZ
ID4gSFRNTCA+ICNkb2N1bWVudCB0b0RPTVJhbmdlOnJhbmdlIGZyb20gMCBvZiBQID4gQk9EWSA+
IEhUTUwgPiAjZG9jdW1lbnQgdG8gMCBvZiBQID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgYWZm
aW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0eURvd25zdHJlYW0gc3RpbGxTZWxlY3Rpbmc6RkFMU0UK
K0VESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6cmFuZ2UgZnJv
bSAzIG9mICN0ZXh0ID4gU1BBTiA+IFAgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAzIG9m
ICN0ZXh0ID4gU1BBTiA+IFAgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0b0RPTVJhbmdlOnJh
bmdlIGZyb20gMCBvZiBQID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMCBvZiBQID4gQk9E
WSA+IEhUTUwgPiAjZG9jdW1lbnQgYWZmaW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0eURvd25zdHJl
YW0gc3RpbGxTZWxlY3Rpbmc6RkFMU0UKIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFu
Z2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgogRURJVElO
RyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZTpXZWJWaWV3RGlkQ2hhbmdlTm90aWZpY2F0aW9u
CiBFRElUSU5HIERFTEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOnJhbmdlIGZy
b20gMCBvZiBQID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMCBvZiBQID4gQk9EWSA+IEhU
TUwgPiAjZG9jdW1lbnQgdG9ET01SYW5nZTpyYW5nZSBmcm9tIDAgb2YgUCA+IEJPRFkgPiBIVE1M
ID4gI2RvY3VtZW50IHRvIDAgb2YgUCA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGFmZmluaXR5
Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCkBAIC02
NSwxMCArNjUsMTIgQEAgbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCiAgICAgICAgICAgUmVu
ZGVyVGV4dCB7I3RleHR9IGF0ICgxNCwxNCkgc2l6ZSA1NngyOAogICAgICAgICAgICAgdGV4dCBy
dW4gYXQgKDE0LDE0KSB3aWR0aCA1NjogImxpbmUgMSIKICAgICAgIFJlbmRlckJsb2NrIHtQfSBh
dCAoMCwyMjgpIHNpemUgNzg0eDU2IFtib3JkZXI6ICgycHggc29saWQgIzAwMDBGRildCi0gICAg
ICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMTQsMTQpIHNpemUgMzZ4MjgKLSAgICAgICAgICB0
ZXh0IHJ1biBhdCAoMTQsMTQpIHdpZHRoIDM2OiAieHh4IgorICAgICAgICBSZW5kZXJJbmxpbmUg
e1NQQU59IGF0ICgwLDApIHNpemUgMzZ4MjgKKyAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0g
YXQgKDE0LDE0KSBzaXplIDM2eDI4CisgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMTQsMTQpIHdp
ZHRoIDM2OiAieHh4IgogICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDMwOCkgc2l6ZSA3ODR4
NTYgW2JvcmRlcjogKDJweCBzb2xpZCAjMDAwMEZGKV0KLSAgICAgICAgUmVuZGVyQlIge0JSfSBh
dCAoMTQsMTQpIHNpemUgMHgyOCBbYmdjb2xvcj0jMDA4MDAwXQorICAgICAgICBSZW5kZXJJbmxp
bmUge1NQQU59IGF0ICgwLDApIHNpemUgMHgyOAorICAgICAgICAgIFJlbmRlckJSIHtCUn0gYXQg
KDE0LDE0KSBzaXplIDB4MjggW2JnY29sb3I9IzAwODAwMF0KICAgICAgIFJlbmRlckJsb2NrIHtQ
fSBhdCAoMCwzODgpIHNpemUgNzg0eDU2IFtib3JkZXI6ICgycHggc29saWQgIzAwMDBGRildCiAg
ICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMTQsMTQpIHNpemUgMzZ4MjgKICAgICAgICAg
ICB0ZXh0IHJ1biBhdCAoMTQsMTQpIHdpZHRoIDM2OiAieHh4IgpJbmRleDogTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjL2VkaXRpbmcvcGFzdGVib2FyZC9zZWxlY3QtZWxlbWVudC0xLWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9wYXN0
ZWJvYXJkL3NlbGVjdC1lbGVtZW50LTEtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA0NTg2NCkKKysr
IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3Bhc3RlYm9hcmQvc2VsZWN0LWVsZW1l
bnQtMS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDcgQEAgbGF5ZXIg
YXQgKDAsMCkgc2l6ZSA4MDB4NjAwCiAgICAgICAgICAgdGV4dCBydW4gYXQgKDI1MywwKSB3aWR0
aCAyMjA6ICJBbGwgdGhlIG9wdGlvbnMgc2hvdWxkIGJlIGluY2x1ZGVkLiIKICAgICAgIFJlbmRl
ckJsb2NrIHtESVZ9IGF0ICgwLDM0KSBzaXplIDc4NHgxMwogICAgICAgICBSZW5kZXJJbmxpbmUg
e0ZPTlR9IGF0ICgwLDApIHNpemUgMHgxMwotICAgICAgICAgIFJlbmRlcklubGluZSB7U1BBTn0g
YXQgKDAsMCkgc2l6ZSAweDEzCisgICAgICAgICAgUmVuZGVySW5saW5lIHtTUEFOfSBhdCAoMCww
KSBzaXplIDB4MTMgW2JnY29sb3I9I0ZGRkZGRl0KICAgICAgICAgICAgIFJlbmRlckJSIHtCUn0g
YXQgKDAsMCkgc2l6ZSAweDEzCiAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCw0Nykgc2l6
ZSA3ODR4MjIKICAgICAgICAgUmVuZGVyTWVudUxpc3Qge1NFTEVDVH0gYXQgKDIsMikgc2l6ZSA2
MngxOCBbYmdjb2xvcj0jRkZGRkZGXQpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Vk
aXRpbmcvc2VsZWN0aW9uL2NvbnRhaW5zLWJvdW5kYXJpZXMtZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3NlbGVjdGlvbi9jb250YWlu
cy1ib3VuZGFyaWVzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNDU4NjQpCisrKyBMYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9zZWxlY3Rpb24vY29udGFpbnMtYm91bmRhcmllcy1leHBl
Y3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTIzLDcgKzIzLDggQEAgbGF5ZXIgYXQgKDAsMCkg
c2l6ZSA4MDB4NjAwCiAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDY4
eDgzCiAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggNjg6ICJXIgogICAgICAgUmVu
ZGVyQmxvY2sge0RJVn0gYXQgKDAsMTY5KSBzaXplIDc4NHg4MyBbYmdjb2xvcj0jRkZGRkNDXQot
ICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA2OHg4MwotICAgICAgICAg
IHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDY4OiAiVyIKLXNlbGVjdGlvbiBzdGFydDogcG9zaXRp
b24gMCBvZiBjaGlsZCAwIHsjdGV4dH0gb2YgY2hpbGQgNiB7RElWfSBvZiBjaGlsZCAxIHtCT0RZ
fSBvZiBjaGlsZCAwIHtIVE1MfSBvZiBkb2N1bWVudAotc2VsZWN0aW9uIGVuZDogICBwb3NpdGlv
biAxIG9mIGNoaWxkIDAgeyN0ZXh0fSBvZiBjaGlsZCA2IHtESVZ9IG9mIGNoaWxkIDEge0JPRFl9
IG9mIGNoaWxkIDAge0hUTUx9IG9mIGRvY3VtZW50CisgICAgICAgIFJlbmRlcklubGluZSB7U1BB
Tn0gYXQgKDAsMCkgc2l6ZSA2OHg4MworICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAo
MCwwKSBzaXplIDY4eDgzCisgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA2ODog
IlciCitzZWxlY3Rpb24gc3RhcnQ6IHBvc2l0aW9uIDAgb2YgY2hpbGQgMCB7I3RleHR9IG9mIGNo
aWxkIDAge1NQQU59IG9mIGNoaWxkIDYge0RJVn0gb2YgY2hpbGQgMSB7Qk9EWX0gb2YgY2hpbGQg
MCB7SFRNTH0gb2YgZG9jdW1lbnQKK3NlbGVjdGlvbiBlbmQ6ICAgcG9zaXRpb24gMSBvZiBjaGls
ZCAwIHsjdGV4dH0gb2YgY2hpbGQgMCB7U1BBTn0gb2YgY2hpbGQgNiB7RElWfSBvZiBjaGlsZCAx
IHtCT0RZfSBvZiBjaGlsZCAwIHtIVE1MfSBvZiBkb2N1bWVudAo=
</data>
<flag name="review"
          id="17181"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34034</attachid>
            <date>2009-08-03 19:23:15 -0700</date>
            <delta_ts>2009-08-06 13:23:36 -0700</delta_ts>
            <desc>fixes the bug and adds new functions to replace copyInheritableProperties</desc>
            <filename>fix20348c</filename>
            <type>text/plain</type>
            <size>27163</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0Njc0MikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDQgQEAKKzIwMDktMDgtMDMgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQmFj
a2dyb3VuZCBjb2xvciBmb3JtYXR0aW5nIGxvc3Qgb24gZW50ZXIKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMzQ4CisKKyAgICAgICAgVGhpcyBwYXRj
aCByZXBsYWNlIGFsbCBpbnN0YW5jZXMgb2YgZGVwcmVjYXRlZENvcHlJbmhlcml0YWJsZVByb3Bl
cnRpZXMgYnkgZWRpdGluZ1N0eWxlQXRQb3NpdGlvbgorICAgICAgICBvciBwcmVwYXJlRWRpdGlu
Z1N0eWxlVG9BcHBseUF0LCBhbmQgYWRkcyBDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciBhcyBh
IHByb3BlcnR5IHRvIGJlIGNvcGllZCBhcyBlZGl0aW5nIHN0eWxlLgorICAgICAgICBUaGUgY29u
Y2VwdCBvZiBlZGl0aW5nIHN0eWxlIGlzIGludHJvZHVjZWQgaW4gdGhpcyBwYXRjaCwgd2hpY2gg
Y29uc2lzdHMgb2YgYWxsIENTUyBwcm9wZXJ0aWVzIHRoYXQKKyAgICAgICAgbXVzdCBiZSBwcmVz
ZXJ2ZWQgdW5kZXIgZWRpdGluZyBvcGVyYXRpb25zLgorCisgICAgICAgICogZWRpdGluZy9BcHBs
eVN0eWxlQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjopOgorICAgICAgICAoV2ViQ29y
ZTo6ZWRpdGluZ1N0eWxlQXRQb3NpdGlvbik6IE9idGFpbnMgdGhlIGVkaXRpbmctc3BlY2lmaWMg
Y29tcHV0ZWQgc3R5bGUgYXQgdGhlIHBvc2l0aW9uCisgICAgICAgIChXZWJDb3JlOjpwcmVwYXJl
RWRpdGluZ1N0eWxlVG9BcHBseUF0KTogUmVtb3ZlcyByZWR1bmRhbnQgZWRpdGluZyBzdHlsZXMg
YXQgdGhlIHNwZWNpZmllZCBwb3NpdGlvbgorICAgICAgICAoV2ViQ29yZTo6cmVtb3ZlU3R5bGVP
Zk5vZGUpOiBSZW1vdmVzIHRoZSBzdHlsZSBkZXJpdmVkIGZyb20gdGhlIHNwZWNpZmllZCBub2Rl
CisgICAgICAgICogZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5oOgorICAgICAgICAqIGVkaXRp
bmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRl
RWRpdENvbW1hbmQ6Om1vdmVQYXJhZ3JhcGhzKTogVXNlcyBlZGl0aW5nU3R5bGVBdFBvc2l0aW9u
CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVFZGl0Q29tbWFuZDo6YnJlYWtPdXRPZkVtcHR5
TGlzdEl0ZW0pOiBVc2VzIGVkaXRpbmdTdHlsZUF0UG9zaXRpb24KKyAgICAgICAgKiBlZGl0aW5n
L0RlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVtb3ZlRW5j
bG9zaW5nQW5jaG9yU3R5bGUpOiBVc2VzIHJlbW92ZVN0eWxlT2ZOb2RlCisgICAgICAgIChXZWJD
b3JlOjpEZWxldGVTZWxlY3Rpb25Db21tYW5kOjpzYXZlVHlwaW5nU3R5bGVTdGF0ZSk6IFVzZXMg
ZWRpdGluZ1N0eWxlQXRQb3NpdGlvbgorICAgICAgICAoV2ViQ29yZTo6RGVsZXRlU2VsZWN0aW9u
Q29tbWFuZDo6Y2FsY3VsYXRlVHlwaW5nU3R5bGVBZnRlckRlbGV0ZSk6IFVzZXMgcHJlcGFyZUVk
aXRpbmdTdHlsZVRvQXBwbHlBdAorICAgICAgICAqIGVkaXRpbmcvRWRpdENvbW1hbmQuY3BwOiBS
ZW1vdmVkIHN0eWxlQXRQb3NpdGlvbgorICAgICAgICAqIGVkaXRpbmcvRWRpdENvbW1hbmQuaDog
ZGl0dG8KKyAgICAgICAgKiBlZGl0aW5nL0luc2VydFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZDo6
Y2FsY3VsYXRlU3R5bGVCZWZvcmVJbnNlcnRpb24pOiBVc2VzIGVkaXRpbmdTdHlsZUF0UG9zaXRp
b24KKyAgICAgICAgKFdlYkNvcmU6Okluc2VydFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQ6OmFw
cGx5U3R5bGVBZnRlckluc2VydGlvbik6IFVzZXMgcHJlcGFyZUVkaXRpbmdTdHlsZVRvQXBwbHlB
dAorICAgICAgICAqIGVkaXRpbmcvUmVtb3ZlRm9ybWF0Q29tbWFuZC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW1vdmVGb3JtYXRDb21tYW5kOjpkb0FwcGx5KTogVXNlcyBlZGl0aW5nU3R5bGVB
dFBvc2l0aW9uCisgICAgICAgICogZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpoYW5kbGVTdHlsZVNwYW5zQmVmb3JlSW5zZXJ0aW9uKTogVXNl
cyBlZGl0aW5nU3R5bGVBdFBvc2l0aW9uCisgICAgICAgIChXZWJDb3JlOjpSZXBsYWNlU2VsZWN0
aW9uQ29tbWFuZDo6aGFuZGxlU3R5bGVTcGFucyk6IFVzZXMgZWRpdGluZ1N0eWxlQXRQb3NpdGlv
biBhbmQgcHJlcGFyZUVkaXRpbmdTdHlsZVRvQXBwbHlBdAorICAgICAgICAoV2ViQ29yZTo6UmVw
bGFjZVNlbGVjdGlvbkNvbW1hbmQ6OmRvQXBwbHkpOiBVc2VzIHByZXBhcmVFZGl0aW5nU3R5bGVU
b0FwcGx5QXQKKyAgICAgICAgKiBlZGl0aW5nL21hcmt1cC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpyZW1vdmVFbmNsb3NpbmdNYWlsQmxvY2txdW90ZVN0eWxlKTogVXNlcyByZW1vdmVTdHlsZU9m
Tm9kZQorICAgICAgICAoV2ViQ29yZTo6cmVtb3ZlRGVmYXVsdFN0eWxlcyk6IFVzZXMgcHJlcGFy
ZUVkaXRpbmdTdHlsZVRvQXBwbHlBdAorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlTWFya3VwKTog
VXNlcyBlZGl0aW5nU3R5bGVBdFBvc2l0aW9uCisKIDIwMDktMDgtMDMgIEplcmVteSBPcmxvdyAg
PGpvcmxvd0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gRmlzaGVy
LgpJbmRleDogV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCShyZXZpc2lvbiA0NjY4
MCkKKysrIFdlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTMwMyw2ICszMDMsOTMgQEAgUGFzc1JlZlB0cjxIVE1MRWxlbWVudD4gY3JlYXRlU3R5
bGVTcGFuRQogICAgIHJldHVybiBzdHlsZUVsZW1lbnQucmVsZWFzZSgpOwogfQogCitzdGF0aWMg
Y29uc3QgaW50IGVkaXRpbmdTdHlsZVByb3BlcnRpZXNbXSA9IHsKK0NTU1Byb3BlcnR5QmFja2dy
b3VuZENvbG9yLAorCitDU1NQcm9wZXJ0eUJvcmRlckNvbGxhcHNlLAorQ1NTUHJvcGVydHlDb2xv
ciwKK0NTU1Byb3BlcnR5Rm9udEZhbWlseSwKK0NTU1Byb3BlcnR5Rm9udFNpemUsCitDU1NQcm9w
ZXJ0eUZvbnRTdHlsZSwKK0NTU1Byb3BlcnR5Rm9udFZhcmlhbnQsCitDU1NQcm9wZXJ0eUZvbnRX
ZWlnaHQsCitDU1NQcm9wZXJ0eUxldHRlclNwYWNpbmcsCitDU1NQcm9wZXJ0eUxpbmVIZWlnaHQs
CitDU1NQcm9wZXJ0eU9ycGhhbnMsCitDU1NQcm9wZXJ0eVRleHRBbGlnbiwKK0NTU1Byb3BlcnR5
VGV4dEluZGVudCwKK0NTU1Byb3BlcnR5VGV4dFRyYW5zZm9ybSwKK0NTU1Byb3BlcnR5V2hpdGVT
cGFjZSwKK0NTU1Byb3BlcnR5V2lkb3dzLAorQ1NTUHJvcGVydHlXb3JkU3BhY2luZywKK0NTU1By
b3BlcnR5V2Via2l0Qm9yZGVySG9yaXpvbnRhbFNwYWNpbmcsCitDU1NQcm9wZXJ0eVdlYmtpdEJv
cmRlclZlcnRpY2FsU3BhY2luZywKK0NTU1Byb3BlcnR5V2Via2l0VGV4dERlY29yYXRpb25zSW5F
ZmZlY3QsCitDU1NQcm9wZXJ0eVdlYmtpdFRleHRGaWxsQ29sb3IsCitDU1NQcm9wZXJ0eVdlYmtp
dFRleHRTaXplQWRqdXN0LAorQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlQ29sb3IsCitDU1NQ
cm9wZXJ0eVdlYmtpdFRleHRTdHJva2VXaWR0aCwKK307CitzaXplX3QgbnVtRWRpdGluZ1N0eWxl
UHJvcGVydGllcyA9IHNpemVvZihlZGl0aW5nU3R5bGVQcm9wZXJ0aWVzKS9zaXplb2YoZWRpdGlu
Z1N0eWxlUHJvcGVydGllc1swXSk7CisKK1Bhc3NSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFy
YXRpb24+IGVkaXRpbmdTdHlsZUF0UG9zaXRpb24oUG9zaXRpb24gcG9zLCBib29sIGluY2x1ZGVU
eXBpbmdTdHlsZSkKK3sKKyAgICBSZWZQdHI8Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uPiBj
b21wdXRlZFN0eWxlQXRQb3NpdGlvbiA9IHBvcy5jb21wdXRlZFN0eWxlKCk7CisgICAgUmVmUHRy
PENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBzdHlsZSA9IGNvbXB1dGVkU3R5bGVBdFBvc2l0
aW9uLT5jb3B5UHJvcGVydGllc0luU2V0KGVkaXRpbmdTdHlsZVByb3BlcnRpZXMsIG51bUVkaXRp
bmdTdHlsZVByb3BlcnRpZXMpOworCisgICAgaWYgKHN0eWxlICYmIHBvcy5ub2RlKCkgJiYgcG9z
Lm5vZGUoKS0+Y29tcHV0ZWRTdHlsZSgpKSB7CisgICAgICAgIFJlbmRlclN0eWxlKiByZW5kZXJT
dHlsZSA9IHBvcy5ub2RlKCktPmNvbXB1dGVkU3R5bGUoKTsKKyAgICAgICAgLy8gSWYgYSBub2Rl
J3MgdGV4dCBmaWxsIGNvbG9yIGlzIGludmFsaWQsIHRoZW4gaXRzIGNoaWxkcmVuIHVzZSAKKyAg
ICAgICAgLy8gdGhlaXIgZm9udC1jb2xvciBhcyB0aGVpciB0ZXh0IGZpbGwgY29sb3IgKHRoZXkg
ZG9uJ3QKKyAgICAgICAgLy8gaW5oZXJpdCBpdCkuICBMaWtld2lzZSBmb3Igc3Ryb2tlIGNvbG9y
LgorICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICAgICAgaWYgKCFyZW5kZXJTdHls
ZS0+dGV4dEZpbGxDb2xvcigpLmlzVmFsaWQoKSkKKyAgICAgICAgICAgIHN0eWxlLT5yZW1vdmVQ
cm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdFRleHRGaWxsQ29sb3IsIGVjKTsKKyAgICAgICAgaWYg
KCFyZW5kZXJTdHlsZS0+dGV4dFN0cm9rZUNvbG9yKCkuaXNWYWxpZCgpKQorICAgICAgICAgICAg
c3R5bGUtPnJlbW92ZVByb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZUNvbG9yLCBl
Yyk7CisgICAgICAgIEFTU0VSVChlYyA9PSAwKTsKKyAgICAgICAgaWYgKHJlbmRlclN0eWxlLT5m
b250RGVzY3JpcHRpb24oKS5rZXl3b3JkU2l6ZSgpKQorICAgICAgICAgICAgc3R5bGUtPnNldFBy
b3BlcnR5KENTU1Byb3BlcnR5Rm9udFNpemUsIGNvbXB1dGVkU3R5bGVBdFBvc2l0aW9uLT5nZXRG
b250U2l6ZUNTU1ZhbHVlUHJlZmVycmluZ0tleXdvcmQoKS0+Y3NzVGV4dCgpKTsKKyAgICB9CisK
KyAgICBpZiAoaW5jbHVkZVR5cGluZ1N0eWxlKSB7CisgICAgICAgIENTU011dGFibGVTdHlsZURl
Y2xhcmF0aW9uKiB0eXBpbmdTdHlsZSA9IHBvcy5ub2RlKCktPmRvY3VtZW50KCktPmZyYW1lKCkt
PnR5cGluZ1N0eWxlKCk7CisgICAgICAgIGlmICh0eXBpbmdTdHlsZSkKKyAgICAgICAgICAgIHN0
eWxlLT5tZXJnZSh0eXBpbmdTdHlsZSk7CisgICAgfQorCisgICAgcmV0dXJuIHN0eWxlLnJlbGVh
c2UoKTsKK30KKwordm9pZCBwcmVwYXJlRWRpdGluZ1N0eWxlVG9BcHBseUF0KENTU011dGFibGVT
dHlsZURlY2xhcmF0aW9uKiBlZGl0aW5nU3R5bGUsIFBvc2l0aW9uIHBvcykKK3sKKyAgICAvLyBS
ZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6aGFuZGxlU3R5bGVTcGFucygpIHJlcXVpZXJzIHRoYXQg
dGhpcyBmdW5jdGlvbiBvbmx5IHJlbW92ZXMgdGhlIGVkaXRpbmcgc3R5bGUuCisgICAgLy8gSWYg
dGhpcyBmdW5jdGlvbiB3YXMgbW9kaWZpZWQgaW4gdGhlIGZ1dHVyZXRvIGRlbGV0ZSBhbGwgcmVk
dW5kYW50IHByb3BlcnRpZXMsIHRoZW4gYWRkIGEgYm9vbGVhbiB2YWx1ZSB0byBpbmRpY2F0ZQor
ICAgIC8vIHdoaWNoIG9uZSBvZiBlZGl0aW5nU3R5bGVBdFBvc2l0aW9uIG9yIGNvbXB1dGVkU3R5
bGUgaXMgY2FsbGVkLgorICAgIFJlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gc3R5
bGUgPSBlZGl0aW5nU3R5bGVBdFBvc2l0aW9uKHBvcywgZmFsc2UpOworICAgIHN0eWxlLT5kaWZm
KGVkaXRpbmdTdHlsZSk7CisKKyAgICAvLyBpZiBhbHBoYSB2YWx1ZSBpcyB6ZXJvLCB3ZSBkb24n
dCBhZGQgdGhlIGJhY2tncm91bmQgY29sb3IuCisgICAgUmVmUHRyPENTU1ZhbHVlPiBiYWNrZ3Jv
dW5kQ29sb3IgPSBlZGl0aW5nU3R5bGUtPmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydHlC
YWNrZ3JvdW5kQ29sb3IpOworICAgIGlmIChiYWNrZ3JvdW5kQ29sb3IgJiYgYmFja2dyb3VuZENv
bG9yLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHBy
aW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihiYWNrZ3JvdW5k
Q29sb3IuZ2V0KCkpOworICAgICAgICBDb2xvciBjb2xvciA9IENvbG9yKHByaW1pdGl2ZVZhbHVl
LT5nZXRSR0JBMzJWYWx1ZSgpKTsKKyAgICAgICAgRXhjZXB0aW9uQ29kZSBlYzsKKyAgICAgICAg
aWYgKGNvbG9yLmFscGhhKCkgPT0gMCkKKyAgICAgICAgICAgIGVkaXRpbmdTdHlsZS0+cmVtb3Zl
UHJvcGVydHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IsIGVjKTsKKyAgICB9Cit9CisKK3Zv
aWQgcmVtb3ZlU3R5bGVPZk5vZGUoQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qIGVkaXRpbmdT
dHlsZSwgTm9kZSogbm9kZSkKK3sKKyAgICBBU1NFUlQobm9kZSk7CisgICAgQVNTRVJUKG5vZGUt
PnBhcmVudE5vZGUoKSk7CisgICAgUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBw
YXJlbnRTdHlsZSA9IGVkaXRpbmdTdHlsZUF0UG9zaXRpb24oUG9zaXRpb24obm9kZS0+cGFyZW50
Tm9kZSgpLCAwKSwgZmFsc2UpOworICAgIFJlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlv
bj4gc3R5bGUgPSBlZGl0aW5nU3R5bGVBdFBvc2l0aW9uKFBvc2l0aW9uKG5vZGUsIDApLCBmYWxz
ZSk7CisgICAgcGFyZW50U3R5bGUtPmRpZmYoc3R5bGUuZ2V0KCkpOworICAgIHN0eWxlLT5kaWZm
KGVkaXRpbmdTdHlsZSk7Cit9CisKIEFwcGx5U3R5bGVDb21tYW5kOjpBcHBseVN0eWxlQ29tbWFu
ZChEb2N1bWVudCogZG9jdW1lbnQsIENTU1N0eWxlRGVjbGFyYXRpb24qIHN0eWxlLCBFZGl0QWN0
aW9uIGVkaXRpbmdBY3Rpb24sIEVQcm9wZXJ0eUxldmVsIHByb3BlcnR5TGV2ZWwpCiAgICAgOiBD
b21wb3NpdGVFZGl0Q29tbWFuZChkb2N1bWVudCkKICAgICAsIG1fc3R5bGUoc3R5bGUtPm1ha2VN
dXRhYmxlKCkpCkluZGV4OiBXZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuaAkocmV2aXNpb24g
NDY2ODApCisrKyBXZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuaAkod29ya2luZyBj
b3B5KQpAQCAtMTE0LDYgKzExNCw5IEBAIHByaXZhdGU6CiAKIGJvb2wgaXNTdHlsZVNwYW4oY29u
c3QgTm9kZSopOwogUGFzc1JlZlB0cjxIVE1MRWxlbWVudD4gY3JlYXRlU3R5bGVTcGFuRWxlbWVu
dChEb2N1bWVudCopOworUGFzc1JlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gZWRp
dGluZ1N0eWxlQXRQb3NpdGlvbihQb3NpdGlvbiwgYm9vbCBpbmNsdWRlVHlwaW5nU3R5bGUpOwor
dm9pZCBwcmVwYXJlRWRpdGluZ1N0eWxlVG9BcHBseUF0KENTU011dGFibGVTdHlsZURlY2xhcmF0
aW9uKiwgUG9zaXRpb24pOwordm9pZCByZW1vdmVTdHlsZU9mTm9kZShDU1NNdXRhYmxlU3R5bGVE
ZWNsYXJhdGlvbiosIE5vZGUqKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCkluZGV4OiBX
ZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAJKHJldmlzaW9uIDQ2NjgwKQor
KysgV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtODAyLDcgKzgwMiw3IEBAIHZvaWQgQ29tcG9zaXRlRWRpdENvbW1hbmQ6Om1vdmVQYXJh
Z3JhcGgKICAgICAvLyB0b28sIDxkaXY+PGI+PGJyPjwvYj48L2Rpdj4gZm9yIGV4YW1wbGUuICBT
YXZlIGl0IHNvIHRoYXQgd2UgY2FuIHByZXNlcnZlIGl0IGxhdGVyLgogICAgIFJlZlB0cjxDU1NN
dXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gc3R5bGVJbkVtcHR5UGFyYWdyYXBoOwogICAgIGlmIChz
dGFydE9mUGFyYWdyYXBoVG9Nb3ZlID09IGVuZE9mUGFyYWdyYXBoVG9Nb3ZlICYmIHByZXNlcnZl
U3R5bGUpIHsKLSAgICAgICAgc3R5bGVJbkVtcHR5UGFyYWdyYXBoID0gc3R5bGVBdFBvc2l0aW9u
KHN0YXJ0T2ZQYXJhZ3JhcGhUb01vdmUuZGVlcEVxdWl2YWxlbnQoKSk7CisgICAgICAgIHN0eWxl
SW5FbXB0eVBhcmFncmFwaCA9IGVkaXRpbmdTdHlsZUF0UG9zaXRpb24oc3RhcnRPZlBhcmFncmFw
aFRvTW92ZS5kZWVwRXF1aXZhbGVudCgpLCB0cnVlKTsKICAgICAgICAgLy8gVGhlIG1vdmVkIHBh
cmFncmFwaCBzaG91bGQgYXNzdW1lIHRoZSBibG9jayBzdHlsZSBvZiB0aGUgZGVzdGluYXRpb24u
CiAgICAgICAgIHN0eWxlSW5FbXB0eVBhcmFncmFwaC0+cmVtb3ZlQmxvY2tQcm9wZXJ0aWVzKCk7
CiAgICAgfQpAQCAtODkxLDcgKzg5MSw3IEBAIGJvb2wgQ29tcG9zaXRlRWRpdENvbW1hbmQ6OmJy
ZWFrT3V0T2ZFbXAKICAgICBpZiAoIWVtcHR5TGlzdEl0ZW0pCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgCi0gICAgUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBzdHls
ZSA9IHN0eWxlQXRQb3NpdGlvbihlbmRpbmdTZWxlY3Rpb24oKS5zdGFydCgpKTsKKyAgICBSZWZQ
dHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IHN0eWxlID0gZWRpdGluZ1N0eWxlQXRQb3Np
dGlvbihlbmRpbmdTZWxlY3Rpb24oKS5zdGFydCgpLCB0cnVlKTsKIAogICAgIE5vZGUqIGxpc3RO
b2RlID0gZW1wdHlMaXN0SXRlbS0+cGFyZW50Tm9kZSgpOwogICAgIApJbmRleDogV2ViQ29yZS9l
ZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
ZWRpdGluZy9EZWxldGVTZWxlY3Rpb25Db21tYW5kLmNwcAkocmV2aXNpb24gNDY2ODApCisrKyBX
ZWJDb3JlL2VkaXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQ0LDYgKzQ0LDcgQEAKICNpbmNsdWRlICJUZXh0LmgiCiAjaW5jbHVkZSAiVGV4dEl0ZXJh
dG9yLmgiCiAjaW5jbHVkZSAidmlzaWJsZV91bml0cy5oIgorI2luY2x1ZGUgIkFwcGx5U3R5bGVD
b21tYW5kLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMjU5LDExICsyNjAsOCBAQCBz
dGF0aWMgdm9pZCByZW1vdmVFbmNsb3NpbmdBbmNob3JTdHlsZShDCiAgICAgTm9kZSogZW5jbG9z
aW5nQW5jaG9yID0gZW5jbG9zaW5nQW5jaG9yRWxlbWVudChwb3NpdGlvbik7CiAgICAgaWYgKCFl
bmNsb3NpbmdBbmNob3IgfHwgIWVuY2xvc2luZ0FuY2hvci0+cGFyZW50Tm9kZSgpKQogICAgICAg
ICByZXR1cm47Ci0gICAgICAgICAgICAKLSAgICBSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFy
YXRpb24+IHBhcmVudFN0eWxlID0gUG9zaXRpb24oZW5jbG9zaW5nQW5jaG9yLT5wYXJlbnROb2Rl
KCksIDApLmNvbXB1dGVkU3R5bGUoKS0+ZGVwcmVjYXRlZENvcHlJbmhlcml0YWJsZVByb3BlcnRp
ZXMoKTsKLSAgICBSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IGFuY2hvclN0eWxl
ID0gUG9zaXRpb24oZW5jbG9zaW5nQW5jaG9yLCAwKS5jb21wdXRlZFN0eWxlKCktPmRlcHJlY2F0
ZWRDb3B5SW5oZXJpdGFibGVQcm9wZXJ0aWVzKCk7Ci0gICAgcGFyZW50U3R5bGUtPmRpZmYoYW5j
aG9yU3R5bGUuZ2V0KCkpOwotICAgIGFuY2hvclN0eWxlLT5kaWZmKHN0eWxlKTsKKyAgICAKKyAg
ICByZW1vdmVTdHlsZU9mTm9kZShzdHlsZSwgZW5jbG9zaW5nQW5jaG9yKTsKIH0KIAogdm9pZCBE
ZWxldGVTZWxlY3Rpb25Db21tYW5kOjpzYXZlVHlwaW5nU3R5bGVTdGF0ZSgpCkBAIC0yNzcsMTkg
KzI3NSwxNyBAQCB2b2lkIERlbGV0ZVNlbGVjdGlvbkNvbW1hbmQ6OnNhdmVUeXBpbmdTCiAgICAg
Ly8gZWFybHkgcmV0dXJuIGluIGNhbGN1bGF0ZVR5cGluZ1N0eWxlQWZ0ZXJEZWxldGUpLgogICAg
IGlmIChtX3Vwc3RyZWFtU3RhcnQubm9kZSgpID09IG1fZG93bnN0cmVhbUVuZC5ub2RlKCkgJiYg
bV91cHN0cmVhbVN0YXJ0Lm5vZGUoKS0+aXNUZXh0Tm9kZSgpKQogICAgICAgICByZXR1cm47Ci0g
ICAgICAgIAorCiAgICAgLy8gRmlndXJlIG91dCB0aGUgdHlwaW5nIHN0eWxlIGluIGVmZmVjdCBi
ZWZvcmUgdGhlIGRlbGV0ZSBpcyBkb25lLgotICAgIFJlZlB0cjxDU1NDb21wdXRlZFN0eWxlRGVj
bGFyYXRpb24+IGNvbXB1dGVkU3R5bGUgPSBwb3NpdGlvbkJlZm9yZVRhYlNwYW4obV9zZWxlY3Rp
b25Ub0RlbGV0ZS5zdGFydCgpKS5jb21wdXRlZFN0eWxlKCk7Ci0gICAgbV90eXBpbmdTdHlsZSA9
IGNvbXB1dGVkU3R5bGUtPmRlcHJlY2F0ZWRDb3B5SW5oZXJpdGFibGVQcm9wZXJ0aWVzKCk7Ci0g
ICAgCisgICAgbV90eXBpbmdTdHlsZSA9IGVkaXRpbmdTdHlsZUF0UG9zaXRpb24ocG9zaXRpb25C
ZWZvcmVUYWJTcGFuKG1fc2VsZWN0aW9uVG9EZWxldGUuc3RhcnQoKSksIGZhbHNlKTsKKwogICAg
IHJlbW92ZUVuY2xvc2luZ0FuY2hvclN0eWxlKG1fdHlwaW5nU3R5bGUuZ2V0KCksIG1fc2VsZWN0
aW9uVG9EZWxldGUuc3RhcnQoKSk7Ci0gICAgCisKICAgICAvLyBJZiB3ZSdyZSBkZWxldGluZyBp
bnRvIGEgTWFpbCBibG9ja3F1b3RlLCBzYXZlIHRoZSBzdHlsZSBhdCBlbmQoKSBpbnN0ZWFkIG9m
IHN0YXJ0KCkKICAgICAvLyBXZSdsbCB1c2UgdGhpcyBsYXRlciBpbiBjb21wdXRlVHlwaW5nU3R5
bGVBZnRlckRlbGV0ZSBpZiB3ZSBlbmQgdXAgb3V0c2lkZSBvZiBhIE1haWwgYmxvY2txdW90ZQot
ICAgIGlmIChuZWFyZXN0TWFpbEJsb2NrcXVvdGUobV9zZWxlY3Rpb25Ub0RlbGV0ZS5zdGFydCgp
Lm5vZGUoKSkpIHsKLSAgICAgICAgY29tcHV0ZWRTdHlsZSA9IG1fc2VsZWN0aW9uVG9EZWxldGUu
ZW5kKCkuY29tcHV0ZWRTdHlsZSgpOwotICAgICAgICBtX2RlbGV0ZUludG9CbG9ja3F1b3RlU3R5
bGUgPSBjb21wdXRlZFN0eWxlLT5kZXByZWNhdGVkQ29weUluaGVyaXRhYmxlUHJvcGVydGllcygp
OwotICAgIH0gZWxzZQorICAgIGlmIChuZWFyZXN0TWFpbEJsb2NrcXVvdGUobV9zZWxlY3Rpb25U
b0RlbGV0ZS5zdGFydCgpLm5vZGUoKSkpCisgICAgICAgIG1fZGVsZXRlSW50b0Jsb2NrcXVvdGVT
dHlsZSA9IGVkaXRpbmdTdHlsZUF0UG9zaXRpb24obV9zZWxlY3Rpb25Ub0RlbGV0ZS5lbmQoKSwg
ZmFsc2UpOworICAgIGVsc2UKICAgICAgICAgbV9kZWxldGVJbnRvQmxvY2txdW90ZVN0eWxlID0g
MDsKIH0KIApAQCAtNjY4LDkgKzY2NCw4IEBAIHZvaWQgRGVsZXRlU2VsZWN0aW9uQ29tbWFuZDo6
Y2FsY3VsYXRlVHkKICAgICBpZiAobV9kZWxldGVJbnRvQmxvY2txdW90ZVN0eWxlICYmICFuZWFy
ZXN0TWFpbEJsb2NrcXVvdGUobV9lbmRpbmdQb3NpdGlvbi5ub2RlKCkpKQogICAgICAgICBtX3R5
cGluZ1N0eWxlID0gbV9kZWxldGVJbnRvQmxvY2txdW90ZVN0eWxlOwogICAgIG1fZGVsZXRlSW50
b0Jsb2NrcXVvdGVTdHlsZSA9IDA7Ci0gICAgCi0gICAgUmVmUHRyPENTU0NvbXB1dGVkU3R5bGVE
ZWNsYXJhdGlvbj4gZW5kaW5nU3R5bGUgPSBjb21wdXRlZFN0eWxlKG1fZW5kaW5nUG9zaXRpb24u
bm9kZSgpKTsKLSAgICBlbmRpbmdTdHlsZS0+ZGlmZihtX3R5cGluZ1N0eWxlLmdldCgpKTsKKwor
ICAgIHByZXBhcmVFZGl0aW5nU3R5bGVUb0FwcGx5QXQobV90eXBpbmdTdHlsZS5nZXQoKSwgbV9l
bmRpbmdQb3NpdGlvbik7CiAgICAgaWYgKCFtX3R5cGluZ1N0eWxlLT5sZW5ndGgoKSkKICAgICAg
ICAgbV90eXBpbmdTdHlsZSA9IDA7CiAgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVFbmQobV9l
bmRpbmdQb3NpdGlvbik7CkluZGV4OiBXZWJDb3JlL2VkaXRpbmcvRWRpdENvbW1hbmQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvZWRpdGluZy9FZGl0Q29tbWFuZC5jcHAJKHJldmlzaW9uIDQ2
NjgwKQorKysgV2ViQ29yZS9lZGl0aW5nL0VkaXRDb21tYW5kLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTk1LDE4ICsxOTUsNiBAQCBib29sIEVkaXRDb21tYW5kOjppc1R5cGluZ0NvbW1hbmQoKSBj
b25zCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1QYXNzUmVmUHRyPENTU011dGFibGVTdHlsZURl
Y2xhcmF0aW9uPiBFZGl0Q29tbWFuZDo6c3R5bGVBdFBvc2l0aW9uKGNvbnN0IFBvc2l0aW9uICZw
b3MpCi17Ci0gICAgUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBzdHlsZSA9IHBv
c2l0aW9uQmVmb3JlVGFiU3Bhbihwb3MpLmNvbXB1dGVkU3R5bGUoKS0+ZGVwcmVjYXRlZENvcHlJ
bmhlcml0YWJsZVByb3BlcnRpZXMoKTsKLSAKLSAgICAvLyBGSVhNRTogSXQgc2VlbXMgbWlzbGVh
ZGluZyB0byBhbHNvIGluY2x1ZGUgdGhlIHR5cGluZyBzdHlsZSB3aGVuIHJldHVybmluZyB0aGUg
c3R5bGUgYXQgc29tZSBhcmJpdHJhcnkKLSAgICAvLyBwb3NpdGlvbiBpbiB0aGUgZG9jdW1lbnQu
Ci0gICAgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qIHR5cGluZ1N0eWxlID0gZG9jdW1lbnQo
KS0+ZnJhbWUoKS0+dHlwaW5nU3R5bGUoKTsKLSAgICBpZiAodHlwaW5nU3R5bGUpCi0gICAgICAg
IHN0eWxlLT5tZXJnZSh0eXBpbmdTdHlsZSk7Ci0KLSAgICByZXR1cm4gc3R5bGUucmVsZWFzZSgp
OwotfQogCiB2b2lkIEVkaXRDb21tYW5kOjp1cGRhdGVMYXlvdXQoKSBjb25zdAogewpJbmRleDog
V2ViQ29yZS9lZGl0aW5nL0VkaXRDb21tYW5kLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0
aW5nL0VkaXRDb21tYW5kLmgJKHJldmlzaW9uIDQ2NjgwKQorKysgV2ViQ29yZS9lZGl0aW5nL0Vk
aXRDb21tYW5kLmgJKHdvcmtpbmcgY29weSkKQEAgLTY2LDcgKzY2LDYgQEAgcHJvdGVjdGVkOgog
ICAgIHZvaWQgc2V0U3RhcnRpbmdTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYpOwog
ICAgIHZvaWQgc2V0RW5kaW5nU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mKTsKIAot
ICAgIFBhc3NSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IHN0eWxlQXRQb3NpdGlv
bihjb25zdCBQb3NpdGlvbiYpOwogICAgIHZvaWQgdXBkYXRlTGF5b3V0KCkgY29uc3Q7CiAKIHBy
aXZhdGU6CkluZGV4OiBXZWJDb3JlL2VkaXRpbmcvSW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yQ29t
bWFuZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL0luc2VydFBhcmFncmFwaFNl
cGFyYXRvckNvbW1hbmQuY3BwCShyZXZpc2lvbiA0NjY4MCkKKysrIFdlYkNvcmUvZWRpdGluZy9J
bnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JDb21tYW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgs
NiArMzgsNyBAQAogI2luY2x1ZGUgIlRleHQuaCIKICNpbmNsdWRlICJodG1sZWRpdGluZy5oIgog
I2luY2x1ZGUgInZpc2libGVfdW5pdHMuaCIKKyNpbmNsdWRlICJBcHBseVN0eWxlQ29tbWFuZC5o
IgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTYzLDcgKzY0LDcgQEAgdm9pZCBJbnNlcnRQ
YXJhZ3JhcGhTZXBhcmF0b3JDb21tYW5kOjpjYQogICAgIGlmICghaXNTdGFydE9mUGFyYWdyYXBo
KHZpc2libGVQb3MpICYmICFpc0VuZE9mUGFyYWdyYXBoKHZpc2libGVQb3MpKQogICAgICAgICBy
ZXR1cm47CiAgICAgCi0gICAgbV9zdHlsZSA9IHN0eWxlQXRQb3NpdGlvbihwb3MpOworICAgIG1f
c3R5bGUgPSBlZGl0aW5nU3R5bGVBdFBvc2l0aW9uKHBvcywgdHJ1ZSk7CiB9CiAKIHZvaWQgSW5z
ZXJ0UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZDo6YXBwbHlTdHlsZUFmdGVySW5zZXJ0aW9uKE5v
ZGUqIG9yaWdpbmFsRW5jbG9zaW5nQmxvY2spCkBAIC03OSw4ICs4MCw5IEBAIHZvaWQgSW5zZXJ0
UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZDo6YXAKICAgICAgICAgCiAgICAgaWYgKCFtX3N0eWxl
KQogICAgICAgICByZXR1cm47CisgICAgCisgICAgcHJlcGFyZUVkaXRpbmdTdHlsZVRvQXBwbHlB
dChtX3N0eWxlLmdldCgpLCBlbmRpbmdTZWxlY3Rpb24oKS5zdGFydCgpKTsKIAotICAgIGNvbXB1
dGVkU3R5bGUoZW5kaW5nU2VsZWN0aW9uKCkuc3RhcnQoKS5ub2RlKCkpLT5kaWZmKG1fc3R5bGUu
Z2V0KCkpOwogICAgIGlmIChtX3N0eWxlLT5sZW5ndGgoKSA+IDApCiAgICAgICAgIGFwcGx5U3R5
bGUobV9zdHlsZS5nZXQoKSk7CiB9CkluZGV4OiBXZWJDb3JlL2VkaXRpbmcvUmVtb3ZlRm9ybWF0
Q29tbWFuZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL1JlbW92ZUZvcm1hdENv
bW1hbmQuY3BwCShyZXZpc2lvbiA0NjY4MCkKKysrIFdlYkNvcmUvZWRpdGluZy9SZW1vdmVGb3Jt
YXRDb21tYW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUg
IlNlbGVjdGlvbkNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKICNpbmNs
dWRlICJUeXBpbmdDb21tYW5kLmgiCisjaW5jbHVkZSAiQXBwbHlTdHlsZUNvbW1hbmQuaCIKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01NSw4ICs1Niw4IEBAIHZvaWQgUmVtb3ZlRm9ybWF0
Q29tbWFuZDo6ZG9BcHBseSgpCiAgICAgLy8gR2V0IHRoZSBkZWZhdWx0IHN0eWxlIGZvciB0aGlz
IGVkaXRhYmxlIHJvb3QsIGl0J3MgdGhlIHN0eWxlIHRoYXQgd2UnbGwgZ2l2ZSB0aGUKICAgICAv
LyBjb250ZW50IHRoYXQgd2UncmUgb3BlcmF0aW5nIG9uLgogICAgIE5vZGUqIHJvb3QgPSBmcmFt
ZS0+c2VsZWN0aW9uKCktPnJvb3RFZGl0YWJsZUVsZW1lbnQoKTsKLSAgICBSZWZQdHI8Q1NTTXV0
YWJsZVN0eWxlRGVjbGFyYXRpb24+IGRlZmF1bHRTdHlsZSA9IGNvbXB1dGVkU3R5bGUocm9vdCkt
PmRlcHJlY2F0ZWRDb3B5SW5oZXJpdGFibGVQcm9wZXJ0aWVzKCk7Ci0gICAgCisgICAgUmVmUHRy
PENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBkZWZhdWx0U3R5bGUgPSBlZGl0aW5nU3R5bGVB
dFBvc2l0aW9uKFBvc2l0aW9uKHJvb3QsIDApLCBmYWxzZSk7CisKICAgICAvLyBEZWxldGUgdGhl
IHNlbGVjdGVkIGNvbnRlbnQuCiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBiZSBhYmxlIHRvIGxl
YXZlIHRoaXMgdG8gaW5zZXJ0VGV4dCwgYnV0IGl0cyBkZWxldGUgb3BlcmF0aW9uCiAgICAgLy8g
ZG9lc24ndCBwcmVzZXJ2ZSB0aGUgc3R5bGUgd2UncmUgYWJvdXQgdG8gc2V0LgpJbmRleDogV2Vi
Q29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCShyZXZpc2lvbiA0NjY4
MCkKKysrIFdlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTU0OSw4ICs1NDksOSBAQCBzdGF0aWMgYm9vbCBoYW5kbGVTdHlsZVNwYW5z
QmVmb3JlSW5zZXJ0CiAgICAgCiAgICAgTm9kZSogc291cmNlRG9jdW1lbnRTdHlsZVNwYW4gPSB0
b3BOb2RlOwogICAgIFJlZlB0cjxOb2RlPiBjb3BpZWRSYW5nZVN0eWxlU3BhbiA9IHNvdXJjZURv
Y3VtZW50U3R5bGVTcGFuLT5maXJzdENoaWxkKCk7Ci0gICAgCi0gICAgUmVmUHRyPENTU011dGFi
bGVTdHlsZURlY2xhcmF0aW9uPiBzdHlsZUF0SW5zZXJ0aW9uUG9zID0gcmFuZ2VDb21wbGlhbnRF
cXVpdmFsZW50KGluc2VydGlvblBvcykuY29tcHV0ZWRTdHlsZSgpLT5kZXByZWNhdGVkQ29weUlu
aGVyaXRhYmxlUHJvcGVydGllcygpOworCisgICAgUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xh
cmF0aW9uPiBzdHlsZUF0SW5zZXJ0aW9uUG9zID0gZWRpdGluZ1N0eWxlQXRQb3NpdGlvbihyYW5n
ZUNvbXBsaWFudEVxdWl2YWxlbnQoaW5zZXJ0aW9uUG9zKSwgZmFsc2UpOworCiAgICAgU3RyaW5n
IHN0eWxlVGV4dCA9IHN0eWxlQXRJbnNlcnRpb25Qb3MtPmNzc1RleHQoKTsKICAgICAKICAgICBp
ZiAoc3R5bGVUZXh0ID09IHN0YXRpY19jYXN0PEVsZW1lbnQqPihzb3VyY2VEb2N1bWVudFN0eWxl
U3BhbiktPmdldEF0dHJpYnV0ZShzdHlsZUF0dHIpKSB7CkBAIC02MDYsOCArNjA3LDggQEAgdm9p
ZCBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6aGFuZGxlU3R5bAogICAgIC8vIHN0eWxlcyBmcm9t
IGJsb2NrcXVvdGVOb2RlIGFyZSBhbGxvd2VkIHRvIG92ZXJyaWRlIHRob3NlIGZyb20gdGhlIHNv
dXJjZSBkb2N1bWVudCwgc2VlIDxyZGFyOi8vcHJvYmxlbS80OTMwOTg2PiBhbmQgPHJkYXI6Ly9w
cm9ibGVtLzUwODkzMjc+LgogICAgIE5vZGUqIGJsb2NrcXVvdGVOb2RlID0gaXNNYWlsUGFzdGVB
c1F1b3RhdGlvbk5vZGUoY29udGV4dCkgPyBjb250ZXh0IDogbmVhcmVzdE1haWxCbG9ja3F1b3Rl
KGNvbnRleHQpOwogICAgIGlmIChibG9ja3F1b3RlTm9kZSkgewotICAgICAgICBSZWZQdHI8Q1NT
TXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IGJsb2NrcXVvdGVTdHlsZSA9IGNvbXB1dGVkU3R5bGUo
YmxvY2txdW90ZU5vZGUpLT5kZXByZWNhdGVkQ29weUluaGVyaXRhYmxlUHJvcGVydGllcygpOwot
ICAgICAgICBSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IHBhcmVudFN0eWxlID0g
Y29tcHV0ZWRTdHlsZShibG9ja3F1b3RlTm9kZS0+cGFyZW50Tm9kZSgpKS0+ZGVwcmVjYXRlZENv
cHlJbmhlcml0YWJsZVByb3BlcnRpZXMoKTsKKyAgICAgICAgUmVmUHRyPENTU011dGFibGVTdHls
ZURlY2xhcmF0aW9uPiBibG9ja3F1b3RlU3R5bGUgPSBlZGl0aW5nU3R5bGVBdFBvc2l0aW9uKFBv
c2l0aW9uKGJsb2NrcXVvdGVOb2RlLCAwKSwgZmFsc2UpOworICAgICAgICBSZWZQdHI8Q1NTTXV0
YWJsZVN0eWxlRGVjbGFyYXRpb24+IHBhcmVudFN0eWxlID0gZWRpdGluZ1N0eWxlQXRQb3NpdGlv
bihQb3NpdGlvbihibG9ja3F1b3RlTm9kZS0+cGFyZW50Tm9kZSgpLCAwKSwgZmFsc2UpOwogICAg
ICAgICBwYXJlbnRTdHlsZS0+ZGlmZihibG9ja3F1b3RlU3R5bGUuZ2V0KCkpOwogCiAgICAgICAg
IENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpjb25zdF9pdGVyYXRvciBlbmQgPSBibG9ja3F1
b3RlU3R5bGUtPmVuZCgpOwpAQCAtNjE4LDEwICs2MTksMTAgQEAgdm9pZCBSZXBsYWNlU2VsZWN0
aW9uQ29tbWFuZDo6aGFuZGxlU3R5bAogCiAgICAgICAgIGNvbnRleHQgPSBibG9ja3F1b3RlTm9k
ZS0+cGFyZW50Tm9kZSgpOwogICAgIH0KLSAgICAKLSAgICBSZWZQdHI8Q1NTTXV0YWJsZVN0eWxl
RGVjbGFyYXRpb24+IGNvbnRleHRTdHlsZSA9IGNvbXB1dGVkU3R5bGUoY29udGV4dCktPmRlcHJl
Y2F0ZWRDb3B5SW5oZXJpdGFibGVQcm9wZXJ0aWVzKCk7Ci0gICAgY29udGV4dFN0eWxlLT5kaWZm
KHNvdXJjZURvY3VtZW50U3R5bGUuZ2V0KCkpOwotICAgIAorCisgICAgLy8gVGhpcyBvcGVyYXRp
b24gcmVxdWlyZXMgdGhhdCBvbmx5IGVkaXRpbmcgc3R5bGVzIHRvIGJlIHJlbW92ZWQgZnJvbSBz
b3VyY2VEb2N1bWVudFN0eWxlLgorICAgIHByZXBhcmVFZGl0aW5nU3R5bGVUb0FwcGx5QXQoc291
cmNlRG9jdW1lbnRTdHlsZS5nZXQoKSwgUG9zaXRpb24oY29udGV4dCwgMCkpOworCiAgICAgLy8g
UmVtb3ZlIGJsb2NrIHByb3BlcnRpZXMgaW4gdGhlIHNwYW4ncyBzdHlsZS4gVGhpcyBwcmV2ZW50
cyBwcm9wZXJ0aWVzIHRoYXQgcHJvYmFibHkgaGF2ZSBubyBlZmZlY3QgCiAgICAgLy8gY3VycmVu
dGx5IGZyb20gYWZmZWN0aW5nIGJsb2NrcyBsYXRlciBpZiB0aGUgc3R5bGUgaXMgY2xvbmVkIGZv
ciBhIG5ldyBibG9jayBlbGVtZW50IGR1cmluZyBhIGZ1dHVyZSAKICAgICAvLyBlZGl0aW5nIG9w
ZXJhdGlvbi4KQEAgLTY1NSw5ICs2NTYsOCBAQCB2b2lkIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5k
OjpoYW5kbGVTdHlsCiAgICAgCiAgICAgLy8gUmVtb3ZlIHJlZHVuZGFudCBzdHlsZXMuCiAgICAg
Y29udGV4dCA9IGNvcGllZFJhbmdlU3R5bGVTcGFuLT5wYXJlbnROb2RlKCk7Ci0gICAgY29udGV4
dFN0eWxlID0gY29tcHV0ZWRTdHlsZShjb250ZXh0KS0+ZGVwcmVjYXRlZENvcHlJbmhlcml0YWJs
ZVByb3BlcnRpZXMoKTsKLSAgICBjb250ZXh0U3R5bGUtPmRpZmYoY29waWVkUmFuZ2VTdHlsZS5n
ZXQoKSk7Ci0gICAgCisgICAgcHJlcGFyZUVkaXRpbmdTdHlsZVRvQXBwbHlBdChjb3BpZWRSYW5n
ZVN0eWxlLmdldCgpLCBQb3NpdGlvbihjb250ZXh0LCAwKSk7CisKICAgICAvLyBTZWUgdGhlIGNv
bW1lbnRzIGFib3ZlIGFib3V0IHJlbW92aW5nIGJsb2NrIHByb3BlcnRpZXMuCiAgICAgY29waWVk
UmFuZ2VTdHlsZS0+cmVtb3ZlQmxvY2tQcm9wZXJ0aWVzKCk7CiAKQEAgLTcyNSw3ICs3MjUsNyBA
QCB2b2lkIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpkb0FwcGx5KCkKICAgICAgICAgcmV0dXJu
OwogICAgIAogICAgIGlmIChtX21hdGNoU3R5bGUpCi0gICAgICAgIG1faW5zZXJ0aW9uU3R5bGUg
PSBzdHlsZUF0UG9zaXRpb24oc2VsZWN0aW9uLnN0YXJ0KCkpOworICAgICAgICBtX2luc2VydGlv
blN0eWxlID0gZWRpdGluZ1N0eWxlQXRQb3NpdGlvbihzZWxlY3Rpb24uc3RhcnQoKSwgdHJ1ZSk7
CiAgICAgCiAgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVTdGFydCA9IHNlbGVjdGlvbi52aXNp
YmxlU3RhcnQoKTsKICAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZUVuZCA9IHNlbGVjdGlvbi52
aXNpYmxlRW5kKCk7CkluZGV4OiBXZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAkocmV2aXNpb24gNDY2ODApCisrKyBXZWJD
b3JlL2VkaXRpbmcvbWFya3VwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTgsNiArNTgsNyBAQAog
I2luY2x1ZGUgImh0bWxlZGl0aW5nLmgiCiAjaW5jbHVkZSAidmlzaWJsZV91bml0cy5oIgogI2lu
Y2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKyNpbmNsdWRlICJBcHBseVN0eWxlQ29tbWFuZC5o
IgogCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCkBAIC0yOTEsMjAgKzI5MiwxNiBAQCBzdGF0aWMg
dm9pZCByZW1vdmVFbmNsb3NpbmdNYWlsQmxvY2txdW90CiAgICAgTm9kZSogYmxvY2txdW90ZSA9
IG5lYXJlc3RNYWlsQmxvY2txdW90ZShub2RlKTsKICAgICBpZiAoIWJsb2NrcXVvdGUgfHwgIWJs
b2NrcXVvdGUtPnBhcmVudE5vZGUoKSkKICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgCi0g
ICAgUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBwYXJlbnRTdHlsZSA9IFBvc2l0
aW9uKGJsb2NrcXVvdGUtPnBhcmVudE5vZGUoKSwgMCkuY29tcHV0ZWRTdHlsZSgpLT5kZXByZWNh
dGVkQ29weUluaGVyaXRhYmxlUHJvcGVydGllcygpOwotICAgIFJlZlB0cjxDU1NNdXRhYmxlU3R5
bGVEZWNsYXJhdGlvbj4gYmxvY2txdW90ZVN0eWxlID0gUG9zaXRpb24oYmxvY2txdW90ZSwgMCku
Y29tcHV0ZWRTdHlsZSgpLT5kZXByZWNhdGVkQ29weUluaGVyaXRhYmxlUHJvcGVydGllcygpOwot
ICAgIHBhcmVudFN0eWxlLT5kaWZmKGJsb2NrcXVvdGVTdHlsZS5nZXQoKSk7Ci0gICAgYmxvY2tx
dW90ZVN0eWxlLT5kaWZmKHN0eWxlKTsKKworICAgIHJlbW92ZVN0eWxlT2ZOb2RlKHN0eWxlLCBi
bG9ja3F1b3RlKTsKIH0KIAogc3RhdGljIHZvaWQgcmVtb3ZlRGVmYXVsdFN0eWxlcyhDU1NNdXRh
YmxlU3R5bGVEZWNsYXJhdGlvbiogc3R5bGUsIERvY3VtZW50KiBkb2N1bWVudCkKIHsKICAgICBp
ZiAoIWRvY3VtZW50IHx8ICFkb2N1bWVudC0+ZG9jdW1lbnRFbGVtZW50KCkpCiAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgICAgIAotICAgIFJlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlv
bj4gZG9jdW1lbnRTdHlsZSA9IGNvbXB1dGVkU3R5bGUoZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVu
dCgpKS0+ZGVwcmVjYXRlZENvcHlJbmhlcml0YWJsZVByb3BlcnRpZXMoKTsKLSAgICBkb2N1bWVu
dFN0eWxlLT5kaWZmKHN0eWxlKTsKKworICAgIHByZXBhcmVFZGl0aW5nU3R5bGVUb0FwcGx5QXQo
c3R5bGUsIFBvc2l0aW9uKGRvY3VtZW50LT5kb2N1bWVudEVsZW1lbnQoKSwgMCkpOwogfQogCiBz
dGF0aWMgYm9vbCBzaG91bGRBZGROYW1lc3BhY2VFbGVtKGNvbnN0IEVsZW1lbnQqIGVsZW0pCkBA
IC0xMDA3LDcgKzEwMDQsNyBAQCBTdHJpbmcgY3JlYXRlTWFya3VwKGNvbnN0IFJhbmdlKiByYW5n
ZSwgCiAgICAgLy8gQWRkIGEgd3JhcHBlciBzcGFuIHdpdGggdGhlIHN0eWxlcyB0aGF0IGFsbCBv
ZiB0aGUgbm9kZXMgaW4gdGhlIG1hcmt1cCBpbmhlcml0LgogICAgIE5vZGUqIHBhcmVudE9mTGFz
dENsb3NlZCA9IGxhc3RDbG9zZWQgPyBsYXN0Q2xvc2VkLT5wYXJlbnROb2RlKCkgOiAwOwogICAg
IGlmIChwYXJlbnRPZkxhc3RDbG9zZWQgJiYgcGFyZW50T2ZMYXN0Q2xvc2VkLT5yZW5kZXJlcigp
KSB7Ci0gICAgICAgIFJlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gc3R5bGUgPSBj
b21wdXRlZFN0eWxlKHBhcmVudE9mTGFzdENsb3NlZCktPmRlcHJlY2F0ZWRDb3B5SW5oZXJpdGFi
bGVQcm9wZXJ0aWVzKCk7CisgICAgICAgIFJlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlv
bj4gc3R5bGUgPSBlZGl0aW5nU3R5bGVBdFBvc2l0aW9uKFBvc2l0aW9uKHBhcmVudE9mTGFzdENs
b3NlZCwgMCksIGZhbHNlKTsKIAogICAgICAgICAvLyBTdHlsZXMgdGhhdCBNYWlsIGJsb2NrcXVv
dGVzIGNvbnRyaWJ1dGUgc2hvdWxkIG9ubHkgYmUgcGxhY2VkIG9uIHRoZSBNYWlsIGJsb2NrcXVv
dGUsIHRvIGhlbHAKICAgICAgICAgLy8gdXMgZGlmZmVyZW50aWF0ZSB0aG9zZSBzdHlsZXMgZnJv
bSBvbmVzIHRoYXQgdGhlIHVzZXIgaGFzIGFwcGxpZWQuICBUaGlzIGhlbHBzIHVzCkBAIC0xMDMx
LDggKzEwMjgsOCBAQCBTdHJpbmcgY3JlYXRlTWFya3VwKGNvbnN0IFJhbmdlKiByYW5nZSwgCiAg
ICAgICAgIC8vIEFkZCBhIHN0eWxlIHNwYW4gd2l0aCB0aGUgZG9jdW1lbnQncyBkZWZhdWx0IHN0
eWxlcy4gIFdlIGFkZCB0aGVzZSBpbiBhIHNlcGFyYXRlCiAgICAgICAgIC8vIHNwYW4gc28gdGhh
dCBhdCBwYXN0ZSB0aW1lIHdlIGNhbiBkaWZmZXJlbnRpYXRlIGJldHdlZW4gZG9jdW1lbnQgZGVm
YXVsdHMgYW5kIHVzZXIKICAgICAgICAgLy8gYXBwbGllZCBzdHlsZXMuCi0gICAgICAgIFJlZlB0
cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gZGVmYXVsdFN0eWxlID0gY29tcHV0ZWRTdHls
ZShkb2N1bWVudC0+ZG9jdW1lbnRFbGVtZW50KCkpLT5kZXByZWNhdGVkQ29weUluaGVyaXRhYmxl
UHJvcGVydGllcygpOwotICAgICAgICAKKyAgICAgICAgUmVmUHRyPENTU011dGFibGVTdHlsZURl
Y2xhcmF0aW9uPiBkZWZhdWx0U3R5bGUgPSBlZGl0aW5nU3R5bGVBdFBvc2l0aW9uKFBvc2l0aW9u
KGRvY3VtZW50LT5kb2N1bWVudEVsZW1lbnQoKSwgMCksIGZhbHNlKTsKKwogICAgICAgICBpZiAo
ZGVmYXVsdFN0eWxlLT5sZW5ndGgoKSA+IDApCiAgICAgICAgICAgICBhZGRTdHlsZU1hcmt1cChw
cmVNYXJrdXBzLCBtYXJrdXBzLCBkZWZhdWx0U3R5bGUuZ2V0KCksIGRvY3VtZW50KTsKICAgICB9
CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCShyZXZpc2lvbiA0Njc0MikKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDA5LTA4LTAzICBSeW9zdWtlIE5pd2EgIDxy
bml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEJhY2tncm91bmQgY29sb3IgZm9ybWF0dGluZyBsb3N0IG9uIGVudGVyCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDM0OAorCisgICAg
ICAgIFRoaXMgcGF0Y2ggYWRkcyBuZXcgdGVzdCB0byBtYWtlIHN1cmUgV2ViS2l0IHByZXNlcnZl
cyB0aGUgYmFja2dyb3VuZC1jb2xvciB3aGVuIGluc2VydGluZyBhIG5ldyBwYXJhZ3JhcGguCisg
ICAgICAgIFR3byBleHBlY3RlZCByZXN1bHRzIGFyZSByZWJhc2VsaW5lZCBmb3IgdGhlIGZvbGxv
d2luZyByZWFzb25zOgorCisgICAgICAgIDU5OTQ0ODAtMi1leHBlY3RlZC50eHQ6IEJlY2F1c2Ug
d2UncmUgZGVsZXRpbmcgaW5wdXQgZWxlbWVudCB3aXRoIHdoaXRlIGJhY2tncm91bmQgYW5kIHRo
ZSBlbmNsb3NpbmcgZGl2IGhhcyB0cmFuc3BhcmVudCBiYWNrZ3JvdW5kLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB3ZSBhZGQgd2hpdGUgYmFja2dyb3VuZCBpbiBEZWxldGVTZWxl
Y3Rpb25Db21tYW5kOjpjYWxjdWxhdGVUeXBpbmdTdHlsZUFmdGVyRGVsZXRlIHVwb24gZGVsZXRp
b24uCisgICAgICAgIHNlbGVjdC1lbGVtZW50LTEuaHRtbDogIEJlY2F1c2Ugc2VsZWN0IGVsZW1l
bnQgaGFzIHRoZSB3aGl0ZSBiYWNrZ3JvdW5kIGNvbG9yIGFuZCBkaXYgaGFzIHRyYW5zcGFyZW50
IGJhY2tncm91bmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdlIGFkZCB3aGl0
ZSBiYWNrZ3JvdW5kIGluIERlbGV0ZVNlbGVjdGlvbjo6Y2FsY3VsYXRlVHlwaW5nU3R5bGVBZnRl
ckRlbGV0ZSB1cG9uIGN1dC4KKworICAgICAgICAqIGVkaXRpbmcvaW5zZXJ0aW5nLzU5OTQ0ODAt
Mi1leHBlY3RlZC50eHQ6IEV4dHJhIHNwYW4gd2l0aCB3aGl0ZSBiYWNrZ3JvdW5kLWNvbG9yIGlz
IGFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvc3R5bGUvaGlnaGxpZ2h0LWFmdGVyLWVudGVyLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9zdHlsZS9oaWdobGlnaHQtYWZ0
ZXItZW50ZXIuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL2VkaXRpbmcvcGFz
dGVib2FyZC9zZWxlY3QtZWxlbWVudC0xLWV4cGVjdGVkLnR4dDogd2hpdGUgYmFja2dyb3VuZC1j
b2xvciBpcyBhZGRlZCB0byBhbiBleGlzdGluZyBzcGFuLgorCiAyMDA5LTA4LTAzICBKYW4gTWlj
aGFlbCBBbG9uem8gIDxqbWFsb256b0B3ZWJraXQub3JnPgogCiAgICAgICAgIFtHdGtdIFNraXAg
YWNjZXNzaWJpbGl0eS9pbnB1dC1zbGlkZXIuaHRtbCBhcyBpdCBuZWVkcwpJbmRleDogTGF5b3V0
VGVzdHMvZWRpdGluZy9pbnNlcnRpbmcvNTk5NDQ4MC0yLWV4cGVjdGVkLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL2luc2VydGluZy81OTk0NDgwLTItZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiA0NjY4MCkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvaW5zZXJ0aW5nLzU5OTQ0
ODAtMi1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEgKzEgQEAKLTxmb250IGNsYXNz
PSJBcHBsZS1zdHlsZS1zcGFuIiBmYWNlPSInTHVjaWRhIEdyYW5kZSciIHNpemU9IjMiPjxzcGFu
IGNsYXNzPSJBcHBsZS1zdHlsZS1zcGFuIiBzdHlsZT0iZm9udC1zaXplOiAxMXB4OyI+PGJyPjwv
c3Bhbj48L2ZvbnQ+Cis8Zm9udCBjbGFzcz0iQXBwbGUtc3R5bGUtc3BhbiIgZmFjZT0iJ0x1Y2lk
YSBHcmFuZGUnIiBzaXplPSIzIj48c3BhbiBjbGFzcz0iQXBwbGUtc3R5bGUtc3BhbiIgc3R5bGU9
ImJhY2tncm91bmQtY29sb3I6IHJnYigyNTUsIDI1NSwgMjU1KTsgZm9udC1zaXplOiAxMXB4OyI+
PGJyPjwvc3Bhbj48L2ZvbnQ+CkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL3N0eWxlL2hpZ2hs
aWdodC1hZnRlci1lbnRlci1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZWRpdGluZy9zdHlsZS9oaWdobGlnaHQtYWZ0ZXItZW50ZXItZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9zdHlsZS9oaWdobGlnaHQtYWZ0ZXItZW50ZXIt
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUgQEAKK1RoaXMgdGVzdHMgaW5z
ZXJ0aW5nIGEgbmV3IHBhcmFncmFwaCBwcmVzZXJ2ZXMgdGhlIGJhY2tncm91bmQgY29sb3IuCisK
K3Rlc3QKK2UKKzxzcGFuIGNsYXNzPSJBcHBsZS1zdHlsZS1zcGFuIiBzdHlsZT0iYmFja2dyb3Vu
ZC1jb2xvcjogcmdiKDE1MywgMTUzLCAyNTUpOyI+IHRlc3QgPC9zcGFuPjxkaXY+PHNwYW4gY2xh
c3M9IkFwcGxlLXN0eWxlLXNwYW4iIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMTUzLCAx
NTMsIDI1NSk7Ij5lPC9zcGFuPjwvZGl2PgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9zdHls
ZS9oaWdobGlnaHQtYWZ0ZXItZW50ZXIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9l
ZGl0aW5nL3N0eWxlL2hpZ2hsaWdodC1hZnRlci1lbnRlci5odG1sCShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvZWRpdGluZy9zdHlsZS9oaWdobGlnaHQtYWZ0ZXItZW50ZXIuaHRtbAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSw0OSBAQAorPGh0bWw+Cis8Ym9keT4KKzxwPlRoaXMgdGVzdHMg
aW5zZXJ0aW5nIGEgbmV3IHBhcmFncmFwaCBwcmVzZXJ2ZXMgdGhlIGJhY2tncm91bmQgY29sb3Iu
PC9wPgorPGRpdiBpZD0idGVzdCIgY29udGVudGVkaXRhYmxlPSJ0cnVlIj4KK3Rlc3QKKzwvZGl2
PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisKKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2Ny
aXB0Ij4KKworZnVuY3Rpb24gcHJlc3NLZXkoIGtleSApIHsKKyAgICBpZiAod2luZG93LktleUV2
ZW50KSB7CisgICAgICAgIHZhciBldiA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCJLZXlib2FyZEV2
ZW50Iik7CisgICAgICAgIGV2LmluaXRLZXlFdmVudCgia2V5cHJlc3MiLCB0cnVlLCB0cnVlLCB3
aW5kb3csICAwLDAsMCwwLCAwLCBrZXkuY2hhckNvZGVBdCgwKSk7CisgICAgICAgIGRvY3VtZW50
LmJvZHkuZGlzcGF0Y2hFdmVudChldik7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICB2YXIg
ZXYgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgiVGV4dEV2ZW50Iik7CisgICAgICAgIGV2LmluaXRU
ZXh0RXZlbnQoJ3RleHRJbnB1dCcsIHRydWUsIHRydWUsIG51bGwsIGtleS5jaGFyQXQoMCkpOwor
ICAgICAgICBkb2N1bWVudC5ib2R5LmRpc3BhdGNoRXZlbnQoZXYpOworICAgIH0KK30KKworaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5k
dW1wQXNUZXh0KCk7CisKK3ZhciBlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlc3QnKTsK
K3ZhciBzID0gd2luZG93LmdldFNlbGVjdGlvbigpOworCityID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKworci5zZXRTdGFydChlLmZpcnN0Q2hpbGQsMCk7CityLnNldEVuZChlLmZpcnN0Q2hp
bGQsNSk7CisKK3MuYWRkUmFuZ2Uocik7Citkb2N1bWVudC5leGVjQ29tbWFuZCgiaGlsaXRlQ29s
b3IiLGZhbHNlLCIjOTlmIik7CisKK3IgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworci5zZXRT
dGFydChlLmZpcnN0Q2hpbGQuZmlyc3RDaGlsZCw1KTsKK3Iuc2V0RW5kKGUuZmlyc3RDaGlsZC5m
aXJzdENoaWxkLDUpOworcy5yZW1vdmVBbGxSYW5nZXMoKTsKK3MuYWRkUmFuZ2Uocik7CisKK3By
ZXNzS2V5KCdcbicpOworcHJlc3NLZXkoJ2UnKTsKKworZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J2NvbnNvbGUnKS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShlLmlubmVySFRN
TCkpOworCis8L3NjcmlwdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBMYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9wYXN0ZWJvYXJkL3NlbGVjdC1lbGVtZW50LTEt
ZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0
aW5nL3Bhc3RlYm9hcmQvc2VsZWN0LWVsZW1lbnQtMS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDQ2
NjgwKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvcGFzdGVib2FyZC9zZWxl
Y3QtZWxlbWVudC0xLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBA
QCBsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMjUz
LDApIHdpZHRoIDIyMDogIkFsbCB0aGUgb3B0aW9ucyBzaG91bGQgYmUgaW5jbHVkZWQuIgogICAg
ICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsMzQpIHNpemUgNzg0eDEzCiAgICAgICAgIFJlbmRl
cklubGluZSB7Rk9OVH0gYXQgKDAsMCkgc2l6ZSAweDEzCi0gICAgICAgICAgUmVuZGVySW5saW5l
IHtTUEFOfSBhdCAoMCwwKSBzaXplIDB4MTMKKyAgICAgICAgICBSZW5kZXJJbmxpbmUge1NQQU59
IGF0ICgwLDApIHNpemUgMHgxMyBbYmdjb2xvcj0jRkZGRkZGXQogICAgICAgICAgICAgUmVuZGVy
QlIge0JSfSBhdCAoMCwwKSBzaXplIDB4MTMKICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgw
LDQ3KSBzaXplIDc4NHgyMgogICAgICAgICBSZW5kZXJNZW51TGlzdCB7U0VMRUNUfSBhdCAoMiwy
KSBzaXplIDYyeDE4IFtiZ2NvbG9yPSNGRkZGRkZdCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34222</attachid>
            <date>2009-08-06 13:23:36 -0700</date>
            <delta_ts>2009-08-07 15:25:07 -0700</delta_ts>
            <desc>fixed per comment &amp; removes deprecatedCopyInheritableProperties</desc>
            <filename>fix20348d</filename>
            <type>text/plain</type>
            <size>31571</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NjgxNikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDQgQEAKKzIwMDktMDgtMDUgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQmFj
a2dyb3VuZCBjb2xvciBmb3JtYXR0aW5nIGxvc3Qgb24gZW50ZXIKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMzQ4CisKKyAgICAgICAgVGhpcyBwYXRj
aCByZXBsYWNlIGFsbCBpbnN0YW5jZXMgb2YgZGVwcmVjYXRlZENvcHlJbmhlcml0YWJsZVByb3Bl
cnRpZXMgYnkgZWRpdGluZ1N0eWxlQXRQb3NpdGlvbgorICAgICAgICBvciBwcmVwYXJlRWRpdGlu
Z1N0eWxlVG9BcHBseUF0LCBhbmQgYWRkcyBDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciBhcyBh
IHByb3BlcnR5IHRvIGJlIGNvcGllZCBhcyBlZGl0aW5nIHN0eWxlLgorICAgICAgICBUaGUgY29u
Y2VwdCBvZiBlZGl0aW5nIHN0eWxlIGlzIGludHJvZHVjZWQgaW4gdGhpcyBwYXRjaCwgd2hpY2gg
Y29uc2lzdHMgb2YgYWxsIENTUyBwcm9wZXJ0aWVzIHRoYXQKKyAgICAgICAgbXVzdCBiZSBwcmVz
ZXJ2ZWQgdW5kZXIgZWRpdGluZyBvcGVyYXRpb25zLgorCisgICAgICAgICogZWRpdGluZy9BcHBs
eVN0eWxlQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjopOgorICAgICAgICAoV2ViQ29y
ZTo6ZWRpdGluZ1N0eWxlQXRQb3NpdGlvbik6IE9idGFpbnMgdGhlIGVkaXRpbmctc3BlY2lmaWMg
Y29tcHV0ZWQgc3R5bGUgYXQgdGhlIHBvc2l0aW9uCisgICAgICAgIChXZWJDb3JlOjpwcmVwYXJl
RWRpdGluZ1N0eWxlVG9BcHBseUF0KTogUmVtb3ZlcyByZWR1bmRhbnQgZWRpdGluZyBzdHlsZXMg
YXQgdGhlIHNwZWNpZmllZCBwb3NpdGlvbgorICAgICAgICAoV2ViQ29yZTo6cmVtb3ZlU3R5bGVP
Zk5vZGUpOiBSZW1vdmVzIHRoZSBzdHlsZSBkZXJpdmVkIGZyb20gdGhlIHNwZWNpZmllZCBub2Rl
CisgICAgICAgICogZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5oOgorICAgICAgICAqIGVkaXRp
bmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRl
RWRpdENvbW1hbmQ6Om1vdmVQYXJhZ3JhcGhzKTogVXNlcyBlZGl0aW5nU3R5bGVBdFBvc2l0aW9u
CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVFZGl0Q29tbWFuZDo6YnJlYWtPdXRPZkVtcHR5
TGlzdEl0ZW0pOiBVc2VzIGVkaXRpbmdTdHlsZUF0UG9zaXRpb24KKyAgICAgICAgKiBlZGl0aW5n
L0RlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVtb3ZlRW5j
bG9zaW5nQW5jaG9yU3R5bGUpOiBVc2VzIHJlbW92ZVN0eWxlT2ZOb2RlCisgICAgICAgIChXZWJD
b3JlOjpEZWxldGVTZWxlY3Rpb25Db21tYW5kOjpzYXZlVHlwaW5nU3R5bGVTdGF0ZSk6IFVzZXMg
ZWRpdGluZ1N0eWxlQXRQb3NpdGlvbgorICAgICAgICAoV2ViQ29yZTo6RGVsZXRlU2VsZWN0aW9u
Q29tbWFuZDo6Y2FsY3VsYXRlVHlwaW5nU3R5bGVBZnRlckRlbGV0ZSk6IFVzZXMgcHJlcGFyZUVk
aXRpbmdTdHlsZVRvQXBwbHlBdAorICAgICAgICAqIGVkaXRpbmcvRWRpdENvbW1hbmQuY3BwOiBS
ZW1vdmVkIHN0eWxlQXRQb3NpdGlvbgorICAgICAgICAqIGVkaXRpbmcvRWRpdENvbW1hbmQuaDog
ZGl0dG8KKyAgICAgICAgKiBlZGl0aW5nL0luc2VydFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZDo6
Y2FsY3VsYXRlU3R5bGVCZWZvcmVJbnNlcnRpb24pOiBVc2VzIGVkaXRpbmdTdHlsZUF0UG9zaXRp
b24KKyAgICAgICAgKFdlYkNvcmU6Okluc2VydFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQ6OmFw
cGx5U3R5bGVBZnRlckluc2VydGlvbik6IFVzZXMgcHJlcGFyZUVkaXRpbmdTdHlsZVRvQXBwbHlB
dAorICAgICAgICAqIGVkaXRpbmcvUmVtb3ZlRm9ybWF0Q29tbWFuZC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW1vdmVGb3JtYXRDb21tYW5kOjpkb0FwcGx5KTogVXNlcyBlZGl0aW5nU3R5bGVB
dFBvc2l0aW9uCisgICAgICAgICogZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpoYW5kbGVTdHlsZVNwYW5zQmVmb3JlSW5zZXJ0aW9uKTogVXNl
cyBlZGl0aW5nU3R5bGVBdFBvc2l0aW9uCisgICAgICAgIChXZWJDb3JlOjpSZXBsYWNlU2VsZWN0
aW9uQ29tbWFuZDo6aGFuZGxlU3R5bGVTcGFucyk6IFVzZXMgZWRpdGluZ1N0eWxlQXRQb3NpdGlv
biBhbmQgcHJlcGFyZUVkaXRpbmdTdHlsZVRvQXBwbHlBdAorICAgICAgICAoV2ViQ29yZTo6UmVw
bGFjZVNlbGVjdGlvbkNvbW1hbmQ6OmRvQXBwbHkpOiBVc2VzIHByZXBhcmVFZGl0aW5nU3R5bGVU
b0FwcGx5QXQKKyAgICAgICAgKiBlZGl0aW5nL21hcmt1cC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpyZW1vdmVFbmNsb3NpbmdNYWlsQmxvY2txdW90ZVN0eWxlKTogVXNlcyByZW1vdmVTdHlsZU9m
Tm9kZQorICAgICAgICAoV2ViQ29yZTo6cmVtb3ZlRGVmYXVsdFN0eWxlcyk6IFVzZXMgcHJlcGFy
ZUVkaXRpbmdTdHlsZVRvQXBwbHlBdAorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlTWFya3VwKTog
VXNlcyBlZGl0aW5nU3R5bGVBdFBvc2l0aW9uCisKIDIwMDktMDgtMDUgIFNpbW9uIEZyYXNlciAg
PHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRs
ZXIuCkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAJ
KHJldmlzaW9uIDQ2ODE2KQorKysgV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0
aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQzOCwzNyArMTQzOCw2IEBAIFN0cmluZyBDU1ND
b21wdXRlZFN0eWxlRGVjbGFyYXRpb246Oml0ZW0KICAgICByZXR1cm4gZ2V0UHJvcGVydHlOYW1l
KHN0YXRpY19jYXN0PENTU1Byb3BlcnR5SUQ+KGNvbXB1dGVkUHJvcGVydGllc1tpXSkpOwogfQog
Ci0vLyBUaGlzIGlzIHRoZSBsaXN0IG9mIHByb3BlcnRpZXMgd2Ugd2FudCB0byBjb3B5IGluIHRo
ZSBjb3B5SW5oZXJpdGFibGVQcm9wZXJ0aWVzKCkgZnVuY3Rpb24uCi0vLyBJdCBpcyB0aGUgaW50
ZXJzZWN0aW9uIG9mIHRoZSBsaXN0IG9mIGluaGVyaXRlZCBDU1MgcHJvcGVydGllcyBhbmQgdGhl
Ci0vLyBwcm9wZXJ0aWVzIGZvciB3aGljaCB3ZSBoYXZlIGEgY29tcHV0ZWQgaW1wbGVtZW50YXRp
b24gaW4gdGhpcyBmaWxlLgotc3RhdGljIGNvbnN0IGludCBpbmhlcml0YWJsZVByb3BlcnRpZXNb
XSA9IHsKLSAgICBDU1NQcm9wZXJ0eUJvcmRlckNvbGxhcHNlLAotICAgIENTU1Byb3BlcnR5Q29s
b3IsCi0gICAgQ1NTUHJvcGVydHlGb250RmFtaWx5LAotICAgIENTU1Byb3BlcnR5Rm9udFNpemUs
Ci0gICAgQ1NTUHJvcGVydHlGb250U3R5bGUsCi0gICAgQ1NTUHJvcGVydHlGb250VmFyaWFudCwK
LSAgICBDU1NQcm9wZXJ0eUZvbnRXZWlnaHQsCi0gICAgQ1NTUHJvcGVydHlMZXR0ZXJTcGFjaW5n
LAotICAgIENTU1Byb3BlcnR5TGluZUhlaWdodCwKLSAgICBDU1NQcm9wZXJ0eU9ycGhhbnMsCi0g
ICAgQ1NTUHJvcGVydHlUZXh0QWxpZ24sCi0gICAgQ1NTUHJvcGVydHlUZXh0SW5kZW50LAotICAg
IENTU1Byb3BlcnR5VGV4dFRyYW5zZm9ybSwKLSAgICBDU1NQcm9wZXJ0eVdoaXRlU3BhY2UsCi0g
ICAgQ1NTUHJvcGVydHlXaWRvd3MsCi0gICAgQ1NTUHJvcGVydHlXb3JkU3BhY2luZywKLSAgICBD
U1NQcm9wZXJ0eVdlYmtpdEJvcmRlckhvcml6b250YWxTcGFjaW5nLAotICAgIENTU1Byb3BlcnR5
V2Via2l0Qm9yZGVyVmVydGljYWxTcGFjaW5nLAotICAgIENTU1Byb3BlcnR5V2Via2l0VGV4dERl
Y29yYXRpb25zSW5FZmZlY3QsCi0gICAgQ1NTUHJvcGVydHlXZWJraXRUZXh0RmlsbENvbG9yLAot
ICAgIENTU1Byb3BlcnR5V2Via2l0VGV4dFNpemVBZGp1c3QsCi0gICAgQ1NTUHJvcGVydHlXZWJr
aXRUZXh0U3Ryb2tlQ29sb3IsCi0gICAgQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlV2lkdGgs
Ci19OwotCi1zdGF0aWMgY29uc3QgdW5zaWduZWQgbnVtSW5oZXJpdGFibGVQcm9wZXJ0aWVzID0g
c2l6ZW9mKGluaGVyaXRhYmxlUHJvcGVydGllcykgLyBzaXplb2YoaW5oZXJpdGFibGVQcm9wZXJ0
aWVzWzBdKTsKLQogYm9vbCBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmNzc1Byb3BlcnR5
TWF0Y2hlcyhjb25zdCBDU1NQcm9wZXJ0eSogcHJvcGVydHkpIGNvbnN0CiB7CiAgICAgaWYgKHBy
b3BlcnR5LT5pZCgpID09IENTU1Byb3BlcnR5Rm9udFNpemUgJiYgcHJvcGVydHktPnZhbHVlKCkt
PmlzUHJpbWl0aXZlVmFsdWUoKSAmJiBtX25vZGUpIHsKQEAgLTE0ODUsMjkgKzE0NTQsNiBAQCBi
b29sIENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Y3NzUHJvCiAgICAgcmV0dXJuIENTU1N0
eWxlRGVjbGFyYXRpb246OmNzc1Byb3BlcnR5TWF0Y2hlcyhwcm9wZXJ0eSk7CiB9CiAKLS8vIEZJ
WE1FOiBkZXByZWNhdGVkQ29weUluaGVyaXRhYmxlUHJvcGVydGllcyBpcyB1c2VkIGZvciB0d28g
cHVycG9zZXM6Ci0vLyAxLiAgQ2FsY3VsYXRpbmcgdGhlIHR5cGluZyBzdHlsZS4KLS8vIDIuICBN
b3ZpbmcgSFRNTCBzdWJ0cmVlcyBhbmQgc2Vla2luZyB0byByZW1vdmUgcmVkdW5kYW50IHN0eWxl
cy4KLS8vIFRoZXNlIHRhc2tzIHNob3VsZCBiZSBicm9rZW4gb3V0IGludG8gdHdvIHNlcGFyYXRl
IGZ1bmN0aW9ucy4gIE5ldyBjb2RlIHNob3VsZCBub3QgdXNlIHRoaXMgZnVuY3Rpb24uCi1QYXNz
UmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBDU1NDb21wdXRlZFN0eWxlRGVjbGFy
YXRpb246OmRlcHJlY2F0ZWRDb3B5SW5oZXJpdGFibGVQcm9wZXJ0aWVzKCkgY29uc3QKLXsKLSAg
ICBSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IHN0eWxlID0gY29weVByb3BlcnRp
ZXNJblNldChpbmhlcml0YWJsZVByb3BlcnRpZXMsIG51bUluaGVyaXRhYmxlUHJvcGVydGllcyk7
Ci0gICAgaWYgKHN0eWxlICYmIG1fbm9kZSAmJiBtX25vZGUtPmNvbXB1dGVkU3R5bGUoKSkgewot
ICAgICAgICAvLyBJZiBhIG5vZGUncyB0ZXh0IGZpbGwgY29sb3IgaXMgaW52YWxpZCwgdGhlbiBp
dHMgY2hpbGRyZW4gdXNlIAotICAgICAgICAvLyB0aGVpciBmb250LWNvbG9yIGFzIHRoZWlyIHRl
eHQgZmlsbCBjb2xvciAodGhleSBkb24ndAotICAgICAgICAvLyBpbmhlcml0IGl0KS4gIExpa2V3
aXNlIGZvciBzdHJva2UgY29sb3IuCi0gICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAg
ICAgICBpZiAoIW1fbm9kZS0+Y29tcHV0ZWRTdHlsZSgpLT50ZXh0RmlsbENvbG9yKCkuaXNWYWxp
ZCgpKQotICAgICAgICAgICAgc3R5bGUtPnJlbW92ZVByb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0
VGV4dEZpbGxDb2xvciwgZWMpOwotICAgICAgICBpZiAoIW1fbm9kZS0+Y29tcHV0ZWRTdHlsZSgp
LT50ZXh0U3Ryb2tlQ29sb3IoKS5pc1ZhbGlkKCkpCi0gICAgICAgICAgICBzdHlsZS0+cmVtb3Zl
UHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlQ29sb3IsIGVjKTsKLSAgICAgICAg
QVNTRVJUKGVjID09IDApOwotICAgICAgICBpZiAoaW50IGtleXdvcmRTaXplID0gbV9ub2RlLT5j
b21wdXRlZFN0eWxlKCktPmZvbnREZXNjcmlwdGlvbigpLmtleXdvcmRTaXplKCkpCi0gICAgICAg
ICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlGb250U2l6ZSwgY3NzSWRlbnRpZmll
ckZvckZvbnRTaXplS2V5d29yZChrZXl3b3JkU2l6ZSkpOwotICAgIH0KLSAgICByZXR1cm4gc3R5
bGUucmVsZWFzZSgpOwotfQotCiBQYXNzUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9u
PiBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmNvcHkoKSBjb25zdAogewogICAgIHJldHVy
biBjb3B5UHJvcGVydGllc0luU2V0KGNvbXB1dGVkUHJvcGVydGllcywgbnVtQ29tcHV0ZWRQcm9w
ZXJ0aWVzKTsKSW5kZXg6IFdlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5o
CShyZXZpc2lvbiA0NjgxNikKKysrIFdlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJh
dGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSw2IEBAIHB1YmxpYzoKICAgICBQYXNz
UmVmUHRyPENTU1ZhbHVlPiBnZXRTVkdQcm9wZXJ0eUNTU1ZhbHVlKGludCBwcm9wZXJ0eUlELCBF
VXBkYXRlTGF5b3V0KSBjb25zdDsKICNlbmRpZgogCi0gICAgUGFzc1JlZlB0cjxDU1NNdXRhYmxl
U3R5bGVEZWNsYXJhdGlvbj4gZGVwcmVjYXRlZENvcHlJbmhlcml0YWJsZVByb3BlcnRpZXMoKSBj
b25zdDsKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIGJvb2wgY3NzUHJvcGVydHlNYXRjaGVzKGNv
bnN0IENTU1Byb3BlcnR5KikgY29uc3Q7CiAKSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9BcHBseVN0
eWxlQ29tbWFuZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVD
b21tYW5kLmNwcAkocmV2aXNpb24gNDY4MTYpCisrKyBXZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHls
ZUNvbW1hbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMzQsNiArMzM0LDk1IEBAIFJlZlB0cjxD
U1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gZ2V0UHIKIAogICAgIHJldHVybiByZXN1bHQ7CiB9
CisKKy8vIEVkaXRpbmcgc3R5bGUgcHJvcGVydGllcyBtdXN0IGJlIHByZXNlcnZlZCBkdXJpbmcg
ZWRpdGluZyBvcGVyYXRpb24uCisvLyBlLmcuIHdoZW4gYSB1c2VyIGluc2VydHMgYSBuZXcgcGFy
YWdyYXBoLCBhbGwgcHJvcGVydGllcyBsaXN0ZWQgaGVyZSBtdXN0IGJlIGNvcGllZCB0byB0aGUg
bmV3IHBhcmFncmFwaC4KK3N0YXRpYyBjb25zdCBpbnQgZWRpdGluZ1N0eWxlUHJvcGVydGllc1td
ID0geworICAgIENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yLAorCisgICAgQ1NTUHJvcGVydHlC
b3JkZXJDb2xsYXBzZSwKKyAgICBDU1NQcm9wZXJ0eUNvbG9yLAorICAgIENTU1Byb3BlcnR5Rm9u
dEZhbWlseSwKKyAgICBDU1NQcm9wZXJ0eUZvbnRTaXplLAorICAgIENTU1Byb3BlcnR5Rm9udFN0
eWxlLAorICAgIENTU1Byb3BlcnR5Rm9udFZhcmlhbnQsCisgICAgQ1NTUHJvcGVydHlGb250V2Vp
Z2h0LAorICAgIENTU1Byb3BlcnR5TGV0dGVyU3BhY2luZywKKyAgICBDU1NQcm9wZXJ0eUxpbmVI
ZWlnaHQsCisgICAgQ1NTUHJvcGVydHlPcnBoYW5zLAorICAgIENTU1Byb3BlcnR5VGV4dEFsaWdu
LAorICAgIENTU1Byb3BlcnR5VGV4dEluZGVudCwKKyAgICBDU1NQcm9wZXJ0eVRleHRUcmFuc2Zv
cm0sCisgICAgQ1NTUHJvcGVydHlXaGl0ZVNwYWNlLAorICAgIENTU1Byb3BlcnR5V2lkb3dzLAor
ICAgIENTU1Byb3BlcnR5V29yZFNwYWNpbmcsCisgICAgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJI
b3Jpem9udGFsU3BhY2luZywKKyAgICBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclZlcnRpY2FsU3Bh
Y2luZywKKyAgICBDU1NQcm9wZXJ0eVdlYmtpdFRleHREZWNvcmF0aW9uc0luRWZmZWN0LAorICAg
IENTU1Byb3BlcnR5V2Via2l0VGV4dEZpbGxDb2xvciwKKyAgICBDU1NQcm9wZXJ0eVdlYmtpdFRl
eHRTaXplQWRqdXN0LAorICAgIENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZUNvbG9yLAorICAg
IENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZVdpZHRoLAorfTsKK3NpemVfdCBudW1FZGl0aW5n
U3R5bGVQcm9wZXJ0aWVzID0gc2l6ZW9mKGVkaXRpbmdTdHlsZVByb3BlcnRpZXMpL3NpemVvZihl
ZGl0aW5nU3R5bGVQcm9wZXJ0aWVzWzBdKTsKKworUGFzc1JlZlB0cjxDU1NNdXRhYmxlU3R5bGVE
ZWNsYXJhdGlvbj4gZWRpdGluZ1N0eWxlQXRQb3NpdGlvbihQb3NpdGlvbiBwb3MsIFNob3VsZElu
Y2x1ZGVUeXBpbmdTdHlsZSBzaG91bGRJbmNsdWRlVHlwaW5nU3R5bGUpCit7CisgICAgUmVmUHRy
PENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbj4gY29tcHV0ZWRTdHlsZUF0UG9zaXRpb24gPSBw
b3MuY29tcHV0ZWRTdHlsZSgpOworICAgIFJlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlv
bj4gc3R5bGUgPSBjb21wdXRlZFN0eWxlQXRQb3NpdGlvbi0+Y29weVByb3BlcnRpZXNJblNldChl
ZGl0aW5nU3R5bGVQcm9wZXJ0aWVzLCBudW1FZGl0aW5nU3R5bGVQcm9wZXJ0aWVzKTsKKworICAg
IGlmIChzdHlsZSAmJiBwb3Mubm9kZSgpICYmIHBvcy5ub2RlKCktPmNvbXB1dGVkU3R5bGUoKSkg
eworICAgICAgICBSZW5kZXJTdHlsZSogcmVuZGVyU3R5bGUgPSBwb3Mubm9kZSgpLT5jb21wdXRl
ZFN0eWxlKCk7CisgICAgICAgIC8vIElmIGEgbm9kZSdzIHRleHQgZmlsbCBjb2xvciBpcyBpbnZh
bGlkLCB0aGVuIGl0cyBjaGlsZHJlbiB1c2UgCisgICAgICAgIC8vIHRoZWlyIGZvbnQtY29sb3Ig
YXMgdGhlaXIgdGV4dCBmaWxsIGNvbG9yICh0aGV5IGRvbid0CisgICAgICAgIC8vIGluaGVyaXQg
aXQpLiAgTGlrZXdpc2UgZm9yIHN0cm9rZSBjb2xvci4KKyAgICAgICAgRXhjZXB0aW9uQ29kZSBl
YyA9IDA7CisgICAgICAgIGlmICghcmVuZGVyU3R5bGUtPnRleHRGaWxsQ29sb3IoKS5pc1ZhbGlk
KCkpCisgICAgICAgICAgICBzdHlsZS0+cmVtb3ZlUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRU
ZXh0RmlsbENvbG9yLCBlYyk7CisgICAgICAgIGlmICghcmVuZGVyU3R5bGUtPnRleHRTdHJva2VD
b2xvcigpLmlzVmFsaWQoKSkKKyAgICAgICAgICAgIHN0eWxlLT5yZW1vdmVQcm9wZXJ0eShDU1NQ
cm9wZXJ0eVdlYmtpdFRleHRTdHJva2VDb2xvciwgZWMpOworICAgICAgICBBU1NFUlQoZWMgPT0g
MCk7CisgICAgICAgIGlmIChyZW5kZXJTdHlsZS0+Zm9udERlc2NyaXB0aW9uKCkua2V5d29yZFNp
emUoKSkKKyAgICAgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRTaXpl
LCBjb21wdXRlZFN0eWxlQXRQb3NpdGlvbi0+Z2V0Rm9udFNpemVDU1NWYWx1ZVByZWZlcnJpbmdL
ZXl3b3JkKCktPmNzc1RleHQoKSk7CisgICAgfQorCisgICAgaWYgKHNob3VsZEluY2x1ZGVUeXBp
bmdTdHlsZSA9PSBJbmNsdWRlVHlwaW5nU3R5bGUpIHsKKyAgICAgICAgQ1NTTXV0YWJsZVN0eWxl
RGVjbGFyYXRpb24qIHR5cGluZ1N0eWxlID0gcG9zLm5vZGUoKS0+ZG9jdW1lbnQoKS0+ZnJhbWUo
KS0+dHlwaW5nU3R5bGUoKTsKKyAgICAgICAgaWYgKHR5cGluZ1N0eWxlKQorICAgICAgICAgICAg
c3R5bGUtPm1lcmdlKHR5cGluZ1N0eWxlKTsKKyAgICB9CisKKyAgICByZXR1cm4gc3R5bGUucmVs
ZWFzZSgpOworfQorCit2b2lkIHByZXBhcmVFZGl0aW5nU3R5bGVUb0FwcGx5QXQoQ1NTTXV0YWJs
ZVN0eWxlRGVjbGFyYXRpb24qIGVkaXRpbmdTdHlsZSwgUG9zaXRpb24gcG9zKQoreworICAgIC8v
IFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpoYW5kbGVTdHlsZVNwYW5zKCkgcmVxdWllcnMgdGhh
dCB0aGlzIGZ1bmN0aW9uIG9ubHkgcmVtb3ZlcyB0aGUgZWRpdGluZyBzdHlsZS4KKyAgICAvLyBJ
ZiB0aGlzIGZ1bmN0aW9uIHdhcyBtb2RpZmllZCBpbiB0aGUgZnV0dXJldG8gZGVsZXRlIGFsbCBy
ZWR1bmRhbnQgcHJvcGVydGllcywgdGhlbiBhZGQgYSBib29sZWFuIHZhbHVlIHRvIGluZGljYXRl
CisgICAgLy8gd2hpY2ggb25lIG9mIGVkaXRpbmdTdHlsZUF0UG9zaXRpb24gb3IgY29tcHV0ZWRT
dHlsZSBpcyBjYWxsZWQuCisgICAgUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBz
dHlsZSA9IGVkaXRpbmdTdHlsZUF0UG9zaXRpb24ocG9zKTsKKyAgICBzdHlsZS0+ZGlmZihlZGl0
aW5nU3R5bGUpOworCisgICAgLy8gaWYgYWxwaGEgdmFsdWUgaXMgemVybywgd2UgZG9uJ3QgYWRk
IHRoZSBiYWNrZ3JvdW5kIGNvbG9yLgorICAgIFJlZlB0cjxDU1NWYWx1ZT4gYmFja2dyb3VuZENv
bG9yID0gZWRpdGluZ1N0eWxlLT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5QmFja2dy
b3VuZENvbG9yKTsKKyAgICBpZiAoYmFja2dyb3VuZENvbG9yICYmIGJhY2tncm91bmRDb2xvci0+
aXNQcmltaXRpdmVWYWx1ZSgpKSB7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRp
dmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4oYmFja2dyb3VuZENvbG9y
LmdldCgpKTsKKyAgICAgICAgQ29sb3IgY29sb3IgPSBDb2xvcihwcmltaXRpdmVWYWx1ZS0+Z2V0
UkdCQTMyVmFsdWUoKSk7CisgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWM7CisgICAgICAgIGlmIChj
b2xvci5hbHBoYSgpID09IDApCisgICAgICAgICAgICBlZGl0aW5nU3R5bGUtPnJlbW92ZVByb3Bl
cnR5KENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yLCBlYyk7CisgICAgfQorfQorCit2b2lkIHJl
bW92ZVN0eWxlc0FkZGVkQnlOb2RlKENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKiBlZGl0aW5n
U3R5bGUsIE5vZGUqIG5vZGUpCit7CisgICAgQVNTRVJUKG5vZGUpOworICAgIEFTU0VSVChub2Rl
LT5wYXJlbnROb2RlKCkpOworICAgIFJlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4g
cGFyZW50U3R5bGUgPSBlZGl0aW5nU3R5bGVBdFBvc2l0aW9uKFBvc2l0aW9uKG5vZGUtPnBhcmVu
dE5vZGUoKSwgMCkpOworICAgIFJlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gc3R5
bGUgPSBlZGl0aW5nU3R5bGVBdFBvc2l0aW9uKFBvc2l0aW9uKG5vZGUsIDApKTsKKyAgICBwYXJl
bnRTdHlsZS0+ZGlmZihzdHlsZS5nZXQoKSk7CisgICAgc3R5bGUtPmRpZmYoZWRpdGluZ1N0eWxl
KTsKK30KICAgICAKIEFwcGx5U3R5bGVDb21tYW5kOjpBcHBseVN0eWxlQ29tbWFuZChEb2N1bWVu
dCogZG9jdW1lbnQsIENTU1N0eWxlRGVjbGFyYXRpb24qIHN0eWxlLCBFZGl0QWN0aW9uIGVkaXRp
bmdBY3Rpb24sIEVQcm9wZXJ0eUxldmVsIHByb3BlcnR5TGV2ZWwpCiAgICAgOiBDb21wb3NpdGVF
ZGl0Q29tbWFuZChkb2N1bWVudCkKSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29t
bWFuZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5o
CShyZXZpc2lvbiA0NjgxNikKKysrIFdlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xMTYsNiArMTE2LDE1IEBAIGJvb2wgaXNTdHlsZVNwYW4oY29u
c3QgTm9kZSopOwogUGFzc1JlZlB0cjxIVE1MRWxlbWVudD4gY3JlYXRlU3R5bGVTcGFuRWxlbWVu
dChEb2N1bWVudCopOwogUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBnZXRQcm9w
ZXJ0aWVzTm90SW5Db21wdXRlZFN0eWxlKENTU1N0eWxlRGVjbGFyYXRpb24qIHN0eWxlLCBDU1ND
b21wdXRlZFN0eWxlRGVjbGFyYXRpb24qIGNvbXB1dGVkU3R5bGUpOwogCitlbnVtIFNob3VsZElu
Y2x1ZGVUeXBpbmdTdHlsZSB7CisgICAgSW5jbHVkZVR5cGluZ1N0eWxlLAorICAgIElnbm9yZVR5
cGluZ1N0eWxlCit9OworCitQYXNzUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBl
ZGl0aW5nU3R5bGVBdFBvc2l0aW9uKFBvc2l0aW9uLCBTaG91bGRJbmNsdWRlVHlwaW5nU3R5bGUg
PSBJZ25vcmVUeXBpbmdTdHlsZSk7Cit2b2lkIHByZXBhcmVFZGl0aW5nU3R5bGVUb0FwcGx5QXQo
Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qLCBQb3NpdGlvbik7Cit2b2lkIHJlbW92ZVN0eWxl
c0FkZGVkQnlOb2RlKENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKiwgTm9kZSopOworCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZgpJbmRleDogV2ViQ29yZS9lZGl0aW5nL0NvbXBv
c2l0ZUVkaXRDb21tYW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvQ29tcG9z
aXRlRWRpdENvbW1hbmQuY3BwCShyZXZpc2lvbiA0NjgxNikKKysrIFdlYkNvcmUvZWRpdGluZy9D
b21wb3NpdGVFZGl0Q29tbWFuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgwMiw3ICs4MDIsNyBA
QCB2b2lkIENvbXBvc2l0ZUVkaXRDb21tYW5kOjptb3ZlUGFyYWdyYXBoCiAgICAgLy8gdG9vLCA8
ZGl2PjxiPjxicj48L2I+PC9kaXY+IGZvciBleGFtcGxlLiAgU2F2ZSBpdCBzbyB0aGF0IHdlIGNh
biBwcmVzZXJ2ZSBpdCBsYXRlci4KICAgICBSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRp
b24+IHN0eWxlSW5FbXB0eVBhcmFncmFwaDsKICAgICBpZiAoc3RhcnRPZlBhcmFncmFwaFRvTW92
ZSA9PSBlbmRPZlBhcmFncmFwaFRvTW92ZSAmJiBwcmVzZXJ2ZVN0eWxlKSB7Ci0gICAgICAgIHN0
eWxlSW5FbXB0eVBhcmFncmFwaCA9IHN0eWxlQXRQb3NpdGlvbihzdGFydE9mUGFyYWdyYXBoVG9N
b3ZlLmRlZXBFcXVpdmFsZW50KCkpOworICAgICAgICBzdHlsZUluRW1wdHlQYXJhZ3JhcGggPSBl
ZGl0aW5nU3R5bGVBdFBvc2l0aW9uKHN0YXJ0T2ZQYXJhZ3JhcGhUb01vdmUuZGVlcEVxdWl2YWxl
bnQoKSwgSW5jbHVkZVR5cGluZ1N0eWxlKTsKICAgICAgICAgLy8gVGhlIG1vdmVkIHBhcmFncmFw
aCBzaG91bGQgYXNzdW1lIHRoZSBibG9jayBzdHlsZSBvZiB0aGUgZGVzdGluYXRpb24uCiAgICAg
ICAgIHN0eWxlSW5FbXB0eVBhcmFncmFwaC0+cmVtb3ZlQmxvY2tQcm9wZXJ0aWVzKCk7CiAgICAg
fQpAQCAtODkxLDcgKzg5MSw3IEBAIGJvb2wgQ29tcG9zaXRlRWRpdENvbW1hbmQ6OmJyZWFrT3V0
T2ZFbXAKICAgICBpZiAoIWVtcHR5TGlzdEl0ZW0pCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgCi0gICAgUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBzdHlsZSA9IHN0
eWxlQXRQb3NpdGlvbihlbmRpbmdTZWxlY3Rpb24oKS5zdGFydCgpKTsKKyAgICBSZWZQdHI8Q1NT
TXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IHN0eWxlID0gZWRpdGluZ1N0eWxlQXRQb3NpdGlvbihl
bmRpbmdTZWxlY3Rpb24oKS5zdGFydCgpLCBJbmNsdWRlVHlwaW5nU3R5bGUpOwogCiAgICAgTm9k
ZSogbGlzdE5vZGUgPSBlbXB0eUxpc3RJdGVtLT5wYXJlbnROb2RlKCk7CiAgICAgCkluZGV4OiBX
ZWJDb3JlL2VkaXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9lZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCShyZXZpc2lvbiA0Njgx
NikKKysrIFdlYkNvcmUvZWRpdGluZy9EZWxldGVTZWxlY3Rpb25Db21tYW5kLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDQsNiArNDQsNyBAQAogI2luY2x1ZGUgIlRleHQuaCIKICNpbmNsdWRlICJU
ZXh0SXRlcmF0b3IuaCIKICNpbmNsdWRlICJ2aXNpYmxlX3VuaXRzLmgiCisjaW5jbHVkZSAiQXBw
bHlTdHlsZUNvbW1hbmQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0yNTksMTEgKzI2
MCw4IEBAIHN0YXRpYyB2b2lkIHJlbW92ZUVuY2xvc2luZ0FuY2hvclN0eWxlKEMKICAgICBOb2Rl
KiBlbmNsb3NpbmdBbmNob3IgPSBlbmNsb3NpbmdBbmNob3JFbGVtZW50KHBvc2l0aW9uKTsKICAg
ICBpZiAoIWVuY2xvc2luZ0FuY2hvciB8fCAhZW5jbG9zaW5nQW5jaG9yLT5wYXJlbnROb2RlKCkp
CiAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIAotICAgIFJlZlB0cjxDU1NNdXRhYmxlU3R5
bGVEZWNsYXJhdGlvbj4gcGFyZW50U3R5bGUgPSBQb3NpdGlvbihlbmNsb3NpbmdBbmNob3ItPnBh
cmVudE5vZGUoKSwgMCkuY29tcHV0ZWRTdHlsZSgpLT5kZXByZWNhdGVkQ29weUluaGVyaXRhYmxl
UHJvcGVydGllcygpOwotICAgIFJlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gYW5j
aG9yU3R5bGUgPSBQb3NpdGlvbihlbmNsb3NpbmdBbmNob3IsIDApLmNvbXB1dGVkU3R5bGUoKS0+
ZGVwcmVjYXRlZENvcHlJbmhlcml0YWJsZVByb3BlcnRpZXMoKTsKLSAgICBwYXJlbnRTdHlsZS0+
ZGlmZihhbmNob3JTdHlsZS5nZXQoKSk7Ci0gICAgYW5jaG9yU3R5bGUtPmRpZmYoc3R5bGUpOwor
ICAgIAorICAgIHJlbW92ZVN0eWxlc0FkZGVkQnlOb2RlKHN0eWxlLCBlbmNsb3NpbmdBbmNob3Ip
OwogfQogCiB2b2lkIERlbGV0ZVNlbGVjdGlvbkNvbW1hbmQ6OnNhdmVUeXBpbmdTdHlsZVN0YXRl
KCkKQEAgLTI3NywxOSArMjc1LDE3IEBAIHZvaWQgRGVsZXRlU2VsZWN0aW9uQ29tbWFuZDo6c2F2
ZVR5cGluZ1MKICAgICAvLyBlYXJseSByZXR1cm4gaW4gY2FsY3VsYXRlVHlwaW5nU3R5bGVBZnRl
ckRlbGV0ZSkuCiAgICAgaWYgKG1fdXBzdHJlYW1TdGFydC5ub2RlKCkgPT0gbV9kb3duc3RyZWFt
RW5kLm5vZGUoKSAmJiBtX3Vwc3RyZWFtU3RhcnQubm9kZSgpLT5pc1RleHROb2RlKCkpCiAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgCisKICAgICAvLyBGaWd1cmUgb3V0IHRoZSB0eXBpbmcgc3R5
bGUgaW4gZWZmZWN0IGJlZm9yZSB0aGUgZGVsZXRlIGlzIGRvbmUuCi0gICAgUmVmUHRyPENTU0Nv
bXB1dGVkU3R5bGVEZWNsYXJhdGlvbj4gY29tcHV0ZWRTdHlsZSA9IHBvc2l0aW9uQmVmb3JlVGFi
U3BhbihtX3NlbGVjdGlvblRvRGVsZXRlLnN0YXJ0KCkpLmNvbXB1dGVkU3R5bGUoKTsKLSAgICBt
X3R5cGluZ1N0eWxlID0gY29tcHV0ZWRTdHlsZS0+ZGVwcmVjYXRlZENvcHlJbmhlcml0YWJsZVBy
b3BlcnRpZXMoKTsKLSAgICAKKyAgICBtX3R5cGluZ1N0eWxlID0gZWRpdGluZ1N0eWxlQXRQb3Np
dGlvbihwb3NpdGlvbkJlZm9yZVRhYlNwYW4obV9zZWxlY3Rpb25Ub0RlbGV0ZS5zdGFydCgpKSk7
CisKICAgICByZW1vdmVFbmNsb3NpbmdBbmNob3JTdHlsZShtX3R5cGluZ1N0eWxlLmdldCgpLCBt
X3NlbGVjdGlvblRvRGVsZXRlLnN0YXJ0KCkpOwotICAgIAorCiAgICAgLy8gSWYgd2UncmUgZGVs
ZXRpbmcgaW50byBhIE1haWwgYmxvY2txdW90ZSwgc2F2ZSB0aGUgc3R5bGUgYXQgZW5kKCkgaW5z
dGVhZCBvZiBzdGFydCgpCiAgICAgLy8gV2UnbGwgdXNlIHRoaXMgbGF0ZXIgaW4gY29tcHV0ZVR5
cGluZ1N0eWxlQWZ0ZXJEZWxldGUgaWYgd2UgZW5kIHVwIG91dHNpZGUgb2YgYSBNYWlsIGJsb2Nr
cXVvdGUKLSAgICBpZiAobmVhcmVzdE1haWxCbG9ja3F1b3RlKG1fc2VsZWN0aW9uVG9EZWxldGUu
c3RhcnQoKS5ub2RlKCkpKSB7Ci0gICAgICAgIGNvbXB1dGVkU3R5bGUgPSBtX3NlbGVjdGlvblRv
RGVsZXRlLmVuZCgpLmNvbXB1dGVkU3R5bGUoKTsKLSAgICAgICAgbV9kZWxldGVJbnRvQmxvY2tx
dW90ZVN0eWxlID0gY29tcHV0ZWRTdHlsZS0+ZGVwcmVjYXRlZENvcHlJbmhlcml0YWJsZVByb3Bl
cnRpZXMoKTsKLSAgICB9IGVsc2UKKyAgICBpZiAobmVhcmVzdE1haWxCbG9ja3F1b3RlKG1fc2Vs
ZWN0aW9uVG9EZWxldGUuc3RhcnQoKS5ub2RlKCkpKQorICAgICAgICBtX2RlbGV0ZUludG9CbG9j
a3F1b3RlU3R5bGUgPSBlZGl0aW5nU3R5bGVBdFBvc2l0aW9uKG1fc2VsZWN0aW9uVG9EZWxldGUu
ZW5kKCkpOworICAgIGVsc2UKICAgICAgICAgbV9kZWxldGVJbnRvQmxvY2txdW90ZVN0eWxlID0g
MDsKIH0KIApAQCAtNjY4LDkgKzY2NCw4IEBAIHZvaWQgRGVsZXRlU2VsZWN0aW9uQ29tbWFuZDo6
Y2FsY3VsYXRlVHkKICAgICBpZiAobV9kZWxldGVJbnRvQmxvY2txdW90ZVN0eWxlICYmICFuZWFy
ZXN0TWFpbEJsb2NrcXVvdGUobV9lbmRpbmdQb3NpdGlvbi5ub2RlKCkpKQogICAgICAgICBtX3R5
cGluZ1N0eWxlID0gbV9kZWxldGVJbnRvQmxvY2txdW90ZVN0eWxlOwogICAgIG1fZGVsZXRlSW50
b0Jsb2NrcXVvdGVTdHlsZSA9IDA7Ci0gICAgCi0gICAgUmVmUHRyPENTU0NvbXB1dGVkU3R5bGVE
ZWNsYXJhdGlvbj4gZW5kaW5nU3R5bGUgPSBjb21wdXRlZFN0eWxlKG1fZW5kaW5nUG9zaXRpb24u
bm9kZSgpKTsKLSAgICBlbmRpbmdTdHlsZS0+ZGlmZihtX3R5cGluZ1N0eWxlLmdldCgpKTsKKwor
ICAgIHByZXBhcmVFZGl0aW5nU3R5bGVUb0FwcGx5QXQobV90eXBpbmdTdHlsZS5nZXQoKSwgbV9l
bmRpbmdQb3NpdGlvbik7CiAgICAgaWYgKCFtX3R5cGluZ1N0eWxlLT5sZW5ndGgoKSkKICAgICAg
ICAgbV90eXBpbmdTdHlsZSA9IDA7CiAgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVFbmQobV9l
bmRpbmdQb3NpdGlvbik7CkluZGV4OiBXZWJDb3JlL2VkaXRpbmcvRWRpdENvbW1hbmQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvZWRpdGluZy9FZGl0Q29tbWFuZC5jcHAJKHJldmlzaW9uIDQ2
ODE2KQorKysgV2ViQ29yZS9lZGl0aW5nL0VkaXRDb21tYW5kLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTk1LDE4ICsxOTUsNiBAQCBib29sIEVkaXRDb21tYW5kOjppc1R5cGluZ0NvbW1hbmQoKSBj
b25zCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1QYXNzUmVmUHRyPENTU011dGFibGVTdHlsZURl
Y2xhcmF0aW9uPiBFZGl0Q29tbWFuZDo6c3R5bGVBdFBvc2l0aW9uKGNvbnN0IFBvc2l0aW9uICZw
b3MpCi17Ci0gICAgUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBzdHlsZSA9IHBv
c2l0aW9uQmVmb3JlVGFiU3Bhbihwb3MpLmNvbXB1dGVkU3R5bGUoKS0+ZGVwcmVjYXRlZENvcHlJ
bmhlcml0YWJsZVByb3BlcnRpZXMoKTsKLSAKLSAgICAvLyBGSVhNRTogSXQgc2VlbXMgbWlzbGVh
ZGluZyB0byBhbHNvIGluY2x1ZGUgdGhlIHR5cGluZyBzdHlsZSB3aGVuIHJldHVybmluZyB0aGUg
c3R5bGUgYXQgc29tZSBhcmJpdHJhcnkKLSAgICAvLyBwb3NpdGlvbiBpbiB0aGUgZG9jdW1lbnQu
Ci0gICAgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qIHR5cGluZ1N0eWxlID0gZG9jdW1lbnQo
KS0+ZnJhbWUoKS0+dHlwaW5nU3R5bGUoKTsKLSAgICBpZiAodHlwaW5nU3R5bGUpCi0gICAgICAg
IHN0eWxlLT5tZXJnZSh0eXBpbmdTdHlsZSk7Ci0KLSAgICByZXR1cm4gc3R5bGUucmVsZWFzZSgp
OwotfQogCiB2b2lkIEVkaXRDb21tYW5kOjp1cGRhdGVMYXlvdXQoKSBjb25zdAogewpJbmRleDog
V2ViQ29yZS9lZGl0aW5nL0VkaXRDb21tYW5kLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0
aW5nL0VkaXRDb21tYW5kLmgJKHJldmlzaW9uIDQ2ODE2KQorKysgV2ViQ29yZS9lZGl0aW5nL0Vk
aXRDb21tYW5kLmgJKHdvcmtpbmcgY29weSkKQEAgLTY2LDcgKzY2LDYgQEAgcHJvdGVjdGVkOgog
ICAgIHZvaWQgc2V0U3RhcnRpbmdTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYpOwog
ICAgIHZvaWQgc2V0RW5kaW5nU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mKTsKIAot
ICAgIFBhc3NSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IHN0eWxlQXRQb3NpdGlv
bihjb25zdCBQb3NpdGlvbiYpOwogICAgIHZvaWQgdXBkYXRlTGF5b3V0KCkgY29uc3Q7CiAKIHBy
aXZhdGU6CkluZGV4OiBXZWJDb3JlL2VkaXRpbmcvSW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yQ29t
bWFuZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL0luc2VydFBhcmFncmFwaFNl
cGFyYXRvckNvbW1hbmQuY3BwCShyZXZpc2lvbiA0NjgxNikKKysrIFdlYkNvcmUvZWRpdGluZy9J
bnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JDb21tYW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgs
NiArMzgsNyBAQAogI2luY2x1ZGUgIlRleHQuaCIKICNpbmNsdWRlICJodG1sZWRpdGluZy5oIgog
I2luY2x1ZGUgInZpc2libGVfdW5pdHMuaCIKKyNpbmNsdWRlICJBcHBseVN0eWxlQ29tbWFuZC5o
IgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTYzLDcgKzY0LDcgQEAgdm9pZCBJbnNlcnRQ
YXJhZ3JhcGhTZXBhcmF0b3JDb21tYW5kOjpjYQogICAgIGlmICghaXNTdGFydE9mUGFyYWdyYXBo
KHZpc2libGVQb3MpICYmICFpc0VuZE9mUGFyYWdyYXBoKHZpc2libGVQb3MpKQogICAgICAgICBy
ZXR1cm47CiAgICAgCi0gICAgbV9zdHlsZSA9IHN0eWxlQXRQb3NpdGlvbihwb3MpOworICAgIG1f
c3R5bGUgPSBlZGl0aW5nU3R5bGVBdFBvc2l0aW9uKHBvcywgSW5jbHVkZVR5cGluZ1N0eWxlKTsK
IH0KIAogdm9pZCBJbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JDb21tYW5kOjphcHBseVN0eWxlQWZ0
ZXJJbnNlcnRpb24oTm9kZSogb3JpZ2luYWxFbmNsb3NpbmdCbG9jaykKQEAgLTc5LDggKzgwLDkg
QEAgdm9pZCBJbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JDb21tYW5kOjphcAogICAgICAgICAKICAg
ICBpZiAoIW1fc3R5bGUpCiAgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBwcmVwYXJlRWRpdGlu
Z1N0eWxlVG9BcHBseUF0KG1fc3R5bGUuZ2V0KCksIGVuZGluZ1NlbGVjdGlvbigpLnN0YXJ0KCkp
OwogCi0gICAgY29tcHV0ZWRTdHlsZShlbmRpbmdTZWxlY3Rpb24oKS5zdGFydCgpLm5vZGUoKSkt
PmRpZmYobV9zdHlsZS5nZXQoKSk7CiAgICAgaWYgKG1fc3R5bGUtPmxlbmd0aCgpID4gMCkKICAg
ICAgICAgYXBwbHlTdHlsZShtX3N0eWxlLmdldCgpKTsKIH0KSW5kZXg6IFdlYkNvcmUvZWRpdGlu
Zy9SZW1vdmVGb3JtYXRDb21tYW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcv
UmVtb3ZlRm9ybWF0Q29tbWFuZC5jcHAJKHJldmlzaW9uIDQ2ODE2KQorKysgV2ViQ29yZS9lZGl0
aW5nL1JlbW92ZUZvcm1hdENvbW1hbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw3
IEBACiAjaW5jbHVkZSAiU2VsZWN0aW9uQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIlRleHRJdGVy
YXRvci5oIgogI2luY2x1ZGUgIlR5cGluZ0NvbW1hbmQuaCIKKyNpbmNsdWRlICJBcHBseVN0eWxl
Q29tbWFuZC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTU1LDggKzU2LDggQEAgdm9p
ZCBSZW1vdmVGb3JtYXRDb21tYW5kOjpkb0FwcGx5KCkKICAgICAvLyBHZXQgdGhlIGRlZmF1bHQg
c3R5bGUgZm9yIHRoaXMgZWRpdGFibGUgcm9vdCwgaXQncyB0aGUgc3R5bGUgdGhhdCB3ZSdsbCBn
aXZlIHRoZQogICAgIC8vIGNvbnRlbnQgdGhhdCB3ZSdyZSBvcGVyYXRpbmcgb24uCiAgICAgTm9k
ZSogcm9vdCA9IGZyYW1lLT5zZWxlY3Rpb24oKS0+cm9vdEVkaXRhYmxlRWxlbWVudCgpOwotICAg
IFJlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gZGVmYXVsdFN0eWxlID0gY29tcHV0
ZWRTdHlsZShyb290KS0+ZGVwcmVjYXRlZENvcHlJbmhlcml0YWJsZVByb3BlcnRpZXMoKTsKLSAg
ICAKKyAgICBSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IGRlZmF1bHRTdHlsZSA9
IGVkaXRpbmdTdHlsZUF0UG9zaXRpb24oUG9zaXRpb24ocm9vdCwgMCkpOworCiAgICAgLy8gRGVs
ZXRlIHRoZSBzZWxlY3RlZCBjb250ZW50LgogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYmUgYWJs
ZSB0byBsZWF2ZSB0aGlzIHRvIGluc2VydFRleHQsIGJ1dCBpdHMgZGVsZXRlIG9wZXJhdGlvbgog
ICAgIC8vIGRvZXNuJ3QgcHJlc2VydmUgdGhlIHN0eWxlIHdlJ3JlIGFib3V0IHRvIHNldC4KSW5k
ZXg6IFdlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcAkocmV2aXNp
b24gNDY4MTYpCisrKyBXZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01NDksOCArNTQ5LDkgQEAgc3RhdGljIGJvb2wgaGFuZGxlU3R5
bGVTcGFuc0JlZm9yZUluc2VydAogICAgIAogICAgIE5vZGUqIHNvdXJjZURvY3VtZW50U3R5bGVT
cGFuID0gdG9wTm9kZTsKICAgICBSZWZQdHI8Tm9kZT4gY29waWVkUmFuZ2VTdHlsZVNwYW4gPSBz
b3VyY2VEb2N1bWVudFN0eWxlU3Bhbi0+Zmlyc3RDaGlsZCgpOwotICAgIAotICAgIFJlZlB0cjxD
U1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gc3R5bGVBdEluc2VydGlvblBvcyA9IHJhbmdlQ29t
cGxpYW50RXF1aXZhbGVudChpbnNlcnRpb25Qb3MpLmNvbXB1dGVkU3R5bGUoKS0+ZGVwcmVjYXRl
ZENvcHlJbmhlcml0YWJsZVByb3BlcnRpZXMoKTsKKworICAgIFJlZlB0cjxDU1NNdXRhYmxlU3R5
bGVEZWNsYXJhdGlvbj4gc3R5bGVBdEluc2VydGlvblBvcyA9IGVkaXRpbmdTdHlsZUF0UG9zaXRp
b24ocmFuZ2VDb21wbGlhbnRFcXVpdmFsZW50KGluc2VydGlvblBvcykpOworCiAgICAgU3RyaW5n
IHN0eWxlVGV4dCA9IHN0eWxlQXRJbnNlcnRpb25Qb3MtPmNzc1RleHQoKTsKICAgICAKICAgICBp
ZiAoc3R5bGVUZXh0ID09IHN0YXRpY19jYXN0PEVsZW1lbnQqPihzb3VyY2VEb2N1bWVudFN0eWxl
U3BhbiktPmdldEF0dHJpYnV0ZShzdHlsZUF0dHIpKSB7CkBAIC02MDYsOCArNjA3LDggQEAgdm9p
ZCBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6aGFuZGxlU3R5bAogICAgIC8vIHN0eWxlcyBmcm9t
IGJsb2NrcXVvdGVOb2RlIGFyZSBhbGxvd2VkIHRvIG92ZXJyaWRlIHRob3NlIGZyb20gdGhlIHNv
dXJjZSBkb2N1bWVudCwgc2VlIDxyZGFyOi8vcHJvYmxlbS80OTMwOTg2PiBhbmQgPHJkYXI6Ly9w
cm9ibGVtLzUwODkzMjc+LgogICAgIE5vZGUqIGJsb2NrcXVvdGVOb2RlID0gaXNNYWlsUGFzdGVB
c1F1b3RhdGlvbk5vZGUoY29udGV4dCkgPyBjb250ZXh0IDogbmVhcmVzdE1haWxCbG9ja3F1b3Rl
KGNvbnRleHQpOwogICAgIGlmIChibG9ja3F1b3RlTm9kZSkgewotICAgICAgICBSZWZQdHI8Q1NT
TXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IGJsb2NrcXVvdGVTdHlsZSA9IGNvbXB1dGVkU3R5bGUo
YmxvY2txdW90ZU5vZGUpLT5kZXByZWNhdGVkQ29weUluaGVyaXRhYmxlUHJvcGVydGllcygpOwot
ICAgICAgICBSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IHBhcmVudFN0eWxlID0g
Y29tcHV0ZWRTdHlsZShibG9ja3F1b3RlTm9kZS0+cGFyZW50Tm9kZSgpKS0+ZGVwcmVjYXRlZENv
cHlJbmhlcml0YWJsZVByb3BlcnRpZXMoKTsKKyAgICAgICAgUmVmUHRyPENTU011dGFibGVTdHls
ZURlY2xhcmF0aW9uPiBibG9ja3F1b3RlU3R5bGUgPSBlZGl0aW5nU3R5bGVBdFBvc2l0aW9uKFBv
c2l0aW9uKGJsb2NrcXVvdGVOb2RlLCAwKSk7CisgICAgICAgIFJlZlB0cjxDU1NNdXRhYmxlU3R5
bGVEZWNsYXJhdGlvbj4gcGFyZW50U3R5bGUgPSBlZGl0aW5nU3R5bGVBdFBvc2l0aW9uKFBvc2l0
aW9uKGJsb2NrcXVvdGVOb2RlLT5wYXJlbnROb2RlKCksIDApKTsKICAgICAgICAgcGFyZW50U3R5
bGUtPmRpZmYoYmxvY2txdW90ZVN0eWxlLmdldCgpKTsKIAogICAgICAgICBDU1NNdXRhYmxlU3R5
bGVEZWNsYXJhdGlvbjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gYmxvY2txdW90ZVN0eWxlLT5lbmQo
KTsKQEAgLTYxOCwxMCArNjE5LDEwIEBAIHZvaWQgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6Omhh
bmRsZVN0eWwKIAogICAgICAgICBjb250ZXh0ID0gYmxvY2txdW90ZU5vZGUtPnBhcmVudE5vZGUo
KTsKICAgICB9Ci0gICAgCi0gICAgUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBj
b250ZXh0U3R5bGUgPSBjb21wdXRlZFN0eWxlKGNvbnRleHQpLT5kZXByZWNhdGVkQ29weUluaGVy
aXRhYmxlUHJvcGVydGllcygpOwotICAgIGNvbnRleHRTdHlsZS0+ZGlmZihzb3VyY2VEb2N1bWVu
dFN0eWxlLmdldCgpKTsKLSAgICAKKworICAgIC8vIFRoaXMgb3BlcmF0aW9uIHJlcXVpcmVzIHRo
YXQgb25seSBlZGl0aW5nIHN0eWxlcyB0byBiZSByZW1vdmVkIGZyb20gc291cmNlRG9jdW1lbnRT
dHlsZS4KKyAgICBwcmVwYXJlRWRpdGluZ1N0eWxlVG9BcHBseUF0KHNvdXJjZURvY3VtZW50U3R5
bGUuZ2V0KCksIFBvc2l0aW9uKGNvbnRleHQsIDApKTsKKwogICAgIC8vIFJlbW92ZSBibG9jayBw
cm9wZXJ0aWVzIGluIHRoZSBzcGFuJ3Mgc3R5bGUuIFRoaXMgcHJldmVudHMgcHJvcGVydGllcyB0
aGF0IHByb2JhYmx5IGhhdmUgbm8gZWZmZWN0IAogICAgIC8vIGN1cnJlbnRseSBmcm9tIGFmZmVj
dGluZyBibG9ja3MgbGF0ZXIgaWYgdGhlIHN0eWxlIGlzIGNsb25lZCBmb3IgYSBuZXcgYmxvY2sg
ZWxlbWVudCBkdXJpbmcgYSBmdXR1cmUgCiAgICAgLy8gZWRpdGluZyBvcGVyYXRpb24uCkBAIC02
NTUsOSArNjU2LDggQEAgdm9pZCBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6aGFuZGxlU3R5bAog
ICAgIAogICAgIC8vIFJlbW92ZSByZWR1bmRhbnQgc3R5bGVzLgogICAgIGNvbnRleHQgPSBjb3Bp
ZWRSYW5nZVN0eWxlU3Bhbi0+cGFyZW50Tm9kZSgpOwotICAgIGNvbnRleHRTdHlsZSA9IGNvbXB1
dGVkU3R5bGUoY29udGV4dCktPmRlcHJlY2F0ZWRDb3B5SW5oZXJpdGFibGVQcm9wZXJ0aWVzKCk7
Ci0gICAgY29udGV4dFN0eWxlLT5kaWZmKGNvcGllZFJhbmdlU3R5bGUuZ2V0KCkpOwotICAgIAor
ICAgIHByZXBhcmVFZGl0aW5nU3R5bGVUb0FwcGx5QXQoY29waWVkUmFuZ2VTdHlsZS5nZXQoKSwg
UG9zaXRpb24oY29udGV4dCwgMCkpOworCiAgICAgLy8gU2VlIHRoZSBjb21tZW50cyBhYm92ZSBh
Ym91dCByZW1vdmluZyBibG9jayBwcm9wZXJ0aWVzLgogICAgIGNvcGllZFJhbmdlU3R5bGUtPnJl
bW92ZUJsb2NrUHJvcGVydGllcygpOwogCkBAIC03MjUsNyArNzI1LDcgQEAgdm9pZCBSZXBsYWNl
U2VsZWN0aW9uQ29tbWFuZDo6ZG9BcHBseSgpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBp
ZiAobV9tYXRjaFN0eWxlKQotICAgICAgICBtX2luc2VydGlvblN0eWxlID0gc3R5bGVBdFBvc2l0
aW9uKHNlbGVjdGlvbi5zdGFydCgpKTsKKyAgICAgICAgbV9pbnNlcnRpb25TdHlsZSA9IGVkaXRp
bmdTdHlsZUF0UG9zaXRpb24oc2VsZWN0aW9uLnN0YXJ0KCksIEluY2x1ZGVUeXBpbmdTdHlsZSk7
CiAgICAgCiAgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVTdGFydCA9IHNlbGVjdGlvbi52aXNp
YmxlU3RhcnQoKTsKICAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZUVuZCA9IHNlbGVjdGlvbi52
aXNpYmxlRW5kKCk7CkluZGV4OiBXZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAkocmV2aXNpb24gNDY4MTYpCisrKyBXZWJD
b3JlL2VkaXRpbmcvbWFya3VwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTgsNiArNTgsNyBAQAog
I2luY2x1ZGUgImh0bWxlZGl0aW5nLmgiCiAjaW5jbHVkZSAidmlzaWJsZV91bml0cy5oIgogI2lu
Y2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKyNpbmNsdWRlICJBcHBseVN0eWxlQ29tbWFuZC5o
IgogCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCkBAIC0yOTEsMjAgKzI5MiwxNiBAQCBzdGF0aWMg
dm9pZCByZW1vdmVFbmNsb3NpbmdNYWlsQmxvY2txdW90CiAgICAgTm9kZSogYmxvY2txdW90ZSA9
IG5lYXJlc3RNYWlsQmxvY2txdW90ZShub2RlKTsKICAgICBpZiAoIWJsb2NrcXVvdGUgfHwgIWJs
b2NrcXVvdGUtPnBhcmVudE5vZGUoKSkKICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgCi0g
ICAgUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBwYXJlbnRTdHlsZSA9IFBvc2l0
aW9uKGJsb2NrcXVvdGUtPnBhcmVudE5vZGUoKSwgMCkuY29tcHV0ZWRTdHlsZSgpLT5kZXByZWNh
dGVkQ29weUluaGVyaXRhYmxlUHJvcGVydGllcygpOwotICAgIFJlZlB0cjxDU1NNdXRhYmxlU3R5
bGVEZWNsYXJhdGlvbj4gYmxvY2txdW90ZVN0eWxlID0gUG9zaXRpb24oYmxvY2txdW90ZSwgMCku
Y29tcHV0ZWRTdHlsZSgpLT5kZXByZWNhdGVkQ29weUluaGVyaXRhYmxlUHJvcGVydGllcygpOwot
ICAgIHBhcmVudFN0eWxlLT5kaWZmKGJsb2NrcXVvdGVTdHlsZS5nZXQoKSk7Ci0gICAgYmxvY2tx
dW90ZVN0eWxlLT5kaWZmKHN0eWxlKTsKKworICAgIHJlbW92ZVN0eWxlc0FkZGVkQnlOb2RlKHN0
eWxlLCBibG9ja3F1b3RlKTsKIH0KIAogc3RhdGljIHZvaWQgcmVtb3ZlRGVmYXVsdFN0eWxlcyhD
U1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiogc3R5bGUsIERvY3VtZW50KiBkb2N1bWVudCkKIHsK
ICAgICBpZiAoIWRvY3VtZW50IHx8ICFkb2N1bWVudC0+ZG9jdW1lbnRFbGVtZW50KCkpCiAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgICAgIAotICAgIFJlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNs
YXJhdGlvbj4gZG9jdW1lbnRTdHlsZSA9IGNvbXB1dGVkU3R5bGUoZG9jdW1lbnQtPmRvY3VtZW50
RWxlbWVudCgpKS0+ZGVwcmVjYXRlZENvcHlJbmhlcml0YWJsZVByb3BlcnRpZXMoKTsKLSAgICBk
b2N1bWVudFN0eWxlLT5kaWZmKHN0eWxlKTsKKworICAgIHByZXBhcmVFZGl0aW5nU3R5bGVUb0Fw
cGx5QXQoc3R5bGUsIFBvc2l0aW9uKGRvY3VtZW50LT5kb2N1bWVudEVsZW1lbnQoKSwgMCkpOwog
fQogCiBzdGF0aWMgYm9vbCBzaG91bGRBZGROYW1lc3BhY2VFbGVtKGNvbnN0IEVsZW1lbnQqIGVs
ZW0pCkBAIC0xMDA3LDcgKzEwMDQsNyBAQCBTdHJpbmcgY3JlYXRlTWFya3VwKGNvbnN0IFJhbmdl
KiByYW5nZSwgCiAgICAgLy8gQWRkIGEgd3JhcHBlciBzcGFuIHdpdGggdGhlIHN0eWxlcyB0aGF0
IGFsbCBvZiB0aGUgbm9kZXMgaW4gdGhlIG1hcmt1cCBpbmhlcml0LgogICAgIE5vZGUqIHBhcmVu
dE9mTGFzdENsb3NlZCA9IGxhc3RDbG9zZWQgPyBsYXN0Q2xvc2VkLT5wYXJlbnROb2RlKCkgOiAw
OwogICAgIGlmIChwYXJlbnRPZkxhc3RDbG9zZWQgJiYgcGFyZW50T2ZMYXN0Q2xvc2VkLT5yZW5k
ZXJlcigpKSB7Ci0gICAgICAgIFJlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gc3R5
bGUgPSBjb21wdXRlZFN0eWxlKHBhcmVudE9mTGFzdENsb3NlZCktPmRlcHJlY2F0ZWRDb3B5SW5o
ZXJpdGFibGVQcm9wZXJ0aWVzKCk7CisgICAgICAgIFJlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNs
YXJhdGlvbj4gc3R5bGUgPSBlZGl0aW5nU3R5bGVBdFBvc2l0aW9uKFBvc2l0aW9uKHBhcmVudE9m
TGFzdENsb3NlZCwgMCkpOwogCiAgICAgICAgIC8vIFN0eWxlcyB0aGF0IE1haWwgYmxvY2txdW90
ZXMgY29udHJpYnV0ZSBzaG91bGQgb25seSBiZSBwbGFjZWQgb24gdGhlIE1haWwgYmxvY2txdW90
ZSwgdG8gaGVscAogICAgICAgICAvLyB1cyBkaWZmZXJlbnRpYXRlIHRob3NlIHN0eWxlcyBmcm9t
IG9uZXMgdGhhdCB0aGUgdXNlciBoYXMgYXBwbGllZC4gIFRoaXMgaGVscHMgdXMKQEAgLTEwMzEs
OCArMTAyOCw4IEBAIFN0cmluZyBjcmVhdGVNYXJrdXAoY29uc3QgUmFuZ2UqIHJhbmdlLCAKICAg
ICAgICAgLy8gQWRkIGEgc3R5bGUgc3BhbiB3aXRoIHRoZSBkb2N1bWVudCdzIGRlZmF1bHQgc3R5
bGVzLiAgV2UgYWRkIHRoZXNlIGluIGEgc2VwYXJhdGUKICAgICAgICAgLy8gc3BhbiBzbyB0aGF0
IGF0IHBhc3RlIHRpbWUgd2UgY2FuIGRpZmZlcmVudGlhdGUgYmV0d2VlbiBkb2N1bWVudCBkZWZh
dWx0cyBhbmQgdXNlcgogICAgICAgICAvLyBhcHBsaWVkIHN0eWxlcy4KLSAgICAgICAgUmVmUHRy
PENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBkZWZhdWx0U3R5bGUgPSBjb21wdXRlZFN0eWxl
KGRvY3VtZW50LT5kb2N1bWVudEVsZW1lbnQoKSktPmRlcHJlY2F0ZWRDb3B5SW5oZXJpdGFibGVQ
cm9wZXJ0aWVzKCk7Ci0gICAgICAgIAorICAgICAgICBSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVj
bGFyYXRpb24+IGRlZmF1bHRTdHlsZSA9IGVkaXRpbmdTdHlsZUF0UG9zaXRpb24oUG9zaXRpb24o
ZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgpLCAwKSk7CisKICAgICAgICAgaWYgKGRlZmF1bHRT
dHlsZS0+bGVuZ3RoKCkgPiAwKQogICAgICAgICAgICAgYWRkU3R5bGVNYXJrdXAocHJlTWFya3Vw
cywgbWFya3VwcywgZGVmYXVsdFN0eWxlLmdldCgpLCBkb2N1bWVudCk7CiAgICAgfQpJbmRleDog
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxv
ZwkocmV2aXNpb24gNDY4MTYpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwyMyBAQAorMjAwOS0wOC0wNSAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Vi
a2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBCYWNrZ3JvdW5kIGNvbG9yIGZvcm1hdHRpbmcgbG9zdCBvbiBlbnRlcgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAzNDgKKworICAgICAgICBUaGlz
IHBhdGNoIGFkZHMgbmV3IHRlc3QgdG8gbWFrZSBzdXJlIFdlYktpdCBwcmVzZXJ2ZXMgdGhlIGJh
Y2tncm91bmQtY29sb3Igd2hlbiBpbnNlcnRpbmcgYSBuZXcgcGFyYWdyYXBoLgorICAgICAgICBU
d28gZXhwZWN0ZWQgcmVzdWx0cyBhcmUgcmViYXNlbGluZWQgZm9yIHRoZSBmb2xsb3dpbmcgcmVh
c29uczoKKworICAgICAgICA1OTk0NDgwLTItZXhwZWN0ZWQudHh0OiBCZWNhdXNlIHdlJ3JlIGRl
bGV0aW5nIGlucHV0IGVsZW1lbnQgd2l0aCB3aGl0ZSBiYWNrZ3JvdW5kIGFuZCB0aGUgZW5jbG9z
aW5nIGRpdiBoYXMgdHJhbnNwYXJlbnQgYmFja2dyb3VuZCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgd2UgYWRkIHdoaXRlIGJhY2tncm91bmQgaW4gRGVsZXRlU2VsZWN0aW9uQ29t
bWFuZDo6Y2FsY3VsYXRlVHlwaW5nU3R5bGVBZnRlckRlbGV0ZSB1cG9uIGRlbGV0aW9uLgorICAg
ICAgICBzZWxlY3QtZWxlbWVudC0xLmh0bWw6ICBCZWNhdXNlIHNlbGVjdCBlbGVtZW50IGhhcyB0
aGUgd2hpdGUgYmFja2dyb3VuZCBjb2xvciBhbmQgZGl2IGhhcyB0cmFuc3BhcmVudCBiYWNrZ3Jv
dW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3ZSBhZGQgd2hpdGUgYmFja2dy
b3VuZCBpbiBEZWxldGVTZWxlY3Rpb246OmNhbGN1bGF0ZVR5cGluZ1N0eWxlQWZ0ZXJEZWxldGUg
dXBvbiBjdXQuCisKKyAgICAgICAgKiBlZGl0aW5nL2luc2VydGluZy81OTk0NDgwLTItZXhwZWN0
ZWQudHh0OiBFeHRyYSBzcGFuIHdpdGggd2hpdGUgYmFja2dyb3VuZC1jb2xvciBpcyBhZGRlZC4K
KyAgICAgICAgKiBlZGl0aW5nL3N0eWxlL2hpZ2hsaWdodC1hZnRlci1lbnRlci1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvc3R5bGUvaGlnaGxpZ2h0LWFmdGVyLWVudGVy
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9lZGl0aW5nL3Bhc3RlYm9hcmQv
c2VsZWN0LWVsZW1lbnQtMS1leHBlY3RlZC50eHQ6IHdoaXRlIGJhY2tncm91bmQtY29sb3IgaXMg
YWRkZWQgdG8gYW4gZXhpc3Rpbmcgc3Bhbi4KKwogMjAwOS0wOC0wNSAgU2ltb24gRnJhc2VyICA8
c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxl
ci4KSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvaW5zZXJ0aW5nLzU5OTQ0ODAtMi1leHBlY3Rl
ZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9pbnNlcnRpbmcvNTk5NDQ4
MC0yLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNDY4MTYpCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5n
L2luc2VydGluZy81OTk0NDgwLTItZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xICsx
IEBACi08Zm9udCBjbGFzcz0iQXBwbGUtc3R5bGUtc3BhbiIgZmFjZT0iJ0x1Y2lkYSBHcmFuZGUn
IiBzaXplPSIzIj48c3BhbiBjbGFzcz0iQXBwbGUtc3R5bGUtc3BhbiIgc3R5bGU9ImZvbnQtc2l6
ZTogMTFweDsiPjxicj48L3NwYW4+PC9mb250PgorPGZvbnQgY2xhc3M9IkFwcGxlLXN0eWxlLXNw
YW4iIGZhY2U9IidMdWNpZGEgR3JhbmRlJyIgc2l6ZT0iMyI+PHNwYW4gY2xhc3M9IkFwcGxlLXN0
eWxlLXNwYW4iIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjU1LCAyNTUsIDI1NSk7IGZv
bnQtc2l6ZTogMTFweDsiPjxicj48L3NwYW4+PC9mb250PgpJbmRleDogTGF5b3V0VGVzdHMvZWRp
dGluZy9zdHlsZS9oaWdobGlnaHQtYWZ0ZXItZW50ZXItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2VkaXRpbmcvc3R5bGUvaGlnaGxpZ2h0LWFmdGVyLWVudGVyLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvc3R5bGUvaGlnaGxp
Z2h0LWFmdGVyLWVudGVyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1IEBA
CitUaGlzIHRlc3RzIGluc2VydGluZyBhIG5ldyBwYXJhZ3JhcGggcHJlc2VydmVzIHRoZSBiYWNr
Z3JvdW5kIGNvbG9yLgorCit0ZXN0CitlCis8c3BhbiBjbGFzcz0iQXBwbGUtc3R5bGUtc3BhbiIg
c3R5bGU9ImJhY2tncm91bmQtY29sb3I6IHJnYigxNTMsIDE1MywgMjU1KTsiPiB0ZXN0IDwvc3Bh
bj48ZGl2PjxzcGFuIGNsYXNzPSJBcHBsZS1zdHlsZS1zcGFuIiBzdHlsZT0iYmFja2dyb3VuZC1j
b2xvcjogcmdiKDE1MywgMTUzLCAyNTUpOyI+ZTwvc3Bhbj48L2Rpdj4KSW5kZXg6IExheW91dFRl
c3RzL2VkaXRpbmcvc3R5bGUvaGlnaGxpZ2h0LWFmdGVyLWVudGVyLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZWRpdGluZy9zdHlsZS9oaWdobGlnaHQtYWZ0ZXItZW50ZXIuaHRtbAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvc3R5bGUvaGlnaGxpZ2h0LWFmdGVy
LWVudGVyLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDkgQEAKKzxodG1sPgorPGJvZHk+
Cis8cD5UaGlzIHRlc3RzIGluc2VydGluZyBhIG5ldyBwYXJhZ3JhcGggcHJlc2VydmVzIHRoZSBi
YWNrZ3JvdW5kIGNvbG9yLjwvcD4KKzxkaXY+Cis8ZGl2IGlkPSJ0ZXN0IiBjb250ZW50ZWRpdGFi
bGU9InRydWUiPgordGVzdAorPC9kaXY+Cis8L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgorCis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisKK2Z1bmN0aW9uIHByZXNzS2V5
KCBrZXkgKSB7CisgICAgaWYgKHdpbmRvdy5LZXlFdmVudCkgeworICAgICAgICB2YXIgZXYgPSBk
b2N1bWVudC5jcmVhdGVFdmVudCgiS2V5Ym9hcmRFdmVudCIpOworICAgICAgICBldi5pbml0S2V5
RXZlbnQoImtleXByZXNzIiwgdHJ1ZSwgdHJ1ZSwgd2luZG93LCAgMCwwLDAsMCwgMCwga2V5LmNo
YXJDb2RlQXQoMCkpOworICAgICAgICBkb2N1bWVudC5ib2R5LmRpc3BhdGNoRXZlbnQoZXYpOwor
ICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgdmFyIGV2ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQo
IlRleHRFdmVudCIpOworICAgICAgICBldi5pbml0VGV4dEV2ZW50KCd0ZXh0SW5wdXQnLCB0cnVl
LCB0cnVlLCBudWxsLCBrZXkuY2hhckF0KDApKTsKKyAgICAgICAgZG9jdW1lbnQuYm9keS5kaXNw
YXRjaEV2ZW50KGV2KTsKKyAgICB9Cit9CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCit2YXIgZSA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0Jyk7Cit2YXIgcyA9IHdpbmRvdy5nZXRTZWxlY3Rp
b24oKTsKKworciA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CityLnNldFN0YXJ0KGUuZmlyc3RD
aGlsZCwwKTsKK3Iuc2V0RW5kKGUuZmlyc3RDaGlsZCw1KTsKK3MucmVtb3ZlQWxsUmFuZ2VzKCk7
CitzLmFkZFJhbmdlKHIpOworZG9jdW1lbnQuZXhlY0NvbW1hbmQoImhpbGl0ZUNvbG9yIixmYWxz
ZSwiIzk5ZiIpOworCityID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKK3Iuc2V0U3RhcnQoZS5m
aXJzdENoaWxkLmZpcnN0Q2hpbGQsNSk7CityLnNldEVuZChlLmZpcnN0Q2hpbGQuZmlyc3RDaGls
ZCw1KTsKK3MucmVtb3ZlQWxsUmFuZ2VzKCk7CitzLmFkZFJhbmdlKHIpOworcHJlc3NLZXkoJ1xu
Jyk7CitwcmVzc0tleSgnZScpOworCitkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScp
LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGUuaW5uZXJIVE1MKSk7CisKKzwv
c2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvcGFzdGVib2Fy
ZC9zZWxlY3QtZWxlbWVudC0xLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9wYXN0ZWJvYXJkL3NlbGVjdC1lbGVtZW50LTEtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiA0NjgxNikKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0
aW5nL3Bhc3RlYm9hcmQvc2VsZWN0LWVsZW1lbnQtMS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29w
eSkKQEAgLTMwLDcgKzMwLDcgQEAgbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCiAgICAgICAg
ICAgdGV4dCBydW4gYXQgKDI1MywwKSB3aWR0aCAyMjA6ICJBbGwgdGhlIG9wdGlvbnMgc2hvdWxk
IGJlIGluY2x1ZGVkLiIKICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDM0KSBzaXplIDc4
NHgxMwogICAgICAgICBSZW5kZXJJbmxpbmUge0ZPTlR9IGF0ICgwLDApIHNpemUgMHgxMwotICAg
ICAgICAgIFJlbmRlcklubGluZSB7U1BBTn0gYXQgKDAsMCkgc2l6ZSAweDEzCisgICAgICAgICAg
UmVuZGVySW5saW5lIHtTUEFOfSBhdCAoMCwwKSBzaXplIDB4MTMgW2JnY29sb3I9I0ZGRkZGRl0K
ICAgICAgICAgICAgIFJlbmRlckJSIHtCUn0gYXQgKDAsMCkgc2l6ZSAweDEzCiAgICAgICBSZW5k
ZXJCbG9jayB7RElWfSBhdCAoMCw0Nykgc2l6ZSA3ODR4MjIKICAgICAgICAgUmVuZGVyTWVudUxp
c3Qge1NFTEVDVH0gYXQgKDIsMikgc2l6ZSA2MngxOCBbYmdjb2xvcj0jRkZGRkZGXQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34336</attachid>
            <date>2009-08-07 15:25:07 -0700</date>
            <delta_ts>2009-08-07 15:27:24 -0700</delta_ts>
            <desc>fixes the bug</desc>
            <filename>fix20348e</filename>
            <type>text/plain</type>
            <size>6323</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NjkxNSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTYgQEAKKzIwMDktMDgtMDcgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQmFj
a2dyb3VuZCBjb2xvciBmb3JtYXR0aW5nIGxvc3Qgb24gZW50ZXIKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMzQ4CisKKyAgICAgICAgVGhpcyBwYXRj
aCBtYWtlcyBiYWNrZ3JvdW5kIGNvbG9yIGJlIHByZXNlcnZlZCBkdXJpbmcgZWRpdGluZy4KKyAg
ICAgICAgSW4gcGFydGljdWxhciwgZWRpdGluZ1N0eWxlQXRQb3NpdGlvbiB3b3VsZCBpbmNsdWRl
IHRoZSBiYWNrZ3JvdW5kIGNvbG9yIHdoZW4gb2J0YWluaW5nIHN0eWxlcy4KKworICAgICAgICAq
IGVkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6KTogQWRk
ZWQgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IgdG8gMjAzNDgKKwogMjAwOS0wOC0wNyAgQWxw
aGEgTGFtICA8aGNsYW1AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMg
U2VpZGVsLgpJbmRleDogV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCShyZXZpc2lv
biA0NjkxNSkKKysrIFdlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTMzOSw2ICszMzksOCBAQCBSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFy
YXRpb24+IGdldFByCiAvLyBlLmcuIHdoZW4gYSB1c2VyIGluc2VydHMgYSBuZXcgcGFyYWdyYXBo
LCBhbGwgcHJvcGVydGllcyBsaXN0ZWQgaGVyZSBtdXN0IGJlIGNvcGllZCB0byB0aGUgbmV3IHBh
cmFncmFwaC4KIC8vIEZJWE1FOiBUaGUgY3VycmVudCBlZGl0aW5nU3R5bGVQcm9wZXJ0aWVzIGlz
IGlkZW50aWNhbCB0byBpbmhlcml0YWJsZVByb3BlcnRpZXMgYnV0IHdlIG1heSBub3QgbmVlZCB0
byBwcmVzZXJ2ZSBhbGwgaW5oZXJpdGFibGUgcHJvcGVydGllcwogc3RhdGljIGNvbnN0IGludCBl
ZGl0aW5nU3R5bGVQcm9wZXJ0aWVzW10gPSB7CisgICAgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29s
b3IsCisKICAgICBDU1NQcm9wZXJ0eUJvcmRlckNvbGxhcHNlLAogICAgIENTU1Byb3BlcnR5Q29s
b3IsCiAgICAgQ1NTUHJvcGVydHlGb250RmFtaWx5LApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNDY5MTcp
CisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOSBA
QAorMjAwOS0wOC0wNyAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBCYWNrZ3JvdW5kIGNvbG9y
IGZvcm1hdHRpbmcgbG9zdCBvbiBlbnRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjAzNDgKKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgYSB0ZXN0
IHRvIG1ha2Ugc3VyZSBXZWJLaXQgcHJlc2VydmVzIGJhY2tncm91bmQgY29sb3Igd2hlbiBpbnNl
cnRpbmcgYSBuZXcgcGFyYWdyYXBoLgorCisgICAgICAgICogZWRpdGluZy9pbnNlcnRpbmcvNTk5
NDQ4MC0yLWV4cGVjdGVkLnR4dDogQmVjYXVzZSBpbnB1dCBlbGVtZW50IGhhcyBleHBsaWNpdCB3
aGl0ZSBiYWNrZ3JvdW5kIGFuZCB0aGUgZW5jbG9zaW5nIGRpdiBoYXMKKyAgICAgICAgdHJhbnNw
YXJlbnQgYmFja2dyb3VuZCwgV2ViS2l0IGFkZHMgd2hpdGUgYmFja2dyb3VuZCBjb2xvciBpbiBE
ZWxldGVTZWxlY3Rpb25Db21tYW5kOjpjYWxjdWxhdGVUeXBpbmdTdHlsZUFmdGVyRGVsZXRlIHVw
b24gZGVsZXRpb24uCisgICAgICAgICogZWRpdGluZy9zdHlsZS9oaWdobGlnaHQtaW5zZXJ0LXBh
cmFncmFwaC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvc3R5bGUvaGln
aGxpZ2h0LWluc2VydC1wYXJhZ3JhcGguaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0v
bWFjL2VkaXRpbmcvcGFzdGVib2FyZC9zZWxlY3QtZWxlbWVudC0xLWV4cGVjdGVkLnR4dDogQmVj
YXVzZSBzZWxlY3QgZWxlbWVudCBoYXMgZXhwbGljaXQgd2hpdGUgYmFja2dyb3VuZCBjb2xvcgor
ICAgICAgICBhbmQgZGl2IGhhcyB0cmFuc3BhcmVudCBiYWNrZ3JvdW5kLCBXZWJLaXQgYWRkcyB3
aGl0ZSBiYWNrZ3JvdW5kIGNvbG9yIGluIGNhbGN1bGF0ZVR5cGluZ1N0eWxlQWZ0ZXJEZWxldGUg
dXBvbiBjdXQuCisKIDIwMDktMDgtMDcgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IE1hcmsgUm93ZS4KSW5kZXg6IExheW91dFRlc3RzL2VkaXRp
bmcvaW5zZXJ0aW5nLzU5OTQ0ODAtMi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZWRpdGluZy9pbnNlcnRpbmcvNTk5NDQ4MC0yLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
NDY5MTUpCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL2luc2VydGluZy81OTk0NDgwLTItZXhwZWN0
ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xICsxIEBACi08Zm9udCBjbGFzcz0iQXBwbGUtc3R5
bGUtc3BhbiIgZmFjZT0iJ0x1Y2lkYSBHcmFuZGUnIiBzaXplPSIzIj48c3BhbiBjbGFzcz0iQXBw
bGUtc3R5bGUtc3BhbiIgc3R5bGU9ImZvbnQtc2l6ZTogMTFweDsiPjxicj48L3NwYW4+PC9mb250
PgorPGZvbnQgY2xhc3M9IkFwcGxlLXN0eWxlLXNwYW4iIGZhY2U9IidMdWNpZGEgR3JhbmRlJyIg
c2l6ZT0iMyI+PHNwYW4gY2xhc3M9IkFwcGxlLXN0eWxlLXNwYW4iIHN0eWxlPSJiYWNrZ3JvdW5k
LWNvbG9yOiByZ2IoMjU1LCAyNTUsIDI1NSk7IGZvbnQtc2l6ZTogMTFweDsiPjxicj48L3NwYW4+
PC9mb250PgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9zdHlsZS9oaWdobGlnaHQtaW5zZXJ0
LXBhcmFncmFwaC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGlu
Zy9zdHlsZS9oaWdobGlnaHQtaW5zZXJ0LXBhcmFncmFwaC1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL3N0eWxlL2hpZ2hsaWdodC1pbnNlcnQtcGFyYWdy
YXBoLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1IEBACitUaGlzIHRlc3Rz
IGluc2VydGluZyBhIG5ldyBwYXJhZ3JhcGggcHJlc2VydmVzIHRoZSBiYWNrZ3JvdW5kIGNvbG9y
LgorCit0ZXN0CitlCis8c3BhbiBjbGFzcz0iQXBwbGUtc3R5bGUtc3BhbiIgc3R5bGU9ImJhY2tn
cm91bmQtY29sb3I6IHJnYigxNTMsIDE1MywgMjU1KTsiPiB0ZXN0IDwvc3Bhbj48ZGl2PjxzcGFu
IGNsYXNzPSJBcHBsZS1zdHlsZS1zcGFuIiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogcmdiKDE1
MywgMTUzLCAyNTUpOyI+ZTwvc3Bhbj48L2Rpdj4KSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcv
c3R5bGUvaGlnaGxpZ2h0LWluc2VydC1wYXJhZ3JhcGguaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9lZGl0aW5nL3N0eWxlL2hpZ2hsaWdodC1pbnNlcnQtcGFyYWdyYXBoLmh0bWwJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL3N0eWxlL2hpZ2hsaWdodC1pbnNlcnQt
cGFyYWdyYXBoLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDkgQEAKKzxodG1sPgorPGJv
ZHk+Cis8cD5UaGlzIHRlc3RzIGluc2VydGluZyBhIG5ldyBwYXJhZ3JhcGggcHJlc2VydmVzIHRo
ZSBiYWNrZ3JvdW5kIGNvbG9yLjwvcD4KKzxkaXY+Cis8ZGl2IGlkPSJ0ZXN0IiBjb250ZW50ZWRp
dGFibGU9InRydWUiPgordGVzdAorPC9kaXY+Cis8L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorCis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisKK2Z1bmN0aW9uIHByZXNz
S2V5KCBrZXkgKSB7CisgICAgaWYgKHdpbmRvdy5LZXlFdmVudCkgeworICAgICAgICB2YXIgZXYg
PSBkb2N1bWVudC5jcmVhdGVFdmVudCgiS2V5Ym9hcmRFdmVudCIpOworICAgICAgICBldi5pbml0
S2V5RXZlbnQoImtleXByZXNzIiwgdHJ1ZSwgdHJ1ZSwgd2luZG93LCAgMCwwLDAsMCwgMCwga2V5
LmNoYXJDb2RlQXQoMCkpOworICAgICAgICBkb2N1bWVudC5ib2R5LmRpc3BhdGNoRXZlbnQoZXYp
OworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgdmFyIGV2ID0gZG9jdW1lbnQuY3JlYXRlRXZl
bnQoIlRleHRFdmVudCIpOworICAgICAgICBldi5pbml0VGV4dEV2ZW50KCd0ZXh0SW5wdXQnLCB0
cnVlLCB0cnVlLCBudWxsLCBrZXkuY2hhckF0KDApKTsKKyAgICAgICAgZG9jdW1lbnQuYm9keS5k
aXNwYXRjaEV2ZW50KGV2KTsKKyAgICB9Cit9CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCit2YXIgZSA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0Jyk7Cit2YXIgcyA9IHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKTsKKworciA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CityLnNldFN0YXJ0KGUuZmly
c3RDaGlsZCwwKTsKK3Iuc2V0RW5kKGUuZmlyc3RDaGlsZCw1KTsKK3MucmVtb3ZlQWxsUmFuZ2Vz
KCk7CitzLmFkZFJhbmdlKHIpOworZG9jdW1lbnQuZXhlY0NvbW1hbmQoImhpbGl0ZUNvbG9yIixm
YWxzZSwiIzk5ZiIpOworCityID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKK3Iuc2V0U3RhcnQo
ZS5maXJzdENoaWxkLmZpcnN0Q2hpbGQsNSk7CityLnNldEVuZChlLmZpcnN0Q2hpbGQuZmlyc3RD
aGlsZCw1KTsKK3MucmVtb3ZlQWxsUmFuZ2VzKCk7CitzLmFkZFJhbmdlKHIpOworcHJlc3NLZXko
J1xuJyk7CitwcmVzc0tleSgnZScpOworCitkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29s
ZScpLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGUuaW5uZXJIVE1MKSk7CisK
Kzwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvcGFzdGVi
b2FyZC9zZWxlY3QtZWxlbWVudC0xLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9wYXN0ZWJvYXJkL3NlbGVjdC1lbGVtZW50LTEtZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiA0NjkxNSkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9l
ZGl0aW5nL3Bhc3RlYm9hcmQvc2VsZWN0LWVsZW1lbnQtMS1leHBlY3RlZC50eHQJKHdvcmtpbmcg
Y29weSkKQEAgLTMwLDcgKzMwLDcgQEAgbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCiAgICAg
ICAgICAgdGV4dCBydW4gYXQgKDI1MywwKSB3aWR0aCAyMjA6ICJBbGwgdGhlIG9wdGlvbnMgc2hv
dWxkIGJlIGluY2x1ZGVkLiIKICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDM0KSBzaXpl
IDc4NHgxMwogICAgICAgICBSZW5kZXJJbmxpbmUge0ZPTlR9IGF0ICgwLDApIHNpemUgMHgxMwot
ICAgICAgICAgIFJlbmRlcklubGluZSB7U1BBTn0gYXQgKDAsMCkgc2l6ZSAweDEzCisgICAgICAg
ICAgUmVuZGVySW5saW5lIHtTUEFOfSBhdCAoMCwwKSBzaXplIDB4MTMgW2JnY29sb3I9I0ZGRkZG
Rl0KICAgICAgICAgICAgIFJlbmRlckJSIHtCUn0gYXQgKDAsMCkgc2l6ZSAweDEzCiAgICAgICBS
ZW5kZXJCbG9jayB7RElWfSBhdCAoMCw0Nykgc2l6ZSA3ODR4MjIKICAgICAgICAgUmVuZGVyTWVu
dUxpc3Qge1NFTEVDVH0gYXQgKDIsMikgc2l6ZSA2MngxOCBbYmdjb2xvcj0jRkZGRkZGXQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34337</attachid>
            <date>2009-08-07 15:27:24 -0700</date>
            <delta_ts>2009-08-10 11:04:25 -0700</delta_ts>
            <desc>fixed the WebCore/ChangeLog</desc>
            <filename>fix20348f</filename>
            <type>text/plain</type>
            <size>6340</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NjkxNSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTYgQEAKKzIwMDktMDgtMDcgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQmFj
a2dyb3VuZCBjb2xvciBmb3JtYXR0aW5nIGxvc3Qgb24gZW50ZXIKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMzQ4CisKKyAgICAgICAgVGhpcyBwYXRj
aCBtYWtlcyBiYWNrZ3JvdW5kIGNvbG9yIGJlIHByZXNlcnZlZCBkdXJpbmcgZWRpdGluZy4KKyAg
ICAgICAgSW4gcGFydGljdWxhciwgZWRpdGluZ1N0eWxlQXRQb3NpdGlvbiB3b3VsZCBpbmNsdWRl
IHRoZSBiYWNrZ3JvdW5kIGNvbG9yIHdoZW4gb2J0YWluaW5nIHN0eWxlcy4KKworICAgICAgICAq
IGVkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6KTogQWRk
ZWQgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IgdG8gZWRpdGluZ1N0eWxlUHJvcGVydGllcwor
CiAyMDA5LTA4LTA3ICBBbHBoYSBMYW0gIDxoY2xhbUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCkluZGV4OiBXZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHls
ZUNvbW1hbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29t
bWFuZC5jcHAJKHJldmlzaW9uIDQ2OTE1KQorKysgV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVD
b21tYW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzM5LDYgKzMzOSw4IEBAIFJlZlB0cjxDU1NN
dXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gZ2V0UHIKIC8vIGUuZy4gd2hlbiBhIHVzZXIgaW5zZXJ0
cyBhIG5ldyBwYXJhZ3JhcGgsIGFsbCBwcm9wZXJ0aWVzIGxpc3RlZCBoZXJlIG11c3QgYmUgY29w
aWVkIHRvIHRoZSBuZXcgcGFyYWdyYXBoLgogLy8gRklYTUU6IFRoZSBjdXJyZW50IGVkaXRpbmdT
dHlsZVByb3BlcnRpZXMgaXMgaWRlbnRpY2FsIHRvIGluaGVyaXRhYmxlUHJvcGVydGllcyBidXQg
d2UgbWF5IG5vdCBuZWVkIHRvIHByZXNlcnZlIGFsbCBpbmhlcml0YWJsZSBwcm9wZXJ0aWVzCiBz
dGF0aWMgY29uc3QgaW50IGVkaXRpbmdTdHlsZVByb3BlcnRpZXNbXSA9IHsKKyAgICBDU1NQcm9w
ZXJ0eUJhY2tncm91bmRDb2xvciwKKwogICAgIENTU1Byb3BlcnR5Qm9yZGVyQ29sbGFwc2UsCiAg
ICAgQ1NTUHJvcGVydHlDb2xvciwKICAgICBDU1NQcm9wZXJ0eUZvbnRGYW1pbHksCkluZGV4OiBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NjkxNykKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDE5IEBACisyMDA5LTA4LTA3ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJr
aXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEJhY2tncm91bmQgY29sb3IgZm9ybWF0dGluZyBsb3N0IG9uIGVudGVyCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDM0OAorCisgICAgICAgIFRoaXMg
cGF0Y2ggYWRkcyBhIHRlc3QgdG8gbWFrZSBzdXJlIFdlYktpdCBwcmVzZXJ2ZXMgYmFja2dyb3Vu
ZCBjb2xvciB3aGVuIGluc2VydGluZyBhIG5ldyBwYXJhZ3JhcGguCisKKyAgICAgICAgKiBlZGl0
aW5nL2luc2VydGluZy81OTk0NDgwLTItZXhwZWN0ZWQudHh0OiBCZWNhdXNlIGlucHV0IGVsZW1l
bnQgaGFzIGV4cGxpY2l0IHdoaXRlIGJhY2tncm91bmQgYW5kIHRoZSBlbmNsb3NpbmcgZGl2IGhh
cworICAgICAgICB0cmFuc3BhcmVudCBiYWNrZ3JvdW5kLCBXZWJLaXQgYWRkcyB3aGl0ZSBiYWNr
Z3JvdW5kIGNvbG9yIGluIERlbGV0ZVNlbGVjdGlvbkNvbW1hbmQ6OmNhbGN1bGF0ZVR5cGluZ1N0
eWxlQWZ0ZXJEZWxldGUgdXBvbiBkZWxldGlvbi4KKyAgICAgICAgKiBlZGl0aW5nL3N0eWxlL2hp
Z2hsaWdodC1pbnNlcnQtcGFyYWdyYXBoLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
ZWRpdGluZy9zdHlsZS9oaWdobGlnaHQtaW5zZXJ0LXBhcmFncmFwaC5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9tYWMvZWRpdGluZy9wYXN0ZWJvYXJkL3NlbGVjdC1lbGVtZW50LTEt
ZXhwZWN0ZWQudHh0OiBCZWNhdXNlIHNlbGVjdCBlbGVtZW50IGhhcyBleHBsaWNpdCB3aGl0ZSBi
YWNrZ3JvdW5kIGNvbG9yCisgICAgICAgIGFuZCBkaXYgaGFzIHRyYW5zcGFyZW50IGJhY2tncm91
bmQsIFdlYktpdCBhZGRzIHdoaXRlIGJhY2tncm91bmQgY29sb3IgaW4gY2FsY3VsYXRlVHlwaW5n
U3R5bGVBZnRlckRlbGV0ZSB1cG9uIGN1dC4KKwogMjAwOS0wOC0wNyAgRGFyaW4gQWRsZXIgIDxk
YXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTWFyayBSb3dlLgpJbmRleDog
TGF5b3V0VGVzdHMvZWRpdGluZy9pbnNlcnRpbmcvNTk5NDQ4MC0yLWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL2luc2VydGluZy81OTk0NDgwLTItZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiA0NjkxNSkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvaW5zZXJ0aW5n
LzU5OTQ0ODAtMi1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEgKzEgQEAKLTxmb250
IGNsYXNzPSJBcHBsZS1zdHlsZS1zcGFuIiBmYWNlPSInTHVjaWRhIEdyYW5kZSciIHNpemU9IjMi
PjxzcGFuIGNsYXNzPSJBcHBsZS1zdHlsZS1zcGFuIiBzdHlsZT0iZm9udC1zaXplOiAxMXB4OyI+
PGJyPjwvc3Bhbj48L2ZvbnQ+Cis8Zm9udCBjbGFzcz0iQXBwbGUtc3R5bGUtc3BhbiIgZmFjZT0i
J0x1Y2lkYSBHcmFuZGUnIiBzaXplPSIzIj48c3BhbiBjbGFzcz0iQXBwbGUtc3R5bGUtc3BhbiIg
c3R5bGU9ImJhY2tncm91bmQtY29sb3I6IHJnYigyNTUsIDI1NSwgMjU1KTsgZm9udC1zaXplOiAx
MXB4OyI+PGJyPjwvc3Bhbj48L2ZvbnQ+CkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL3N0eWxl
L2hpZ2hsaWdodC1pbnNlcnQtcGFyYWdyYXBoLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9lZGl0aW5nL3N0eWxlL2hpZ2hsaWdodC1pbnNlcnQtcGFyYWdyYXBoLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvc3R5bGUvaGlnaGxp
Z2h0LWluc2VydC1wYXJhZ3JhcGgtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDUgQEAKK1RoaXMgdGVzdHMgaW5zZXJ0aW5nIGEgbmV3IHBhcmFncmFwaCBwcmVzZXJ2ZXMgdGhl
IGJhY2tncm91bmQgY29sb3IuCisKK3Rlc3QKK2UKKzxzcGFuIGNsYXNzPSJBcHBsZS1zdHlsZS1z
cGFuIiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogcmdiKDE1MywgMTUzLCAyNTUpOyI+IHRlc3Qg
PC9zcGFuPjxkaXY+PHNwYW4gY2xhc3M9IkFwcGxlLXN0eWxlLXNwYW4iIHN0eWxlPSJiYWNrZ3Jv
dW5kLWNvbG9yOiByZ2IoMTUzLCAxNTMsIDI1NSk7Ij5lPC9zcGFuPjwvZGl2PgpJbmRleDogTGF5
b3V0VGVzdHMvZWRpdGluZy9zdHlsZS9oaWdobGlnaHQtaW5zZXJ0LXBhcmFncmFwaC5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvc3R5bGUvaGlnaGxpZ2h0LWluc2VydC1w
YXJhZ3JhcGguaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvc3R5bGUv
aGlnaGxpZ2h0LWluc2VydC1wYXJhZ3JhcGguaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0
OSBAQAorPGh0bWw+Cis8Ym9keT4KKzxwPlRoaXMgdGVzdHMgaW5zZXJ0aW5nIGEgbmV3IHBhcmFn
cmFwaCBwcmVzZXJ2ZXMgdGhlIGJhY2tncm91bmQgY29sb3IuPC9wPgorPGRpdj4KKzxkaXYgaWQ9
InRlc3QiIGNvbnRlbnRlZGl0YWJsZT0idHJ1ZSI+Cit0ZXN0Cis8L2Rpdj4KKzwvZGl2PgorPGRp
diBpZD0iY29uc29sZSI+PC9kaXY+CisKKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4K
KworZnVuY3Rpb24gcHJlc3NLZXkoIGtleSApIHsKKyAgICBpZiAod2luZG93LktleUV2ZW50KSB7
CisgICAgICAgIHZhciBldiA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCJLZXlib2FyZEV2ZW50Iik7
CisgICAgICAgIGV2LmluaXRLZXlFdmVudCgia2V5cHJlc3MiLCB0cnVlLCB0cnVlLCB3aW5kb3cs
ICAwLDAsMCwwLCAwLCBrZXkuY2hhckNvZGVBdCgwKSk7CisgICAgICAgIGRvY3VtZW50LmJvZHku
ZGlzcGF0Y2hFdmVudChldik7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICB2YXIgZXYgPSBk
b2N1bWVudC5jcmVhdGVFdmVudCgiVGV4dEV2ZW50Iik7CisgICAgICAgIGV2LmluaXRUZXh0RXZl
bnQoJ3RleHRJbnB1dCcsIHRydWUsIHRydWUsIG51bGwsIGtleS5jaGFyQXQoMCkpOworICAgICAg
ICBkb2N1bWVudC5ib2R5LmRpc3BhdGNoRXZlbnQoZXYpOworICAgIH0KK30KKworaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNU
ZXh0KCk7CisKK3ZhciBlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlc3QnKTsKK3ZhciBz
ID0gd2luZG93LmdldFNlbGVjdGlvbigpOworCityID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsK
K3Iuc2V0U3RhcnQoZS5maXJzdENoaWxkLDApOworci5zZXRFbmQoZS5maXJzdENoaWxkLDUpOwor
cy5yZW1vdmVBbGxSYW5nZXMoKTsKK3MuYWRkUmFuZ2Uocik7Citkb2N1bWVudC5leGVjQ29tbWFu
ZCgiaGlsaXRlQ29sb3IiLGZhbHNlLCIjOTlmIik7CisKK3IgPSBkb2N1bWVudC5jcmVhdGVSYW5n
ZSgpOworci5zZXRTdGFydChlLmZpcnN0Q2hpbGQuZmlyc3RDaGlsZCw1KTsKK3Iuc2V0RW5kKGUu
Zmlyc3RDaGlsZC5maXJzdENoaWxkLDUpOworcy5yZW1vdmVBbGxSYW5nZXMoKTsKK3MuYWRkUmFu
Z2Uocik7CitwcmVzc0tleSgnXG4nKTsKK3ByZXNzS2V5KCdlJyk7CisKK2RvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdjb25zb2xlJykuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUo
ZS5pbm5lckhUTUwpKTsKKworPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMvZWRpdGluZy9wYXN0ZWJvYXJkL3NlbGVjdC1lbGVtZW50LTEtZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3Bhc3RlYm9hcmQvc2Vs
ZWN0LWVsZW1lbnQtMS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDQ2OTE1KQorKysgTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvcGFzdGVib2FyZC9zZWxlY3QtZWxlbWVudC0xLWV4cGVj
dGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBAQCBsYXllciBhdCAoMCwwKSBz
aXplIDgwMHg2MDAKICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMjUzLDApIHdpZHRoIDIyMDogIkFs
bCB0aGUgb3B0aW9ucyBzaG91bGQgYmUgaW5jbHVkZWQuIgogICAgICAgUmVuZGVyQmxvY2sge0RJ
Vn0gYXQgKDAsMzQpIHNpemUgNzg0eDEzCiAgICAgICAgIFJlbmRlcklubGluZSB7Rk9OVH0gYXQg
KDAsMCkgc2l6ZSAweDEzCi0gICAgICAgICAgUmVuZGVySW5saW5lIHtTUEFOfSBhdCAoMCwwKSBz
aXplIDB4MTMKKyAgICAgICAgICBSZW5kZXJJbmxpbmUge1NQQU59IGF0ICgwLDApIHNpemUgMHgx
MyBbYmdjb2xvcj0jRkZGRkZGXQogICAgICAgICAgICAgUmVuZGVyQlIge0JSfSBhdCAoMCwwKSBz
aXplIDB4MTMKICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDQ3KSBzaXplIDc4NHgyMgog
ICAgICAgICBSZW5kZXJNZW51TGlzdCB7U0VMRUNUfSBhdCAoMiwyKSBzaXplIDYyeDE4IFtiZ2Nv
bG9yPSNGRkZGRkZdCg==
</data>
<flag name="review"
          id="18515"
          type_id="1"
          status="+"
          setter="justin.garcia"
    />
          </attachment>
      

    </bug>

</bugzilla>