<?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>100025</bug_id>
          
          <creation_ts>2012-10-22 13:55:12 -0700</creation_ts>
          <short_desc>[WK2] [Mac] WebKit Full Screen API should use NSWindow full screen API.</short_desc>
          <delta_ts>2012-11-27 16:41:16 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>102300</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jer Noble">jer.noble</reporter>
          <assigned_to name="Jer Noble">jer.noble</assigned_to>
          <cc>mitz</cc>
    
    <cc>tfr</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>747851</commentid>
    <comment_count>0</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-10-22 13:55:12 -0700</bug_when>
    <thetext>[WK2] [Mac] WebKit Full Screen API should use NSWindow full screen API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747888</commentid>
    <comment_count>1</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-10-22 14:29:53 -0700</bug_when>
    <thetext>&lt;rdar://problem/9569685&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747889</commentid>
    <comment_count>2</comment_count>
      <attachid>169986</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-10-22 14:30:04 -0700</bug_when>
    <thetext>Created attachment 169986
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747899</commentid>
    <comment_count>3</comment_count>
      <attachid>169986</attachid>
    <who name="">mitz</who>
    <bug_when>2012-10-22 14:38:52 -0700</bug_when>
    <thetext>Comment on attachment 169986
Patch

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

&gt; Source/WebKit2/UIProcess/mac/WKFullScreenWindowController.mm:92
&gt; +    _exitWarning = adoptNS([[WebCoreFullScreenWarningView alloc] initWithTitle:@&quot;Click to exit full screen mode&quot;]);

This UI string is not localizable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747904</commentid>
    <comment_count>4</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-10-22 14:41:15 -0700</bug_when>
    <thetext>Whoo(In reply to comment #3)
&gt; (From update of attachment 169986 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=169986&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/mac/WKFullScreenWindowController.mm:92
&gt; &gt; +    _exitWarning = adoptNS([[WebCoreFullScreenWarningView alloc] initWithTitle:@&quot;Click to exit full screen mode&quot;]);
&gt; 
&gt; This UI string is not localizable.

Whoops, meant to fix that before uploading.  I&apos;ll get a new (rebased) patch up shortly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>748152</commentid>
    <comment_count>5</comment_count>
      <attachid>169986</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-10-22 18:16:36 -0700</bug_when>
    <thetext>Comment on attachment 169986
Patch

The patch didn’t apply. You should rebase it and upload it again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>748835</commentid>
    <comment_count>6</comment_count>
      <attachid>170201</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-10-23 11:45:49 -0700</bug_when>
    <thetext>Created attachment 170201
Patch

Added a localized string for the &apos;click to exit&apos; text; rebaselined to current ToT.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>749022</commentid>
    <comment_count>7</comment_count>
      <attachid>170241</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-10-23 14:55:21 -0700</bug_when>
    <thetext>Created attachment 170241
Patch

One last revision.  Moved the Placeholder View implementation into WebCore where it could be shared by WebKit2 and WebKit1.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>749060</commentid>
    <comment_count>8</comment_count>
      <attachid>170250</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-10-23 15:30:15 -0700</bug_when>
    <thetext>Created attachment 170250
Patch

Rebased.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>749085</commentid>
    <comment_count>9</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-10-23 16:00:49 -0700</bug_when>
    <thetext>The bots seem to be choking on the changes to Localizable.strings.  Trying to figure out why, now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>749090</commentid>
    <comment_count>10</comment_count>
      <attachid>170259</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-10-23 16:03:03 -0700</bug_when>
    <thetext>Created attachment 170259
Patch

Added extra newline after my change to Localizable.strings.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>749100</commentid>
    <comment_count>11</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-10-23 16:11:27 -0700</bug_when>
    <thetext>I&apos;ll just split this change into two parts; the non-Localizable.strings part, and the rest.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>749112</commentid>
    <comment_count>12</comment_count>
      <attachid>170264</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-10-23 16:21:03 -0700</bug_when>
    <thetext>Created attachment 170264
Patch

Localized.strings is now a binary diff.  Hopefully this makes the EWS bots happy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>767097</commentid>
    <comment_count>13</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-11-14 11:25:53 -0800</bug_when>
    <thetext>*** Bug 78929 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>767485</commentid>
    <comment_count>14</comment_count>
      <attachid>174294</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-11-14 17:01:31 -0800</bug_when>
    <thetext>Created attachment 174294
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>767486</commentid>
    <comment_count>15</comment_count>
      <attachid>174294</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-11-14 17:01:56 -0800</bug_when>
    <thetext>Comment on attachment 174294
Patch

In order to ease reviewing, I split out two dependent patches from this one, in bug #102299 and bug #102300.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>768022</commentid>
    <comment_count>16</comment_count>
      <attachid>174294</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-11-15 06:50:42 -0800</bug_when>
    <thetext>Comment on attachment 174294
Patch

Attachment 174294 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/14833730</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>769442</commentid>
    <comment_count>17</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-11-16 10:42:16 -0800</bug_when>
    <thetext>(Mac build failure is a missing symbol, which is added in a dependent patch in bug #102300.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>769460</commentid>
    <comment_count>18</comment_count>
      <attachid>174294</attachid>
    <who name="">mitz</who>
    <bug_when>2012-11-16 11:00:19 -0800</bug_when>
    <thetext>Comment on attachment 174294
Patch

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

&gt; Source/WebKit2/UIProcess/mac/WKFullScreenWindowController.h:60
&gt; +    NSTimeInterval _animationDuration;

This is unused.

&gt; Source/WebKit2/UIProcess/mac/WKFullScreenWindowController.mm:58
&gt; +@interface NSWindow(MoreSpecificFullScreenActions)

Needs a space before the parenthesis. Also, the modern naming scheme for categories like this is (WebNSWindowDetails).

&gt; Source/WebKit2/UIProcess/mac/WKFullScreenWindowController.mm:102
&gt; +    [window setDelegate:self];
&gt; +    [window setCollectionBehavior:([window collectionBehavior] | NSWindowCollectionBehaviorFullScreenPrimary)];

1. I think it’s safest to set the delegate to nil in this class’s -dealloc. Even though the window is private to this class, it’s not hard for something else to get a reference to it and extend its lifetime beyond this instance’s.
2. It’s a little crazy to use window after releasing it, even though it’s almost certainly assured to work. You can fix this by using a RetainPtr, but I think it’s also acceptable to replace the -release with -autorelease above.

&gt; Source/WebKit2/UIProcess/mac/WKFullScreenWindowController.mm:282
&gt; +    ASSERT([[self window] respondsToSelector:@selector(enterFullScreenMode:)]);
&gt; +    [[self window] enterFullScreenMode:self];

I don’t think the assertion is buying us anything. If the assertion is false, then it will be obvious from the crash when sending an unrecognized selector to the window.

&gt; Source/WebKit2/UIProcess/mac/WKFullScreenWindowController.mm:359
&gt; +    ASSERT([[self window] respondsToSelector:@selector(exitFullScreenMode:)]);

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>769493</commentid>
    <comment_count>19</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-11-16 11:19:42 -0800</bug_when>
    <thetext>(In reply to comment #18)
&gt; (From update of attachment 174294 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=174294&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/mac/WKFullScreenWindowController.h:60
&gt; &gt; +    NSTimeInterval _animationDuration;
&gt; 
&gt; This is unused.

I&apos;ll delete it.

&gt; &gt; Source/WebKit2/UIProcess/mac/WKFullScreenWindowController.mm:58
&gt; &gt; +@interface NSWindow(MoreSpecificFullScreenActions)
&gt; 
&gt; Needs a space before the parenthesis. Also, the modern naming scheme for categories like this is (WebNSWindowDetails).

Sure thing.  This is probably something which could be added to check-webkit-style. (I&apos;ll file a bug.)

&gt; &gt; Source/WebKit2/UIProcess/mac/WKFullScreenWindowController.mm:102
&gt; &gt; +    [window setDelegate:self];
&gt; &gt; +    [window setCollectionBehavior:([window collectionBehavior] | NSWindowCollectionBehaviorFullScreenPrimary)];
&gt; 
&gt; 1. I think it’s safest to set the delegate to nil in this class’s -dealloc. Even though the window is private to this class, it’s not hard for something else to get a reference to it and extend its lifetime beyond this instance’s.

Sure thing, I&apos;ll add it.

&gt; 2. It’s a little crazy to use window after releasing it, even though it’s almost certainly assured to work. You can fix this by using a RetainPtr, but I think it’s also acceptable to replace the -release with -autorelease above.

Yeah, it should be owned by the superclass after initWithWindow:, but you&apos;re right that it&apos;s a little weird.  I&apos;ll wrap it in a RetainPtr.

&gt; &gt; Source/WebKit2/UIProcess/mac/WKFullScreenWindowController.mm:282
&gt; &gt; +    ASSERT([[self window] respondsToSelector:@selector(enterFullScreenMode:)]);
&gt; &gt; +    [[self window] enterFullScreenMode:self];
&gt; 
&gt; I don’t think the assertion is buying us anything. If the assertion is false, then it will be obvious from the crash when sending an unrecognized selector to the window.

In fact, it&apos;s less informative, since the unrecognized selector crash will generate a crash log with the selector name in it.  I&apos;ll delete the ASSERT.

&gt; &gt; Source/WebKit2/UIProcess/mac/WKFullScreenWindowController.mm:359
&gt; &gt; +    ASSERT([[self window] respondsToSelector:@selector(exitFullScreenMode:)]);
&gt; 
&gt; Ditto.

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>769517</commentid>
    <comment_count>20</comment_count>
      <attachid>174730</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-11-16 11:39:46 -0800</bug_when>
    <thetext>Created attachment 174730
Patch

Updated after mitz&apos;s comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>769520</commentid>
    <comment_count>21</comment_count>
      <attachid>174732</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-11-16 11:43:17 -0800</bug_when>
    <thetext>Created attachment 174732
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>769544</commentid>
    <comment_count>22</comment_count>
      <attachid>174732</attachid>
    <who name="">mitz</who>
    <bug_when>2012-11-16 11:59:41 -0800</bug_when>
    <thetext>Comment on attachment 174732
Patch

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

&gt; Source/WebKit2/UIProcess/mac/WKFullScreenWindowController.h:60
&gt; +    NSTimeInterval _animationDuration;

Didn’t you say you’d delete this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>769575</commentid>
    <comment_count>23</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-11-16 12:33:06 -0800</bug_when>
    <thetext>(In reply to comment #22)
&gt; (From update of attachment 174732 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=174732&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/mac/WKFullScreenWindowController.h:60
&gt; &gt; +    NSTimeInterval _animationDuration;
&gt; 
&gt; Didn’t you say you’d delete this?

Ack!  Yes, i will before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>769882</commentid>
    <comment_count>24</comment_count>
      <attachid>174732</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-11-16 21:27:44 -0800</bug_when>
    <thetext>Comment on attachment 174732
Patch

Attachment 174732 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/14873380</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>776019</commentid>
    <comment_count>25</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-11-26 16:15:37 -0800</bug_when>
    <thetext>*** Bug 102807 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777368</commentid>
    <comment_count>26</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2012-11-27 16:41:16 -0800</bug_when>
    <thetext>Committed r135944: &lt;http://trac.webkit.org/changeset/135944&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>169986</attachid>
            <date>2012-10-22 14:30:04 -0700</date>
            <delta_ts>2012-10-23 11:45:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100025-20121022142843.patch</filename>
            <type>text/plain</type>
            <size>30974</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMxNzkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmQ1MTI4NWYxMTIyYTNm
NjI5OWM0ZjU1M2ZmZmVlMzY3OWQ1M2VmMS4uNDAyMWI3MGYyYTYxY2IyZDYwZDY3NGMwMWM3YTk4
YjgyZjk4N2Y3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTEwLTIyICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtXSzJdIFtNYWNdIFdlYktp
dCBGdWxsIFNjcmVlbiBBUEkgc2hvdWxkIHVzZSBOU1dpbmRvdyBmdWxsIHNjcmVlbiBBUEkuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDAwMjUKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBzaGFy
ZWQgaW1wbGVtZW50YXRpb24gb2YgYSB3YXJuaW5nIHZpZXcgZm9yIHVzZSBpbiBXZWJLaXQgYW5k
IFdlYktpdDIuCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBXZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1dlYkNv
cmVGdWxsU2NyZWVuV2FybmluZ1ZpZXcuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFj
L1dlYkNvcmVGdWxsU2NyZWVuV2FybmluZ1ZpZXcubW06IEFkZGVkLgorCiAyMDEyLTEwLTE4ICBK
ZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIENyYXNoIGluIFdlYkNv
cmU6OkRvY3VtZW50Ojp3ZWJraXRFeGl0RnVsbHNjcmVlbiArIDYxOApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGY5
NWQ4ZjM5ZjBhZTI3NjM1NzhjNzNkYzY1NmU3YzhhODU4OGU4MzMuLmY5YzIwN2Q1YmEwNWMzYjNh
NjJhNTFlMzk2Nzg5MzVlZTAyNTFkMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOSBAQAorMjAx
Mi0xMC0yMiAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBbV0sy
XSBbTWFjXSBXZWJLaXQgRnVsbCBTY3JlZW4gQVBJIHNob3VsZCB1c2UgTlNXaW5kb3cgZnVsbCBz
Y3JlZW4gQVBJLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTAwMDI1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVXNlIHRoZSBOU1dpbmRvdyBmdWxsIHNjcmVlbiBBUEkgd2hlbiB0YWtpbmcgdGhlIFdlYlZp
ZXcgZnVsbCBzY3JlZW4uIFRvIGZhY2lsaXR5IHRoZSBjYXNlIHdoZXJlIHRoZSBicm93c2VyIHdp
bmRvdyBpcyBhbHJlYWR5CisgICAgICAgIGluIGZ1bGwgc2NyZWVuIG1vZGUsIG5vIGxvbmdlciBo
aWRlIHRoZSBicm93c2VyIHdpbmRvdyB3aGVuIGVudGVyaW5nIGZ1bGwgc2NyZWVuLiBJbnN0ZWFk
LCBwcm92aWRlIGEgcGxhY2Vob2xkZXIgdmlldyB3aXRoIAorICAgICAgICBpbnN0cnVjdGlvbnMg
dG8gY2xpY2sgdGhlIHBsYWNlaG9sZGVyIHRvIGV4aXQgZnVsbCBzY3JlZW4uCisKKyAgICAgICAg
KiBVSVByb2Nlc3MvbWFjL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvbWFjL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIubW06CisgICAgICAg
ICgtW1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIgaW5pdF0pOiBTZXQgc2VsZiBhcyB0aGUg
d2luZG93J3MgZGVsZWdhdGU7IGVuYWJsZSB3aW5kb3cncyBmdWxsIHNjcmVlbiBhY3Rpb24uCisg
ICAgICAgICgtW1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIgYXBwbGljYXRpb25EaWRDaGFu
Z2VTY3JlZW5QYXJhbWV0ZXJzOl0pOiBSZW1vdmUgcmVmZXJlbmNlIHRvIF91cGRhdGVXaW5kb3dB
bmREb2NrRm9yRnVsbFNjcmVlbi4KKyAgICAgICAgKC1bV0tGdWxsU2NyZWVuV2luZG93Q29udHJv
bGxlciBlbnRlckZ1bGxTY3JlZW46XSk6ICBEaXR0by4gQ3JlYXRlIGEgV0tGdWxsU2NyZWVuUGxh
Y2Vob2xkZXJWaWV3IGluc3RlYWQgb2YgZ2VuZXJpYyBOU0ltYWdlVmlldy4KKyAgICAgICAgKC1b
V0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlciBiZWdhbkVudGVyRnVsbFNjcmVlbldpdGhJbml0
aWFsRnJhbWU6ZmluYWxGcmFtZTpdKTogRGl0dG8uIENhbGwgTlNXaW5kb3cgZW50ZXJGdWxsU2Ny
ZWVuOiBBUEkuCisgICAgICAgICgtW1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIgZmluaXNo
ZWRFbnRlckZ1bGxTY3JlZW5BbmltYXRpb246XSk6IFNob3cgdGhlIHdhcm5pbmcgdmlldy4KKyAg
ICAgICAgKC1bV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlciBleGl0RnVsbFNjcmVlbl0pOiBI
aWRlIHRoZSB3YXJuaW5nIHZpZXcuCisgICAgICAgICgtW1dLRnVsbFNjcmVlbldpbmRvd0NvbnRy
b2xsZXIgYmVnYW5FeGl0RnVsbFNjcmVlbldpdGhJbml0aWFsRnJhbWU6ZmluYWxGcmFtZTpdKTog
QWRkIHNwZWNpYWwgY2FzZSB3aGVyZSB3ZSBhcmUgZXhpdGluZworICAgICAgICAgICAgZnJvbSBm
dWxsIHNjcmVlbiBtb2RlIHdoZW4gdGhlIGZ1bGwgc2NyZWVuIHdpbmRvdyBpcyBub3Qgb24gc2Ny
ZWVuLgorICAgICAgICAoLVtXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyIGZpbmlzaGVkRXhp
dEZ1bGxTY3JlZW5BbmltYXRpb246XSk6IFJlbW92ZSByZWZlcmVuY2UgdG8gX3VwZGF0ZU1lbnVB
bmREb2NrRm9yRnVsbFNjcmVlbi4KKyAgICAgICAgKC1bV0tGdWxsU2NyZWVuV2luZG93Q29udHJv
bGxlciBjdXN0b21XaW5kb3dzVG9FbnRlckZ1bGxTY3JlZW5Gb3JXaW5kb3c6XSk6IEFkZGVkLiBS
ZXR1cm4gdGhlIGJhY2tncm91bmQgd2luZG93IGFuZCB0aGUgZnVsbCBzY3JlZW4gd2luZG93Lgor
ICAgICAgICAoLVtXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyIGN1c3RvbVdpbmRvd3NUb0V4
aXRGdWxsU2NyZWVuRm9yV2luZG93Ol0pOiBEaXR0by4KKyAgICAgICAgKC1bV0tGdWxsU2NyZWVu
V2luZG93Q29udHJvbGxlciB3aW5kb3c6c3RhcnRDdXN0b21BbmltYXRpb25Ub0VudGVyRnVsbFNj
cmVlbldpdGhEdXJhdGlvbjpdKTogQWRkZWQuIENhbGwgdGhyb3VnaCB0byBfc3RhcnRFbnRlckZ1
bGxTY3JlZW5BbmltYXRpb25XaXRoRHVyYXRpb246CisgICAgICAgICgtW1dLRnVsbFNjcmVlbldp
bmRvd0NvbnRyb2xsZXIgd2luZG93OnN0YXJ0Q3VzdG9tQW5pbWF0aW9uVG9FeGl0RnVsbFNjcmVl
bldpdGhEdXJhdGlvbjpdKTogQWRkZWQuIENhbGwgdGhyb3VnaCB0byBfc3RhcnRFeGl0RnVsbFNj
cmVlbkFuaW1hdGlvbldpdGhEdXJhdGlvbjoKKworICAgICAgICBBZGQgYSBuZXcgdXRpbGl0eSBj
bGFzcyBXS0Z1bGxTY3JlZW5QbGFjZWhvbGRlclZpZXcsIHdoaWNoIHByZXNlbnRzIHRoZSBjb250
ZW50cyBvZiB0aGUgCisgICAgICAgIFdlYlZpZXcgcHJpb3IgdG8gZnVsbCBzY3JlZW4gd2l0aCBh
IG1lc3NhZ2UgaW5mb3JtaW5nIHRoZSB1c2VyIGhvdyB0byBleGl0IGZyb20gZnVsbCBzY3JlZW4g
bW9kZS4KKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xs
ZXIubW06CisgICAgICAgICgtW1dLRnVsbFNjcmVlblBsYWNlaG9sZGVyVmlldyBpbml0V2l0aEZy
YW1lOl0pOiBDcmVhdGUgdGhlIHdhcm5pbmcgdmlldyBhbmQgc2V0IHVwIHRoZSBwbGFjZWhvbGRl
ciBsYXllci4KKyAgICAgICAgKC1bV0tGdWxsU2NyZWVuUGxhY2Vob2xkZXJWaWV3IHNldENvbnRl
bnRzOl0pOiBQYXNzIGFsb25nIHRvIGNvbnRlbnQgdmlldyBsYXllci4KKyAgICAgICAgKC1bV0tG
dWxsU2NyZWVuUGxhY2Vob2xkZXJWaWV3IGNvbnRlbnRzXSk6IERpdHRvLgorICAgICAgICAoLVtX
S0Z1bGxTY3JlZW5QbGFjZWhvbGRlclZpZXcgc2V0RXhpdFdhcm5pbmdWaXNpYmxlOl0pOiBTaG93
IG9yIGhpZGUgdGhlIGV4aXQgd2FybmluZy4KKyAgICAgICAgKC1bV0tGdWxsU2NyZWVuUGxhY2Vo
b2xkZXJWaWV3IG1vdXNlRG93bjpdKTogQ2FsbCB0aGUgdGFyZ2V0IHdpdGggYWN0aW9uLgorCiAy
MDEyLTEwLTE4ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAg
ICAgQnVpbGQgZml4LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4g
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCBiYzZmZDliYmNkMTY5ZTE0OGQw
YTBmMzQ5YzlhZGQwMjZkZGY2OGRhLi5iYmY1MTAxYzczYmYxNGM5NWY1OGRmOGE4MWRjNWMxNTM0
OGY5ZjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtMTU3NSw2ICsxNTc1LDcgQEAgX3drU2ln
bmFsQ0ZSZWFkU3RyZWFtSGFzQnl0ZXMKIC5vYmpjX2NsYXNzX25hbWVfRE9NU3R5bGVTaGVldAog
Lm9iamNfY2xhc3NfbmFtZV9ET01TdHlsZVNoZWV0TGlzdAogLm9iamNfY2xhc3NfbmFtZV9ET01U
cmVlV2Fsa2VyCisub2JqY19jbGFzc19uYW1lX1dlYkNvcmVGdWxsU2NyZWVuV2FybmluZ1ZpZXcK
IC5vYmpjX2NsYXNzX25hbWVfV2ViQ29yZUZ1bGxTY3JlZW5XaW5kb3cKIC5vYmpjX2NsYXNzX25h
bWVfV2ViSFRNTENvbnZlcnRlcgogLm9iamNfY2xhc3NfbmFtZV9XZWJXaW5kb3dGYWRlQW5pbWF0
aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggNjYyNjJkYmQwZWJkODY1OTU1OGY2MjIyNmFkOTAzMmIwZWE5NjcxYi4uMTc1ZDc3
YzliM2EwODcxMjg4OWJjNzZkOGFlZjY0OTI3ZGJjN2M1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNTg5MSw2ICs1ODkxLDgg
QEAKIAkJQ0RCODU5RjcxNjBENDhBNDAwRTVCMDdGIC8qIE1lZGlhS2V5RXZlbnQuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RCODU5RjQxNjBENDg5
OTAwRTVCMDdGIC8qIE1lZGlhS2V5RXZlbnQuY3BwICovOyB9OwogCQlDREI4NTlGQTE2MEQ0OTQ5
MDBFNUIwN0YgLyogSlNNZWRpYUtleUV2ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQjg1OUY4MTYwRDQ5M0UwMEU1QjA3RiAvKiBKU01lZGlh
S2V5RXZlbnQuY3BwICovOyB9OwogCQlDREI4NTlGQjE2MEQ0OTRGMDBFNUIwN0YgLyogSlNNZWRp
YUtleUVycm9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENEQjg1OUYwMTYwRDQyREQwMEU1QjA3RiAvKiBKU01lZGlhS2V5RXJyb3IuY3BwICovOyB9
OworCQlDREM2OURENjE2MzIwMjZDMDA3QzM4REYgLyogV2ViQ29yZUZ1bGxTY3JlZW5XYXJuaW5n
Vmlldy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RD
NjlERDQxNjMyMDI2QzAwN0MzOERGIC8qIFdlYkNvcmVGdWxsU2NyZWVuV2FybmluZ1ZpZXcuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlDREM2OURE
NzE2MzIwMjZDMDA3QzM4REYgLyogV2ViQ29yZUZ1bGxTY3JlZW5XYXJuaW5nVmlldy5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQzY5REQ1MTYzMjAy
NkMwMDdDMzhERiAvKiBXZWJDb3JlRnVsbFNjcmVlbldhcm5pbmdWaWV3Lm1tICovOyB9OwogCQlD
REQ1MjVENzE0NUI2REQwMDA4RDIwNEQgLyogSlNIVE1MTWVkaWFFbGVtZW50Q3VzdG9tLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERjY1Q0NDMTQ1
QjZBRkUwMEM0QzdBQSAvKiBKU0hUTUxNZWRpYUVsZW1lbnRDdXN0b20uY3BwICovOyB9OwogCQlD
REVBNzYzMDE0NjA4QTUzMDA4QjMxRjEgLyogUGxhdGZvcm1DbG9ja0NBLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERUE3NjJFMTQ2MDg0REUwMDhC
MzFGMSAvKiBQbGF0Zm9ybUNsb2NrQ0EuY3BwICovOyB9OwogCQlDREVBNzYzNDE0NjBCNTZGMDA4
QjMxRjEgLyogQ2xvY2tHZW5lcmljLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IENERUE3NjMyMTQ2MEFFMjkwMDhCMzFGMSAvKiBDbG9ja0dlbmVyaWMu
Y3BwICovOyB9OwpAQCAtMTMyNjAsNiArMTMyNjIsOCBAQAogCQlDREI4NTlGODE2MEQ0OTNFMDBF
NUIwN0YgLyogSlNNZWRpYUtleUV2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTTWVkaWFLZXlFdmVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUNEQjg1OUY5MTYwRDQ5M0UwMEU1QjA3RiAvKiBKU01lZGlhS2V5RXZlbnQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNNZWRpYUtleUV2ZW50Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUNEQkQ5M0JBMTMzM0JENEIwMDI1NzBFMyAvKiBmdWxsc2NyZWVu
UXVpY2tUaW1lLmNzcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuY3NzOyBwYXRoID0gZnVsbHNjcmVlblF1aWNr
VGltZS5jc3M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQzY5REQ0MTYzMjAyNkMw
MDdDMzhERiAvKiBXZWJDb3JlRnVsbFNjcmVlbldhcm5pbmdWaWV3LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkNvcmVGdWxsU2NyZWVuV2FybmluZ1ZpZXcuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RDNjlERDUxNjMyMDI2QzAwN0MzOERGIC8qIFdlYkNv
cmVGdWxsU2NyZWVuV2FybmluZ1ZpZXcubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBXZWJDb3JlRnVsbFNjcmVlbldhcm5pbmdWaWV3Lm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlDRENFNUNEMDE0NjMzQkM5MDBENDdDQ0EgLyogRXZlbnRUYXJnZXRG
YWN0b3J5LmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEV2ZW50VGFyZ2V0RmFjdG9yeS5pbjsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RFQTc2MkMxNDYwODIyNDAwOEIzMUYxIC8q
IENsb2NrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENsb2NrLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNERUE3NjJFMTQ2MDg0REUwMDhCMzFGMSAvKiBQbGF0
Zm9ybUNsb2NrQ0EuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGxh
dGZvcm1DbG9ja0NBLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1NzUyLDYg
KzE1NzU2LDggQEAKIAkJCQlCQ0U2NTlFNTBFQTkyRkIyMDA3RTQ1MzMgLyogVGhlbWVNYWMuaCAq
LywKIAkJCQlCQ0U2NTlFODBFQTkyRkZBMDA3RTQ1MzMgLyogVGhlbWVNYWMubW0gKi8sCiAJCQkJ
NTFERjZEN0YwQjkyQTE4RTAwQzJEQzg1IC8qIFRocmVhZENoZWNrLm1tICovLAorCQkJCUNEQzY5
REQ0MTYzMjAyNkMwMDdDMzhERiAvKiBXZWJDb3JlRnVsbFNjcmVlbldhcm5pbmdWaWV3LmggKi8s
CisJCQkJQ0RDNjlERDUxNjMyMDI2QzAwN0MzOERGIC8qIFdlYkNvcmVGdWxsU2NyZWVuV2Fybmlu
Z1ZpZXcubW0gKi8sCiAJCQkJQ0QxMjdERUExNEYzMDk3OTAwRTg0Nzc5IC8qIFdlYkNvcmVGdWxs
U2NyZWVuV2luZG93LmggKi8sCiAJCQkJQ0QxMjdERUIxNEYzMDk3OTAwRTg0Nzc5IC8qIFdlYkNv
cmVGdWxsU2NyZWVuV2luZG93Lm1tICovLAogCQkJCTM3MTk0MTk1MTU2NkIzNzIwMEEyNzZEOCAv
KiBXZWJDb3JlTlNDZWxsRXh0cmFzLmggKi8sCkBAIC0yNTYzNSw2ICsyNTY0MSw3IEBACiAJCQkJ
RkQ1MzczNTMxMzdCNjUxODAwMDA4RENFIC8qIFplcm9Qb2xlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk3RTVEN0E3NzE2MUQzRjhGMDA4OTZDMzQgLyogT0VTRWxlbWVudEluZGV4VWludC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJN0U0NkY2RkIxNjI3QTJDQTAwMDYyMjIzIC8qIEpTT0VTRWxlbWVudElu
ZGV4VWludC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0RDNjlERDYxNjMyMDI2QzAwN0MzOERGIC8q
IFdlYkNvcmVGdWxsU2NyZWVuV2FybmluZ1ZpZXcuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJ
CXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjg3NDQs
NiArMjg3NTEsNyBAQAogCQkJCUZENTM3MzUyMTM3QjY1MTgwMDAwOERDRSAvKiBaZXJvUG9sZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk3RTVEN0E3NjE2MUQzRjhGMDA4OTZDMzQgLyogT0VTRWxl
bWVudEluZGV4VWludC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3RTQ2RjZGQTE2MjdBMkNBMDAw
NjIyMjMgLyogSlNPRVNFbGVtZW50SW5kZXhVaW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUNE
QzY5REQ3MTYzMjAyNkMwMDdDMzhERiAvKiBXZWJDb3JlRnVsbFNjcmVlbldhcm5pbmdWaWV3Lm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vz
c2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
V2ViQ29yZUZ1bGxTY3JlZW5XYXJuaW5nVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1dlYkNvcmVGdWxsU2NyZWVuV2FybmluZ1ZpZXcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNmVhOWFkNzg0
ZWFlMmRlMDk1ZDFlMzBlZGQ3YzBjNTRmYTZjY2NkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVGdWxsU2NyZWVuV2FybmluZ1ZpZXcuaApAQCAt
MCwwICsxLDQxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJDb3JlRnVsbFNjcmVlbldhcm5p
bmdWaWV3X2gKKyNkZWZpbmUgV2ViQ29yZUZ1bGxTY3JlZW5XYXJuaW5nVmlld19oCisKKyNpZiBF
TkFCTEUoRlVMTFNDUkVFTl9BUEkpCisKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisKK0Bp
bnRlcmZhY2UgIFdlYkNvcmVGdWxsU2NyZWVuV2FybmluZ1ZpZXcgOiBOU0JveCB7CisgICAgUmV0
YWluUHRyPE5TVGV4dEZpZWxkPiBfdGV4dEZpZWxkOworfQorLSAoaWQpaW5pdFdpdGhUaXRsZToo
TlNTdHJpbmcqKXRpdGxlOworQGVuZAorCisjZW5kaWYKKworI2VuZGlmIC8vIFdlYkNvcmVGdWxs
U2NyZWVuV2FybmluZ1ZpZXdfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1dlYkNvcmVGdWxsU2NyZWVuV2FybmluZ1ZpZXcubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvV2ViQ29yZUZ1bGxTY3JlZW5XYXJuaW5nVmlldy5tbQpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZWQ5
OGMxODkxZTY0NWMwNWZiNDFmNTIxY2U4YTY5NmNhZDZkY2QzCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVGdWxsU2NyZWVuV2FybmluZ1ZpZXcu
bW0KQEAgLTAsMCArMSwxMDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiV2ViQ29yZUZ1bGxTY3JlZW5XYXJuaW5nVmlldy5oIgorI2luY2x1ZGUgIkxvY2Fs
aXplZFN0cmluZ3MuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworc3RhdGlj
IGNvbnN0IENHRmxvYXQgV2FybmluZ1ZpZXdUZXh0V2hpdGUgPSAwLjk7CitzdGF0aWMgY29uc3Qg
Q0dGbG9hdCBXYXJuaW5nVmlld1RleHRBbHBoYSA9IDE7CitzdGF0aWMgY29uc3QgQ0dGbG9hdCBX
YXJuaW5nVmlld1RleHRTaXplID0gNDg7CitzdGF0aWMgY29uc3QgQ0dGbG9hdCBXYXJuaW5nVmll
d1BhZGRpbmcgPSAyMDsKK3N0YXRpYyBjb25zdCBDR0Zsb2F0IFdhcm5pbmdWaWV3Q29ybmVyUmFk
aXVzID0gMTA7CitzdGF0aWMgY29uc3QgQ0dGbG9hdCBXYXJuaW5nVmlld0JvcmRlcldoaXRlID0g
MC45Oworc3RhdGljIGNvbnN0IENHRmxvYXQgV2FybmluZ1ZpZXdCb3JkZXJBbHBoYSA9IDAuMjsK
K3N0YXRpYyBjb25zdCBDR0Zsb2F0IFdhcm5pbmdWaWV3QmFja2dyb3VuZFdoaXRlID0gMC4xOwor
c3RhdGljIGNvbnN0IENHRmxvYXQgV2FybmluZ1ZpZXdCYWNrZ3JvdW5kQWxwaGEgPSAwLjk7Citz
dGF0aWMgY29uc3QgQ0dGbG9hdCBXYXJuaW5nVmlld1NoYWRvd1doaXRlID0gMC4xOworc3RhdGlj
IGNvbnN0IENHRmxvYXQgV2FybmluZ1ZpZXdTaGFkb3dBbHBoYSA9IDE7CitzdGF0aWMgY29uc3Qg
ZmxvYXQgV2FybmluZ1ZpZXdTaGFkb3dPcGFjaXR5ID0gMC4yNTsKK3N0YXRpYyBjb25zdCBDR1Np
emUgV2FybmluZ1ZpZXdTaGFkb3dPZmZzZXQgPSB7MCwgLTJ9Oworc3RhdGljIGNvbnN0IENHRmxv
YXQgV2FybmluZ1ZpZXdTaGFkb3dSYWRpdXMgPSA1Oworc3RhdGljIGNvbnN0IE5TVGltZUludGVy
dmFsIFdhcm5pbmdWaWV3SGlkZURlbGF5ID0gMy4wOworc3RhdGljIGNvbnN0IE5TVGltZUludGVy
dmFsIFdhcm5pbmdWaWV3RmFkZUR1cmF0aW9uID0gMC41OworCitAaW1wbGVtZW50YXRpb24gV2Vi
Q29yZUZ1bGxTY3JlZW5XYXJuaW5nVmlldworCistIChpZClpbml0V2l0aFRpdGxlOihOU1N0cmlu
ZyopdGl0bGUKK3sKKyAgICBzZWxmID0gW3N1cGVyIGluaXRXaXRoRnJhbWU6TlNaZXJvUmVjdF07
CisgICAgaWYgKCFzZWxmKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgW3NlbGYgc2V0QXV0
b3Jlc2l6aW5nTWFzazooTlNWaWV3TWluWE1hcmdpbiB8IE5TVmlld01heFhNYXJnaW4gfCBOU1Zp
ZXdNaW5ZTWFyZ2luIHwgTlNWaWV3TWF4WU1hcmdpbildOworICAgIFtzZWxmIHNldEJveFR5cGU6
TlNCb3hDdXN0b21dOworICAgIFtzZWxmIHNldFRpdGxlUG9zaXRpb246TlNOb1RpdGxlXTsKKwor
ICAgIF90ZXh0RmllbGQgPSBhZG9wdE5TKFtbTlNUZXh0RmllbGQgYWxsb2NdIGluaXRXaXRoRnJh
bWU6TlNaZXJvUmVjdF0pOworICAgIFtfdGV4dEZpZWxkLmdldCgpIHNldEVkaXRhYmxlOk5PXTsK
KyAgICBbX3RleHRGaWVsZC5nZXQoKSBzZXRTZWxlY3RhYmxlOk5PXTsKKyAgICBbX3RleHRGaWVs
ZC5nZXQoKSBzZXRCb3JkZXJlZDpOT107CisgICAgW190ZXh0RmllbGQuZ2V0KCkgc2V0RHJhd3NC
YWNrZ3JvdW5kOk5PXTsKKworICAgIFJldGFpblB0cjxOU0ZvbnQ+IHRleHRGb250ID0gW05TRm9u
dCBib2xkU3lzdGVtRm9udE9mU2l6ZTpXYXJuaW5nVmlld1RleHRTaXplXTsKKyAgICBSZXRhaW5Q
dHI8TlNDb2xvcj4gdGV4dENvbG9yID0gW05TQ29sb3IgY29sb3JXaXRoQ2FsaWJyYXRlZFdoaXRl
Oldhcm5pbmdWaWV3VGV4dFdoaXRlIGFscGhhOldhcm5pbmdWaWV3VGV4dEFscGhhXTsKKyAgICBS
ZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PiBhdHRyaWJ1dGVzID0gYWRvcHROUyhbW05TRGljdGlvbmFy
eSBhbGxvY10gaW5pdFdpdGhPYmplY3RzQW5kS2V5czoKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dEZvbnQuZ2V0KCksIE5TRm9udEF0dHJpYnV0
ZU5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRleHRDb2xvci5nZXQoKSwgTlNGb3JlZ3JvdW5kQ29sb3JBdHRyaWJ1dGVOYW1lLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWxdKTsKKyAgICBS
ZXRhaW5QdHI8TlNBdHRyaWJ1dGVkU3RyaW5nPiB0ZXh0ID0gYWRvcHROUyhbW05TQXR0cmlidXRl
ZFN0cmluZyBhbGxvY10gaW5pdFdpdGhTdHJpbmc6dGl0bGUgYXR0cmlidXRlczphdHRyaWJ1dGVz
LmdldCgpXSk7CisgICAgW190ZXh0RmllbGQuZ2V0KCkgc2V0QXR0cmlidXRlZFN0cmluZ1ZhbHVl
OnRleHQuZ2V0KCldOworICAgIFtfdGV4dEZpZWxkLmdldCgpIHNpemVUb0ZpdF07CisgICAgTlNS
ZWN0IHRleHRGaWVsZEZyYW1lID0gW190ZXh0RmllbGQuZ2V0KCkgZnJhbWVdOworICAgIE5TU2l6
ZSBmcmFtZVNpemUgPSB0ZXh0RmllbGRGcmFtZS5zaXplOworICAgIGZyYW1lU2l6ZS53aWR0aCAr
PSBXYXJuaW5nVmlld1BhZGRpbmcgKiAyOworICAgIGZyYW1lU2l6ZS5oZWlnaHQgKz0gV2Fybmlu
Z1ZpZXdQYWRkaW5nICogMjsKKyAgICBbc2VsZiBzZXRGcmFtZVNpemU6ZnJhbWVTaXplXTsKKwor
ICAgIHRleHRGaWVsZEZyYW1lLm9yaWdpbiA9IE5TTWFrZVBvaW50KAorICAgICAgICAoZnJhbWVT
aXplLndpZHRoIC0gdGV4dEZpZWxkRnJhbWUuc2l6ZS53aWR0aCkgLyAyLAorICAgICAgICAoZnJh
bWVTaXplLmhlaWdodCAtIHRleHRGaWVsZEZyYW1lLnNpemUuaGVpZ2h0KSAvIDIpOworCisgICAg
Ly8gT2Zmc2V0IHRoZSBvcmlnaW4gYnkgdGhlIGZvbnQncyBkZXNjZW5kZXIsIHRvIGNlbnRlciB0
aGUgdGV4dCBmaWVsZCBhYm91dCB0aGUgYmFzZWxpbmU6CisgICAgdGV4dEZpZWxkRnJhbWUub3Jp
Z2luLnkgKz0gW1tfdGV4dEZpZWxkLmdldCgpIGZvbnRdIGRlc2NlbmRlcl07CisKKyAgICBbX3Rl
eHRGaWVsZC5nZXQoKSBzZXRGcmFtZTpOU0ludGVncmFsUmVjdCh0ZXh0RmllbGRGcmFtZSldOwor
ICAgIFtzZWxmIGFkZFN1YnZpZXc6X3RleHRGaWVsZC5nZXQoKV07CisKKyAgICBSZXRhaW5QdHI8
TlNDb2xvcj4gYmFja2dyb3VuZENvbG9yID0gW05TQ29sb3IgY29sb3JXaXRoQ2FsaWJyYXRlZFdo
aXRlOldhcm5pbmdWaWV3QmFja2dyb3VuZFdoaXRlIGFscGhhOldhcm5pbmdWaWV3QmFja2dyb3Vu
ZEFscGhhXTsKKyAgICBbc2VsZiBzZXRGaWxsQ29sb3I6YmFja2dyb3VuZENvbG9yLmdldCgpXTsK
KyAgICBbc2VsZiBzZXRDb3JuZXJSYWRpdXM6V2FybmluZ1ZpZXdDb3JuZXJSYWRpdXNdOworCisg
ICAgUmV0YWluUHRyPE5TQ29sb3I+IGJvcmRlckNvbG9yID0gW05TQ29sb3IgY29sb3JXaXRoQ2Fs
aWJyYXRlZFdoaXRlOldhcm5pbmdWaWV3Qm9yZGVyV2hpdGUgYWxwaGE6V2FybmluZ1ZpZXdCb3Jk
ZXJBbHBoYV07CisgICAgW3NlbGYgc2V0Qm9yZGVyQ29sb3I6Ym9yZGVyQ29sb3IuZ2V0KCldOwor
CisgICAgUmV0YWluUHRyPE5TU2hhZG93PiBzaGFkb3cgPSBhZG9wdE5TKFtbTlNTaGFkb3cgYWxs
b2NdIGluaXRdKTsKKyAgICBSZXRhaW5QdHI8TlNDb2xvcj4gc2hhZG93Q29sb3IgPSBbTlNDb2xv
ciBjb2xvcldpdGhDYWxpYnJhdGVkV2hpdGU6V2FybmluZ1ZpZXdTaGFkb3dXaGl0ZSBhbHBoYTpX
YXJuaW5nVmlld1NoYWRvd0FscGhhXTsKKyAgICBbc2hhZG93LmdldCgpIHNldFNoYWRvd0NvbG9y
OnNoYWRvd0NvbG9yLmdldCgpXTsKKyAgICBbc2hhZG93LmdldCgpIHNldFNoYWRvd09mZnNldDpX
YXJuaW5nVmlld1NoYWRvd09mZnNldF07CisgICAgW3NoYWRvdy5nZXQoKSBzZXRTaGFkb3dCbHVy
UmFkaXVzOldhcm5pbmdWaWV3U2hhZG93UmFkaXVzXTsKKyAgICBbc2VsZiBzZXRTaGFkb3c6c2hh
ZG93LmdldCgpXTsKKworICAgIHJldHVybiBzZWxmOworfQorQGVuZApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xs
ZXIuaAppbmRleCA5Y2U4OGFlNWE5NmJiZGJmOWRhZjljNjcwMzkxMDdhZjkyODhlOThjLi5jMzky
ZDNkZWNmMjcyZmU4Yzg4MTVkYjBiNTNkYWE1ZGMyNjUyYzk4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xs
ZXIuaApAQCAtNDAsMTEgKzQwLDEyIEBAIGNsYXNzIEludFJlY3Q7CiBAY2xhc3MgV0tWaWV3Owog
QGNsYXNzIFdlYldpbmRvd1NjYWxlQW5pbWF0aW9uOwogQGNsYXNzIFdlYldpbmRvd0ZhZGVBbmlt
YXRpb247CitAY2xhc3MgV0tGdWxsU2NyZWVuUGxhY2Vob2xkZXJWaWV3OwogCi1AaW50ZXJmYWNl
IFdLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIgOiBOU1dpbmRvd0NvbnRyb2xsZXIgeworQGlu
dGVyZmFjZSBXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyIDogTlNXaW5kb3dDb250cm9sbGVy
PE5TV2luZG93RGVsZWdhdGU+IHsKIEBwcml2YXRlCiAgICAgV0tWaWV3ICpfd2ViVmlldzsKLSAg
ICBSZXRhaW5QdHI8TlNJbWFnZVZpZXc+IF93ZWJWaWV3UGxhY2Vob2xkZXI7CisgICAgUmV0YWlu
UHRyPFdLRnVsbFNjcmVlblBsYWNlaG9sZGVyVmlldz4gX3dlYlZpZXdQbGFjZWhvbGRlcjsKICAg
ICBSZXRhaW5QdHI8V2ViV2luZG93U2NhbGVBbmltYXRpb24+IF9zY2FsZUFuaW1hdGlvbjsKICAg
ICBSZXRhaW5QdHI8V2ViV2luZG93RmFkZUFuaW1hdGlvbj4gX2ZhZGVBbmltYXRpb247CiAgICAg
UmV0YWluUHRyPE5TV2luZG93PiBfYmFja2dyb3VuZFdpbmRvdzsKQEAgLTU2LDYgKzU3LDcgQEAg
Y2xhc3MgSW50UmVjdDsKICAgICBCT09MIF9pc0V4aXRpbmdGdWxsU2NyZWVuOwogICAgIEJPT0wg
X2lzRnVsbFNjcmVlbjsKICAgICBCT09MIF9pc1BsYXlpbmc7CisgICAgTlNUaW1lSW50ZXJ2YWwg
X2FuaW1hdGlvbkR1cmF0aW9uOwogfQogCiAtIChXS1ZpZXcqKXdlYlZpZXc7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xs
ZXIubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dLRnVsbFNjcmVlbldpbmRvd0Nv
bnRyb2xsZXIubW0KaW5kZXggZWI4MjEzNGVmMWEwZTU3ZjZiNzVlNjYwODdhZjdmNTU3MzYwMThj
Ny4uODUxNDRiY2U4Njc0ZGI5NzkzOGY2NzA5ODMxM2ZkNDlkNzg5MzMzYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVy
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV0tGdWxsU2NyZWVuV2luZG93
Q29udHJvbGxlci5tbQpAQCAtMzksNiArMzksNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9EaXNwbGF5
U2xlZXBEaXNhYmxlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9GbG9hdFJlY3QuaD4KICNpbXBvcnQg
PFdlYkNvcmUvSW50UmVjdC5oPgorI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlRnVsbFNjcmVlbldh
cm5pbmdWaWV3Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVGdWxsU2NyZWVuV2luZG93Lmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1dlYldpbmRvd0FuaW1hdGlvbi5oPgogI2ltcG9ydCA8V2ViS2l0
L1dlYk5TV2luZG93RXh0cmFzLmg+CkBAIC01Myw4ICs1NCwxMiBAQCBzdGF0aWMgUmV0YWluUHRy
PE5TV2luZG93PiBjcmVhdGVCYWNrZ3JvdW5kRnVsbHNjcmVlbldpbmRvdyhOU1JlY3QgZnJhbWUp
Owogc3RhdGljIGNvbnN0IENGVGltZUludGVydmFsIGRlZmF1bHRBbmltYXRpb25EdXJhdGlvbiA9
IDAuNTsKIHN0YXRpYyBjb25zdCBOU1RpbWVJbnRlcnZhbCBEZWZhdWx0V2F0Y2hkb2dUaW1lcklu
dGVydmFsID0gMTsKIAorQGludGVyZmFjZSBOU1dpbmRvdyhNb3JlU3BlY2lmaWNGdWxsU2NyZWVu
QWN0aW9ucykKKy0gKHZvaWQpZXhpdEZ1bGxTY3JlZW5Nb2RlOihpZClzZW5kZXI7CistICh2b2lk
KWVudGVyRnVsbFNjcmVlbk1vZGU6KGlkKXNlbmRlcjsKK0BlbmQKKwogQGludGVyZmFjZSBXS0Z1
bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyKFByaXZhdGUpPE5TQW5pbWF0aW9uRGVsZWdhdGU+Ci0t
ICh2b2lkKV91cGRhdGVNZW51QW5kRG9ja0ZvckZ1bGxTY3JlZW47CiAtICh2b2lkKV9yZXBsYWNl
VmlldzooTlNWaWV3Kil2aWV3IHdpdGg6KE5TVmlldyopb3RoZXJWaWV3OwogLSAoV2ViUGFnZVBy
b3h5KilfcGFnZTsKIC0gKFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHkqKV9tYW5hZ2VyOwpAQCAt
NjIsNiArNjcsNzYgQEAgc3RhdGljIGNvbnN0IE5TVGltZUludGVydmFsIERlZmF1bHRXYXRjaGRv
Z1RpbWVySW50ZXJ2YWwgPSAxOwogLSAodm9pZClfc3RhcnRFeGl0RnVsbFNjcmVlbkFuaW1hdGlv
bldpdGhEdXJhdGlvbjooTlNUaW1lSW50ZXJ2YWwpZHVyYXRpb247CiBAZW5kCiAKK0BpbnRlcmZh
Y2UgV0tGdWxsU2NyZWVuUGxhY2Vob2xkZXJWaWV3IDogTlNWaWV3IHsKKyAgICBSZXRhaW5QdHI8
TlNWaWV3PiBfZXhpdFdhcm5pbmc7CisgICAgTlNPYmplY3QqIF90YXJnZXQ7CisgICAgU0VMIF9h
Y3Rpb247Cit9CitAcHJvcGVydHkocmV0YWluKSBpZCBjb250ZW50czsKK0Bwcm9wZXJ0eShhc3Np
Z24pIE5TT2JqZWN0KiB0YXJnZXQ7CitAcHJvcGVydHkoYXNzaWduKSBTRUwgYWN0aW9uOworLSAo
dm9pZClzZXRFeGl0V2FybmluZ1Zpc2libGU6KEJPT0wpdmlzaWJsZTsKK0BlbmQKKworQGltcGxl
bWVudGF0aW9uIFdLRnVsbFNjcmVlblBsYWNlaG9sZGVyVmlldworLSAoaWQpaW5pdFdpdGhGcmFt
ZTooTlNSZWN0KWZyYW1lUmVjdAoreworICAgIHNlbGYgPSBbc3VwZXIgaW5pdFdpdGhGcmFtZTpm
cmFtZVJlY3RdOworICAgIGlmICghc2VsZikKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIFtz
ZWxmIHNldExheWVyOltDQUxheWVyIGxheWVyXV07CisgICAgW3NlbGYgc2V0TGF5ZXJDb250ZW50
c1JlZHJhd1BvbGljeTpOU1ZpZXdMYXllckNvbnRlbnRzUmVkcmF3TmV2ZXJdOworICAgIFtzZWxm
IHNldFdhbnRzTGF5ZXI6WUVTXTsKKworICAgIF9leGl0V2FybmluZyA9IGFkb3B0TlMoW1tXZWJD
b3JlRnVsbFNjcmVlbldhcm5pbmdWaWV3IGFsbG9jXSBpbml0V2l0aFRpdGxlOkAiQ2xpY2sgdG8g
ZXhpdCBmdWxsIHNjcmVlbiBtb2RlIl0pOworICAgIE5TUmVjdCB3YXJuaW5nRnJhbWUgPSBbX2V4
aXRXYXJuaW5nLmdldCgpIGZyYW1lXTsKKyAgICB3YXJuaW5nRnJhbWUub3JpZ2luID0gTlNNYWtl
UG9pbnQoCisgICAgICAgIChmcmFtZVJlY3Quc2l6ZS53aWR0aCAtIHdhcm5pbmdGcmFtZS5zaXpl
LndpZHRoKSAvIDIsCisgICAgICAgIChmcmFtZVJlY3Quc2l6ZS5oZWlnaHQgLSB3YXJuaW5nRnJh
bWUuc2l6ZS5oZWlnaHQpIC8gMik7CisgICAgW19leGl0V2FybmluZy5nZXQoKSBzZXRGcmFtZTp3
YXJuaW5nRnJhbWVdOworICAgIFtfZXhpdFdhcm5pbmcuZ2V0KCkgc2V0SGlkZGVuOllFU107Cisg
ICAgW3NlbGYgYWRkU3VidmlldzpfZXhpdFdhcm5pbmcuZ2V0KCldOworCisgICAgcmV0dXJuIHNl
bGY7Cit9CisKK0BzeW50aGVzaXplIHRhcmdldCA9IF90YXJnZXQ7CitAc3ludGhlc2l6ZSBhY3Rp
b24gPSBfYWN0aW9uOworCitAZHluYW1pYyBjb250ZW50czsKKy0gKHZvaWQpc2V0Q29udGVudHM6
KGlkKWNvbnRlbnRzCit7CisgICAgW1tzZWxmIGxheWVyXSBzZXRDb250ZW50czpjb250ZW50c107
Cit9CisKKy0gKGlkKWNvbnRlbnRzCit7CisgICAgcmV0dXJuIFtbc2VsZiBsYXllcl0gY29udGVu
dHNdOworfQorCistICh2b2lkKXNldEV4aXRXYXJuaW5nVmlzaWJsZTooQk9PTCl2aXNpYmxlCit7
CisgICAgW19leGl0V2FybmluZy5nZXQoKSBzZXRIaWRkZW46IXZpc2libGVdOworICAgIGlmICh2
aXNpYmxlKSB7CisgICAgICAgIENJRmlsdGVyKiBmaWx0ZXIgPSBbQ0lGaWx0ZXIgZmlsdGVyV2l0
aE5hbWU6QCJDSUZhbHNlQ29sb3IiIGtleXNBbmRWYWx1ZXM6CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQCJpbnB1dENvbG9yMCIsIFtDSUNvbG9yIGNvbG9yV2l0aFJlZDowIGdyZWVuOjAg
Ymx1ZTowXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBAImlucHV0Q29sb3IxIiwgW0NJ
Q29sb3IgY29sb3JXaXRoUmVkOi45IGdyZWVuOi45IGJsdWU6LjldLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG5pbF07CisgICAgICAgIFtbc2VsZiBsYXllcl0gc2V0Q29tcG9zaXRpbmdG
aWx0ZXI6ZmlsdGVyXTsKKyAgICB9IGVsc2UKKyAgICAgICAgW1tzZWxmIGxheWVyXSBzZXRDb21w
b3NpdGluZ0ZpbHRlcjpuaWxdOworfQorCistICh2b2lkKW1vdXNlRG93bjooTlNFdmVudCAqKXRo
ZUV2ZW50Cit7CisgICAgaWYgKCFfdGFyZ2V0IHx8ICFfYWN0aW9uKQorICAgICAgICByZXR1cm47
CisgICAgW190YXJnZXQgcGVyZm9ybVNlbGVjdG9yOl9hY3Rpb25dOworfQorCitAZW5kCisKICNp
ZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNzAKIHN0YXRpYyBOU1JlY3Qg
Y29udmVydFJlY3RUb1NjcmVlbihOU1dpbmRvdyAqd2luZG93LCBOU1JlY3QgcmVjdCkKIHsKQEAg
LTkyLDYgKzE2Nyw4IEBAIHN0YXRpYyBOU1JlY3QgY29udmVydFJlY3RUb1NjcmVlbihOU1dpbmRv
dyAqd2luZG93LCBOU1JlY3QgcmVjdCkKICAgICBbd2luZG93IHJlbGVhc2VdOwogICAgIGlmICgh
c2VsZikKICAgICAgICAgcmV0dXJuIG5pbDsKKyAgICBbd2luZG93IHNldERlbGVnYXRlOnNlbGZd
OworICAgIFt3aW5kb3cgc2V0Q29sbGVjdGlvbkJlaGF2aW9yOihbd2luZG93IGNvbGxlY3Rpb25C
ZWhhdmlvcl0gfCBOU1dpbmRvd0NvbGxlY3Rpb25CZWhhdmlvckZ1bGxTY3JlZW5QcmltYXJ5KV07
CiAgICAgW3NlbGYgd2luZG93RGlkTG9hZF07CiAgICAgCiAgICAgcmV0dXJuIHNlbGY7CkBAIC0x
NzQsNyArMjUxLDYgQEAgc3RhdGljIE5TUmVjdCBjb252ZXJ0UmVjdFRvU2NyZWVuKE5TV2luZG93
ICp3aW5kb3csIE5TUmVjdCByZWN0KQogICAgIC8vIHRoZSBEb2NrJ3Mgc2l6ZSBvciBsb2NhdGlv
biwgb3IgdGhleSBtYXkgaGF2ZSBjaGFuZ2VkIHRoZSBmdWxsU2NyZWVuIHNjcmVlbidzIGRpbWVu
c2lvbnMuIAogICAgIC8vIFVwZGF0ZSBvdXIgcHJlc2VudGF0aW9uIHBhcmFtZXRlcnMsIGFuZCBl
bnN1cmUgdGhhdCB0aGUgZnVsbCBzY3JlZW4gd2luZG93IG9jY3VwaWVzIHRoZSAKICAgICAvLyBl
bnRpcmUgc2NyZWVuOgotICAgIFtzZWxmIF91cGRhdGVNZW51QW5kRG9ja0ZvckZ1bGxTY3JlZW5d
OwogICAgIE5TV2luZG93KiB3aW5kb3cgPSBbc2VsZiB3aW5kb3ddOwogICAgIE5TUmVjdCBzY3Jl
ZW5GcmFtZSA9IFtbd2luZG93IHNjcmVlbl0gZnJhbWVdOwogICAgIFt3aW5kb3cgc2V0RnJhbWU6
c2NyZWVuRnJhbWUgZGlzcGxheTpZRVNdOwpAQCAtMjEyLDggKzI4OCw2IEBAIHN0YXRpYyBSZXRh
aW5QdHI8Q0dJbWFnZVJlZj4gY3JlYXRlSW1hZ2VXaXRoQ29waWVkRGF0YShDR0ltYWdlUmVmIHNv
dXJjZUltYWdlKQogICAgICAgICByZXR1cm47CiAgICAgX2lzRnVsbFNjcmVlbiA9IFlFUzsKIAot
ICAgIFtzZWxmIF91cGRhdGVNZW51QW5kRG9ja0ZvckZ1bGxTY3JlZW5dOyAgIAotCiAgICAgaWYg
KCFzY3JlZW4pCiAgICAgICAgIHNjcmVlbiA9IFtOU1NjcmVlbiBtYWluU2NyZWVuXTsKICAgICBO
U1JlY3Qgc2NyZWVuRnJhbWUgPSBbc2NyZWVuIGZyYW1lXTsKQEAgLTI0NiwxMSArMzIwLDExIEBA
IHN0YXRpYyBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gY3JlYXRlSW1hZ2VXaXRoQ29waWVkRGF0YShD
R0ltYWdlUmVmIHNvdXJjZUltYWdlKQogCiAgICAgLy8gU3dhcCB0aGUgd2ViVmlldyBwbGFjZWhv
bGRlciBpbnRvIHBsYWNlLgogICAgIGlmICghX3dlYlZpZXdQbGFjZWhvbGRlcikgewotICAgICAg
ICBfd2ViVmlld1BsYWNlaG9sZGVyLmFkb3B0TlMoW1tOU0ltYWdlVmlldyBhbGxvY10gaW5pdF0p
OwotICAgICAgICBbX3dlYlZpZXdQbGFjZWhvbGRlci5nZXQoKSBzZXRMYXllcjpbQ0FMYXllciBs
YXllcl1dOwotICAgICAgICBbX3dlYlZpZXdQbGFjZWhvbGRlci5nZXQoKSBzZXRXYW50c0xheWVy
OllFU107CisgICAgICAgIF93ZWJWaWV3UGxhY2Vob2xkZXIuYWRvcHROUyhbW1dLRnVsbFNjcmVl
blBsYWNlaG9sZGVyVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpbX3dlYlZpZXcgZnJhbWVdXSk7
CisgICAgICAgIFtfd2ViVmlld1BsYWNlaG9sZGVyLmdldCgpIHNldFRhcmdldDpzZWxmXTsKKyAg
ICAgICAgW193ZWJWaWV3UGxhY2Vob2xkZXIuZ2V0KCkgc2V0QWN0aW9uOkBzZWxlY3RvcihjYW5j
ZWxPcGVyYXRpb246KV07CiAgICAgfQotICAgIFtbX3dlYlZpZXdQbGFjZWhvbGRlci5nZXQoKSBs
YXllcl0gc2V0Q29udGVudHM6KGlkKXdlYlZpZXdDb250ZW50cy5nZXQoKV07CisgICAgW193ZWJW
aWV3UGxhY2Vob2xkZXIuZ2V0KCkgc2V0Q29udGVudHM6KGlkKXdlYlZpZXdDb250ZW50cy5nZXQo
KV07CiAgICAgW3NlbGYgX3JlcGxhY2VWaWV3Ol93ZWJWaWV3IHdpdGg6X3dlYlZpZXdQbGFjZWhv
bGRlci5nZXQoKV07CiAgICAgCiAgICAgLy8gVGhlbiBpbnNlcnQgdGhlIFdlYlZpZXcgaW50byB0
aGUgZnVsbCBzY3JlZW4gd2luZG93CkBAIC0yNzMsOSArMzQ3LDggQEAgc3RhdGljIFJldGFpblB0
cjxDR0ltYWdlUmVmPiBjcmVhdGVJbWFnZVdpdGhDb3BpZWREYXRhKENHSW1hZ2VSZWYgc291cmNl
SW1hZ2UpCiAgICAgX2luaXRpYWxGcmFtZSA9IGluaXRpYWxGcmFtZTsKICAgICBfZmluYWxGcmFt
ZSA9IGZpbmFsRnJhbWU7CiAKLSAgICBbc2VsZiBfdXBkYXRlTWVudUFuZERvY2tGb3JGdWxsU2Ny
ZWVuXTsgICAKLQotICAgIFtzZWxmIF9zdGFydEVudGVyRnVsbFNjcmVlbkFuaW1hdGlvbldpdGhE
dXJhdGlvbjpkZWZhdWx0QW5pbWF0aW9uRHVyYXRpb25dOworICAgIEFTU0VSVChbW3NlbGYgd2lu
ZG93XSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGVudGVyRnVsbFNjcmVlbk1vZGU6KV0p
OworICAgIFtbc2VsZiB3aW5kb3ddIGVudGVyRnVsbFNjcmVlbk1vZGU6c2VsZl07CiB9CiAKIC0g
KHZvaWQpZmluaXNoZWRFbnRlckZ1bGxTY3JlZW5BbmltYXRpb246KGJvb2wpY29tcGxldGVkCkBA
IC0yOTQsMjQgKzM2NywxNCBAQCBzdGF0aWMgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGNyZWF0ZUlt
YWdlV2l0aENvcGllZERhdGEoQ0dJbWFnZVJlZiBzb3VyY2VJbWFnZSkKICAgICAgICAgd2luZG93
Qm91bmRzLm9yaWdpbiA9IE5TWmVyb1BvaW50OwogICAgICAgICBXS1dpbmRvd1NldENsaXBSZWN0
KFtzZWxmIHdpbmRvd10sIHdpbmRvd0JvdW5kcyk7CiAKLSAgICAgICAgTlNXaW5kb3cgKndlYldp
bmRvdyA9IFtfd2ViVmlld1BsYWNlaG9sZGVyLmdldCgpIHdpbmRvd107Ci0jaWYgX19NQUNfT1Nf
WF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDcwCi0gICAgICAgIC8vIEluIExpb24sIE5TV2lu
ZG93IHdpbGwgYW5pbWF0ZSBpbnRvIGFuZCBvdXQgb2Ygb3JkZXJPdXQgb3BlcmF0aW9ucy4gU3Vw
cHJlc3MgdGhhdAotICAgICAgICAvLyBiZWhhdmlvciBoZXJlLCBtYWtpbmcgc3VyZSB0byByZXNl
dCB0aGUgYW5pbWF0aW9uIGJlaGF2aW9yIGFmdGVyd2FyZC4KLSAgICAgICAgTlNXaW5kb3dBbmlt
YXRpb25CZWhhdmlvciBhbmltYXRpb25CZWhhdmlvciA9IFt3ZWJXaW5kb3cgYW5pbWF0aW9uQmVo
YXZpb3JdOwotICAgICAgICBbd2ViV2luZG93IHNldEFuaW1hdGlvbkJlaGF2aW9yOk5TV2luZG93
QW5pbWF0aW9uQmVoYXZpb3JOb25lXTsKLSNlbmRpZgotICAgICAgICBbd2ViV2luZG93IG9yZGVy
T3V0OnNlbGZdOwotI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA3MAot
ICAgICAgICBbd2ViV2luZG93IHNldEFuaW1hdGlvbkJlaGF2aW9yOmFuaW1hdGlvbkJlaGF2aW9y
XTsKLSNlbmRpZgotCiAgICAgICAgIFtfZmFkZUFuaW1hdGlvbi5nZXQoKSBzdG9wQW5pbWF0aW9u
XTsKICAgICAgICAgW19mYWRlQW5pbWF0aW9uLmdldCgpIHNldFdpbmRvdzpuaWxdOwogICAgICAg
ICBfZmFkZUFuaW1hdGlvbiA9IG51bGxwdHI7CiAgICAgICAgIAogICAgICAgICBbX2JhY2tncm91
bmRXaW5kb3cuZ2V0KCkgb3JkZXJPdXQ6c2VsZl07CiAgICAgICAgIFtfYmFja2dyb3VuZFdpbmRv
dy5nZXQoKSBzZXRGcmFtZTpOU1plcm9SZWN0IGRpc3BsYXk6WUVTXTsKKworICAgICAgICBbX3dl
YlZpZXdQbGFjZWhvbGRlci5nZXQoKSBzZXRFeGl0V2FybmluZ1Zpc2libGU6WUVTXTsKICAgICAg
ICAgTlNFbmFibGVTY3JlZW5VcGRhdGVzKCk7CiAgICAgfSBlbHNlCiAgICAgICAgIFtfc2NhbGVB
bmltYXRpb24uZ2V0KCkgc3RvcEFuaW1hdGlvbl07CkBAIC0zMjgsNyArMzkxLDkgQEAgc3RhdGlj
IFJldGFpblB0cjxDR0ltYWdlUmVmPiBjcmVhdGVJbWFnZVdpdGhDb3BpZWREYXRhKENHSW1hZ2VS
ZWYgc291cmNlSW1hZ2UpCiAgICAgICAgIHJldHVybjsKICAgICBfaXNGdWxsU2NyZWVuID0gTk87
CiAKLSAgICAvLyBTY3JlZW4gdXBkYXRlcyB0byBiZSByZS1lbmFibGVkIGluIF9zdGFydEV4aXRG
dWxsU2NyZWVuQW5pbWF0aW9uV2l0aER1cmF0aW9uOgorICAgIFtfd2ViVmlld1BsYWNlaG9sZGVy
LmdldCgpIHNldEV4aXRXYXJuaW5nVmlzaWJsZTpOT107CisKKyAgICAvLyBTY3JlZW4gdXBkYXRl
cyB0byBiZSByZS1lbmFibGVkIGluIF9zdGFydEV4aXRGdWxsU2NyZWVuQW5pbWF0aW9uV2l0aER1
cmF0aW9uOiBvciBiZWdhbkV4aXRGdWxsU2NyZWVuV2l0aEluaXRpYWxGcmFtZTpmaW5hbEZyYW1l
OgogICAgIE5TRGlzYWJsZVNjcmVlblVwZGF0ZXMoKTsKICAgICBbW3NlbGYgd2luZG93XSBzZXRB
dXRvZGlzcGxheTpOT107CiAKQEAgLTM0OSwzMCArNDE0LDE5IEBAIHN0YXRpYyBSZXRhaW5QdHI8
Q0dJbWFnZVJlZj4gY3JlYXRlSW1hZ2VXaXRoQ29waWVkRGF0YShDR0ltYWdlUmVmIHNvdXJjZUlt
YWdlKQogICAgIGlmIChfaXNFbnRlcmluZ0Z1bGxTY3JlZW4pCiAgICAgICAgIFtzZWxmIGZpbmlz
aGVkRW50ZXJGdWxsU2NyZWVuQW5pbWF0aW9uOk5PXTsKIAotICAgIFtzZWxmIF91cGRhdGVNZW51
QW5kRG9ja0ZvckZ1bGxTY3JlZW5dOwotICAgIAotICAgIE5TV2luZG93KiB3ZWJXaW5kb3cgPSBb
X3dlYlZpZXdQbGFjZWhvbGRlci5nZXQoKSB3aW5kb3ddOwotI2lmIF9fTUFDX09TX1hfVkVSU0lP
Tl9NSU5fUkVRVUlSRUQgPj0gMTA3MAotICAgIC8vIEluIExpb24sIE5TV2luZG93IHdpbGwgYW5p
bWF0ZSBpbnRvIGFuZCBvdXQgb2Ygb3JkZXJPdXQgb3BlcmF0aW9ucy4gU3VwcHJlc3MgdGhhdAot
ICAgIC8vIGJlaGF2aW9yIGhlcmUsIG1ha2luZyBzdXJlIHRvIHJlc2V0IHRoZSBhbmltYXRpb24g
YmVoYXZpb3IgYWZ0ZXJ3YXJkLgotICAgIE5TV2luZG93QW5pbWF0aW9uQmVoYXZpb3IgYW5pbWF0
aW9uQmVoYXZpb3IgPSBbd2ViV2luZG93IGFuaW1hdGlvbkJlaGF2aW9yXTsKLSAgICBbd2ViV2lu
ZG93IHNldEFuaW1hdGlvbkJlaGF2aW9yOk5TV2luZG93QW5pbWF0aW9uQmVoYXZpb3JOb25lXTsK
LSNlbmRpZgotICAgIC8vIElmIHRoZSB1c2VyIGhhcyBtb3ZlZCB0aGUgZnVsbFNjcmVlbiB3aW5k
b3cgaW50byBhIG5ldyBzcGFjZSwgdGVtcG9yYXJpbHkgY2hhbmdlCi0gICAgLy8gdGhlIGNvbGxl
Y3Rpb25CZWhhdmlvciBvZiB0aGUgd2ViVmlldydzIHdpbmRvdyBzbyB0aGF0IGl0IGlzIHB1bGxl
ZCBpbnRvIHRoZSBhY3RpdmUgc3BhY2U6Ci0gICAgaWYgKCEoW3dlYldpbmRvdyByZXNwb25kc1Rv
U2VsZWN0b3I6QHNlbGVjdG9yKGlzT25BY3RpdmVTcGFjZSldID8gW3dlYldpbmRvdyBpc09uQWN0
aXZlU3BhY2VdIDogWUVTKSkgewotICAgICAgICBOU1dpbmRvd0NvbGxlY3Rpb25CZWhhdmlvciBi
ZWhhdmlvciA9IFt3ZWJXaW5kb3cgY29sbGVjdGlvbkJlaGF2aW9yXTsKLSAgICAgICAgW3dlYldp
bmRvdyBzZXRDb2xsZWN0aW9uQmVoYXZpb3I6TlNXaW5kb3dDb2xsZWN0aW9uQmVoYXZpb3JDYW5K
b2luQWxsU3BhY2VzXTsKLSAgICAgICAgW3dlYldpbmRvdyBvcmRlcldpbmRvdzpOU1dpbmRvd0Jl
bG93IHJlbGF0aXZlVG86W1tzZWxmIHdpbmRvd10gd2luZG93TnVtYmVyXV07Ci0gICAgICAgIFt3
ZWJXaW5kb3cgc2V0Q29sbGVjdGlvbkJlaGF2aW9yOmJlaGF2aW9yXTsKLSAgICB9IGVsc2UKLSAg
ICAgICAgW3dlYldpbmRvdyBvcmRlcldpbmRvdzpOU1dpbmRvd0JlbG93IHJlbGF0aXZlVG86W1tz
ZWxmIHdpbmRvd10gd2luZG93TnVtYmVyXV07Ci0gICAgCi0jaWYgX19NQUNfT1NfWF9WRVJTSU9O
X01JTl9SRVFVSVJFRCA+PSAxMDcwCi0gICAgW3dlYldpbmRvdyBzZXRBbmltYXRpb25CZWhhdmlv
cjphbmltYXRpb25CZWhhdmlvcl07Ci0jZW5kaWYKKyAgICBpZiAoIVtbc2VsZiB3aW5kb3ddIGlz
T25BY3RpdmVTcGFjZV0pIHsKKyAgICAgICAgLy8gSWYgdGhlIGZ1bGwgc2NyZWVuIHdpbmRvdyBp
cyBub3QgaW4gdGhlIGFjdGl2ZSBzcGFjZSwgdGhlIE5TV2luZG93IGZ1bGwgc2NyZWVuIGFuaW1h
dGlvbiBkZWxlZ2F0ZSBtZXRob2RzCisgICAgICAgIC8vIHdpbGwgbmV2ZXIgYmUgY2FsbGVkLiBT
byBjYWxsIGZpbmlzaGVkRXhpdEZ1bGxTY3JlZW5BbmltYXRpb24gZXhwbGljaXRseS4KKyAgICAg
ICAgW3NlbGYgZmluaXNoZWRFeGl0RnVsbFNjcmVlbkFuaW1hdGlvbjpZRVNdOwogCi0gICAgW3Nl
bGYgX3N0YXJ0RXhpdEZ1bGxTY3JlZW5BbmltYXRpb25XaXRoRHVyYXRpb246ZGVmYXVsdEFuaW1h
dGlvbkR1cmF0aW9uXTsKKyAgICAgICAgLy8gQmVjYXVzZSB3ZSBhcmUgYnJlYWtpbmcgdGhlIG5v
cm1hbCBhbmltYXRpb24gcGF0dGVybiwgcmUtZW5hYmxlIHNjcmVlbiB1cGRhdGVzCisgICAgICAg
IC8vIGFzIGV4aXRGdWxsU2NyZWVuIGhhcyBkaXNhYmxlZCB0aGVtLCBidXQgX3N0YXJ0RXhpdEZ1
bGxTY3JlZW5BbmltYXRpb25XaXRoRHVyYXRpb246CisgICAgICAgIC8vIHdpbGwgbmV2ZXIgYmUg
Y2FsbGVkLgorICAgICAgICBOU0VuYWJsZVNjcmVlblVwZGF0ZXMoKTsKKyAgICB9CisKKyAgICBB
U1NFUlQoW1tzZWxmIHdpbmRvd10gcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihleGl0RnVs
bFNjcmVlbk1vZGU6KV0pOworICAgIFtbc2VsZiB3aW5kb3ddIGV4aXRGdWxsU2NyZWVuTW9kZTpz
ZWxmXTsKIH0KIAogc3RhdGljIHZvaWQgY29tcGxldGVGaW5pc2hFeGl0RnVsbFNjcmVlbkFuaW1h
dGlvbkFmdGVyUmVwYWludChXS0Vycm9yUmVmLCB2b2lkKik7CkBAIC0zODMsOCArNDM3LDYgQEAg
c3RhdGljIHZvaWQgY29tcGxldGVGaW5pc2hFeGl0RnVsbFNjcmVlbkFuaW1hdGlvbkFmdGVyUmVw
YWludChXS0Vycm9yUmVmLCB2b2lkKikKICAgICAgICAgcmV0dXJuOwogICAgIF9pc0V4aXRpbmdG
dWxsU2NyZWVuID0gTk87CiAKLSAgICBbc2VsZiBfdXBkYXRlTWVudUFuZERvY2tGb3JGdWxsU2Ny
ZWVuXTsKLQogICAgIC8vIFNjcmVlbiB1cGRhdGVzIHRvIGJlIHJlLWVuYWJsZWQgaW4gY29tcGxl
dGVGaW5pc2hFeGl0RnVsbFNjcmVlbkFuaW1hdGlvbkFmdGVyUmVwYWludC4KICAgICBOU0Rpc2Fi
bGVTY3JlZW5VcGRhdGVzKCk7CiAgICAgW1tfd2ViVmlld1BsYWNlaG9sZGVyLmdldCgpIHdpbmRv
d10gc2V0QXV0b2Rpc3BsYXk6Tk9dOwpAQCAtNDU1LDM1ICs1MDcsMzEgQEAgc3RhdGljIHZvaWQg
Y29tcGxldGVGaW5pc2hFeGl0RnVsbFNjcmVlbkFuaW1hdGlvbkFmdGVyUmVwYWludChXS0Vycm9y
UmVmLCB2b2lkKgogfQogCiAjcHJhZ21hIG1hcmsgLQotI3ByYWdtYSBtYXJrIEludGVybmFsIElu
dGVyZmFjZQorI3ByYWdtYSBtYXJrIEN1c3RvbSBOU1dpbmRvdyBGdWxsIFNjcmVlbiBBbmltYXRp
b24KIAotLSAodm9pZClfdXBkYXRlTWVudUFuZERvY2tGb3JGdWxsU2NyZWVuCistIChOU0FycmF5
ICopY3VzdG9tV2luZG93c1RvRW50ZXJGdWxsU2NyZWVuRm9yV2luZG93OihOU1dpbmRvdyAqKXdp
bmRvdwogewotICAgIC8vIE5TQXBwbGljYXRpb25QcmVzZW50YXRpb25PcHRpb25zIGlzIGF2YWls
YWJsZSBvbiA+IDEwLjYgb25seToKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVE
ID49IDEwNjAKLSAgICBOU0FwcGxpY2F0aW9uUHJlc2VudGF0aW9uT3B0aW9ucyBvcHRpb25zID0g
TlNBcHBsaWNhdGlvblByZXNlbnRhdGlvbkRlZmF1bHQ7Ci0gICAgTlNTY3JlZW4qIGZ1bGxTY3Jl
ZW5TY3JlZW4gPSBbW3NlbGYgd2luZG93XSBzY3JlZW5dOwotICAgIAotICAgIGlmIChfaXNGdWxs
U2NyZWVuKSB7Ci0gICAgICAgIC8vIEF1dG8taGlkZSB0aGUgbWVudSBiYXIgaWYgdGhlIGZ1bGxT
Y3JlZW5TY3JlZW4gY29udGFpbnMgdGhlIG1lbnUgYmFyOgotICAgICAgICAvLyBOT1RFOiBpZiB0
aGUgZnVsbFNjcmVlblNjcmVlbiBjb250YWlucyB0aGUgbWVudSBiYXIgYnV0IG5vdCB0aGUgZG9j
aywgd2UgbXVzdCBzdGlsbCAKLSAgICAgICAgLy8gYXV0by1oaWRlIHRoZSBkb2NrLCBvciBhbiBl
eGNlcHRpb24gd2lsbCBiZSB0aHJvd24uCi0gICAgICAgIGlmIChbW05TU2NyZWVuIHNjcmVlbnNd
IG9iamVjdEF0SW5kZXg6MF0gPT0gZnVsbFNjcmVlblNjcmVlbikKLSAgICAgICAgICAgIG9wdGlv
bnMgfD0gKE5TQXBwbGljYXRpb25QcmVzZW50YXRpb25BdXRvSGlkZU1lbnVCYXIgfCBOU0FwcGxp
Y2F0aW9uUHJlc2VudGF0aW9uQXV0b0hpZGVEb2NrKTsKLSAgICAgICAgLy8gQ2hlY2sgaWYgdGhl
IGN1cnJlbnQgc2NyZWVuIGNvbnRhaW5zIHRoZSBkb2NrIGJ5IGNvbXBhcmluZyB0aGUgc2NyZWVu
J3MgZnJhbWUgdG8gaXRzCi0gICAgICAgIC8vIHZpc2libGVGcmFtZTsgaWYgYSBkb2NrIGlzIHBy
ZXNlbnQsIHRoZSB2aXNpYmxlRnJhbWUgd2lsbCBkaWZmZXIuIElmIHRoZSBjdXJyZW50IHNjcmVl
bgotICAgICAgICAvLyBjb250YWlucyB0aGUgZG9jaywgaGlkZSBpdC4KLSAgICAgICAgZWxzZSBp
ZiAoIU5TRXF1YWxSZWN0cyhbZnVsbFNjcmVlblNjcmVlbiBmcmFtZV0sIFtmdWxsU2NyZWVuU2Ny
ZWVuIHZpc2libGVGcmFtZV0pKQotICAgICAgICAgICAgb3B0aW9ucyB8PSBOU0FwcGxpY2F0aW9u
UHJlc2VudGF0aW9uQXV0b0hpZGVEb2NrOwotICAgIH0KLSAgICAKLSAgICBpZiAoW05TQXBwIHJl
c3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc2V0UHJlc2VudGF0aW9uT3B0aW9uczopXSkKLSAg
ICAgICAgW05TQXBwIHNldFByZXNlbnRhdGlvbk9wdGlvbnM6b3B0aW9uc107Ci0gICAgZWxzZQot
I2VuZGlmCi0gICAgICAgIFNldFN5c3RlbVVJTW9kZShfaXNGdWxsU2NyZWVuID8ga1VJTW9kZUFs
bEhpZGRlbiA6IGtVSU1vZGVOb3JtYWwsIDApOworICAgIHJldHVybiBbTlNBcnJheSBhcnJheVdp
dGhPYmplY3RzOltzZWxmIHdpbmRvd10sIF9iYWNrZ3JvdW5kV2luZG93LmdldCgpLCBuaWxdOwog
fQogCistIChOU0FycmF5ICopY3VzdG9tV2luZG93c1RvRXhpdEZ1bGxTY3JlZW5Gb3JXaW5kb3c6
KE5TV2luZG93ICopd2luZG93Cit7CisgICAgcmV0dXJuIFtOU0FycmF5IGFycmF5V2l0aE9iamVj
dHM6W3NlbGYgd2luZG93XSwgX2JhY2tncm91bmRXaW5kb3cuZ2V0KCksIG5pbF07Cit9CisKKy0g
KHZvaWQpd2luZG93OihOU1dpbmRvdyAqKXdpbmRvdyBzdGFydEN1c3RvbUFuaW1hdGlvblRvRW50
ZXJGdWxsU2NyZWVuV2l0aER1cmF0aW9uOihOU1RpbWVJbnRlcnZhbClkdXJhdGlvbgoreworICAg
IFtzZWxmIF9zdGFydEVudGVyRnVsbFNjcmVlbkFuaW1hdGlvbldpdGhEdXJhdGlvbjpkdXJhdGlv
bl07Cit9CisKKy0gKHZvaWQpd2luZG93OihOU1dpbmRvdyAqKXdpbmRvdyBzdGFydEN1c3RvbUFu
aW1hdGlvblRvRXhpdEZ1bGxTY3JlZW5XaXRoRHVyYXRpb246KE5TVGltZUludGVydmFsKWR1cmF0
aW9uCit7CisgICAgW3NlbGYgX3N0YXJ0RXhpdEZ1bGxTY3JlZW5BbmltYXRpb25XaXRoRHVyYXRp
b246ZHVyYXRpb25dOworfQorCisjcHJhZ21hIG1hcmsgLQorI3ByYWdtYSBtYXJrIEludGVybmFs
IEludGVyZmFjZQorCiAtIChXZWJQYWdlUHJveHkqKV9wYWdlCiB7CiAgICAgcmV0dXJuIHRvSW1w
bChbX3dlYlZpZXcgcGFnZVJlZl0pOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>170201</attachid>
            <date>2012-10-23 11:45:49 -0700</date>
            <delta_ts>2012-10-23 14:55:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100025-20121023114426.patch</filename>
            <type>text/plain</type>
            <size>33559</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyMjQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmJlNjM4ZDZkZDkxOTU0
ZDRiZWQ1NDU0MzNmZDUwOGZiYTBjMzhhYy4uYjg2MWM1N2Y3YjkxODljOTI5ZWZiYzZjZjc1Y2Iy
YWJmNDc1NmE0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEyLTEwLTIyICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtXSzJdIFtNYWNdIFdlYktp
dCBGdWxsIFNjcmVlbiBBUEkgc2hvdWxkIHVzZSBOU1dpbmRvdyBmdWxsIHNjcmVlbiBBUEkuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDAwMjUKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBzaGFy
ZWQgaW1wbGVtZW50YXRpb24gb2YgYSB3YXJuaW5nIHZpZXcgZm9yIHVzZSBpbiBXZWJLaXQgYW5k
IFdlYktpdDIuCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBXZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1dlYkNv
cmVGdWxsU2NyZWVuV2FybmluZ1ZpZXcuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFj
L1dlYkNvcmVGdWxsU2NyZWVuV2FybmluZ1ZpZXcubW06IEFkZGVkLgorICAgICAgICAqIHBsYXRm
b3JtL0xvY2FsaXplZFN0cmluZ3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y2xpY2tUb0V4aXRG
dWxsU2NyZWVuVGV4dCk6IEFkZCBhIGxvY2FsaXplZCBzdHJpbmcgZW50cnkgZm9yIHRoZSAiY2xp
Y2sgdG8gZXhpdCIgdGV4dC4KKyAgICAgICAgKiBwbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmg6
CisKIDIwMTItMTAtMjMgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVs
LmNvbT4KIAogICAgICAgICBQb3NzaWJsZSBhc3NlcnRpb24gaGl0IGluIFdlYkNvcmU6OkhUTUxT
ZWxlY3RFbGVtZW50Ojp1cGRhdGVMaXN0Qm94U2VsZWN0aW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBhYWY5
NDUxMDA1YzRmYTVhOTk0ZDhkMjQ5NGI5ODFhNDhjMWJlNzczLi5lYjY2NGM0YzVhMmE1NGUxNzY2
ZjIxM2Y2NTkzZTM0Yzg1MTFiZTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMTIt
MTAtMjIgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgW1dLMl0g
W01hY10gV2ViS2l0IEZ1bGwgU2NyZWVuIEFQSSBzaG91bGQgdXNlIE5TV2luZG93IGZ1bGwgc2Ny
ZWVuIEFQSS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEwMDAyNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFVzZSB0aGUgTlNXaW5kb3cgZnVsbCBzY3JlZW4gQVBJIHdoZW4gdGFraW5nIHRoZSBXZWJWaWV3
IGZ1bGwgc2NyZWVuLiBUbyBmYWNpbGl0eSB0aGUgY2FzZSB3aGVyZSB0aGUgYnJvd3NlciB3aW5k
b3cgaXMgYWxyZWFkeQorICAgICAgICBpbiBmdWxsIHNjcmVlbiBtb2RlLCBubyBsb25nZXIgaGlk
ZSB0aGUgYnJvd3NlciB3aW5kb3cgd2hlbiBlbnRlcmluZyBmdWxsIHNjcmVlbi4gSW5zdGVhZCwg
cHJvdmlkZSBhIHBsYWNlaG9sZGVyIHZpZXcgd2l0aCAKKyAgICAgICAgaW5zdHJ1Y3Rpb25zIHRv
IGNsaWNrIHRoZSBwbGFjZWhvbGRlciB0byBleGl0IGZ1bGwgc2NyZWVuLgorCisgICAgICAgICog
VUlQcm9jZXNzL21hYy9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLmg6CisgICAgICAgICog
VUlQcm9jZXNzL21hYy9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLm1tOgorICAgICAgICAo
LVtXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyIGluaXRdKTogU2V0IHNlbGYgYXMgdGhlIHdp
bmRvdydzIGRlbGVnYXRlOyBlbmFibGUgd2luZG93J3MgZnVsbCBzY3JlZW4gYWN0aW9uLgorICAg
ICAgICAoLVtXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyIGFwcGxpY2F0aW9uRGlkQ2hhbmdl
U2NyZWVuUGFyYW1ldGVyczpdKTogUmVtb3ZlIHJlZmVyZW5jZSB0byBfdXBkYXRlV2luZG93QW5k
RG9ja0ZvckZ1bGxTY3JlZW4uCisgICAgICAgICgtW1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xs
ZXIgZW50ZXJGdWxsU2NyZWVuOl0pOiAgRGl0dG8uIENyZWF0ZSBhIFdLRnVsbFNjcmVlblBsYWNl
aG9sZGVyVmlldyBpbnN0ZWFkIG9mIGdlbmVyaWMgTlNJbWFnZVZpZXcuCisgICAgICAgICgtW1dL
RnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIgYmVnYW5FbnRlckZ1bGxTY3JlZW5XaXRoSW5pdGlh
bEZyYW1lOmZpbmFsRnJhbWU6XSk6IERpdHRvLiBDYWxsIE5TV2luZG93IGVudGVyRnVsbFNjcmVl
bjogQVBJLgorICAgICAgICAoLVtXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyIGZpbmlzaGVk
RW50ZXJGdWxsU2NyZWVuQW5pbWF0aW9uOl0pOiBTaG93IHRoZSB3YXJuaW5nIHZpZXcuCisgICAg
ICAgICgtW1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIgZXhpdEZ1bGxTY3JlZW5dKTogSGlk
ZSB0aGUgd2FybmluZyB2aWV3LgorICAgICAgICAoLVtXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9s
bGVyIGJlZ2FuRXhpdEZ1bGxTY3JlZW5XaXRoSW5pdGlhbEZyYW1lOmZpbmFsRnJhbWU6XSk6IEFk
ZCBzcGVjaWFsIGNhc2Ugd2hlcmUgd2UgYXJlIGV4aXRpbmcKKyAgICAgICAgICAgIGZyb20gZnVs
bCBzY3JlZW4gbW9kZSB3aGVuIHRoZSBmdWxsIHNjcmVlbiB3aW5kb3cgaXMgbm90IG9uIHNjcmVl
bi4KKyAgICAgICAgKC1bV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlciBmaW5pc2hlZEV4aXRG
dWxsU2NyZWVuQW5pbWF0aW9uOl0pOiBSZW1vdmUgcmVmZXJlbmNlIHRvIF91cGRhdGVNZW51QW5k
RG9ja0ZvckZ1bGxTY3JlZW4uCisgICAgICAgICgtW1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xs
ZXIgY3VzdG9tV2luZG93c1RvRW50ZXJGdWxsU2NyZWVuRm9yV2luZG93Ol0pOiBBZGRlZC4gUmV0
dXJuIHRoZSBiYWNrZ3JvdW5kIHdpbmRvdyBhbmQgdGhlIGZ1bGwgc2NyZWVuIHdpbmRvdy4KKyAg
ICAgICAgKC1bV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlciBjdXN0b21XaW5kb3dzVG9FeGl0
RnVsbFNjcmVlbkZvcldpbmRvdzpdKTogRGl0dG8uCisgICAgICAgICgtW1dLRnVsbFNjcmVlbldp
bmRvd0NvbnRyb2xsZXIgd2luZG93OnN0YXJ0Q3VzdG9tQW5pbWF0aW9uVG9FbnRlckZ1bGxTY3Jl
ZW5XaXRoRHVyYXRpb246XSk6IEFkZGVkLiBDYWxsIHRocm91Z2ggdG8gX3N0YXJ0RW50ZXJGdWxs
U2NyZWVuQW5pbWF0aW9uV2l0aER1cmF0aW9uOgorICAgICAgICAoLVtXS0Z1bGxTY3JlZW5XaW5k
b3dDb250cm9sbGVyIHdpbmRvdzpzdGFydEN1c3RvbUFuaW1hdGlvblRvRXhpdEZ1bGxTY3JlZW5X
aXRoRHVyYXRpb246XSk6IEFkZGVkLiBDYWxsIHRocm91Z2ggdG8gX3N0YXJ0RXhpdEZ1bGxTY3Jl
ZW5BbmltYXRpb25XaXRoRHVyYXRpb246CisKKyAgICAgICAgQWRkIGEgbmV3IHV0aWxpdHkgY2xh
c3MgV0tGdWxsU2NyZWVuUGxhY2Vob2xkZXJWaWV3LCB3aGljaCBwcmVzZW50cyB0aGUgY29udGVu
dHMgb2YgdGhlIAorICAgICAgICBXZWJWaWV3IHByaW9yIHRvIGZ1bGwgc2NyZWVuIHdpdGggYSBt
ZXNzYWdlIGluZm9ybWluZyB0aGUgdXNlciBob3cgdG8gZXhpdCBmcm9tIGZ1bGwgc2NyZWVuIG1v
ZGUuCisgICAgICAgICogVUlQcm9jZXNzL21hYy9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVy
Lm1tOgorICAgICAgICAoLVtXS0Z1bGxTY3JlZW5QbGFjZWhvbGRlclZpZXcgaW5pdFdpdGhGcmFt
ZTpdKTogQ3JlYXRlIHRoZSB3YXJuaW5nIHZpZXcgYW5kIHNldCB1cCB0aGUgcGxhY2Vob2xkZXIg
bGF5ZXIuCisgICAgICAgICgtW1dLRnVsbFNjcmVlblBsYWNlaG9sZGVyVmlldyBzZXRDb250ZW50
czpdKTogUGFzcyBhbG9uZyB0byBjb250ZW50IHZpZXcgbGF5ZXIuCisgICAgICAgICgtW1dLRnVs
bFNjcmVlblBsYWNlaG9sZGVyVmlldyBjb250ZW50c10pOiBEaXR0by4KKyAgICAgICAgKC1bV0tG
dWxsU2NyZWVuUGxhY2Vob2xkZXJWaWV3IHNldEV4aXRXYXJuaW5nVmlzaWJsZTpdKTogU2hvdyBv
ciBoaWRlIHRoZSBleGl0IHdhcm5pbmcuCisgICAgICAgICgtW1dLRnVsbFNjcmVlblBsYWNlaG9s
ZGVyVmlldyBtb3VzZURvd246XSk6IENhbGwgdGhlIHRhcmdldCB3aXRoIGFjdGlvbi4KKwogMjAx
Mi0xMC0yMyAgQWxsYW4gU2FuZGZlbGQgSmVuc2VuICA8YWxsYW4uamVuc2VuQGRpZ2lhLmNvbT4K
IAogICAgICAgICBbUXRdW1dLMl0gQWRkIHByZWZlcmVuY2UgZm9yIGVuYWJsaW5nIHNjcm9sbCBh
bmltYXRvcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXggMzUxNjNlNDQ5MWRiYjk5MzM2YjZkOTZl
ZDIwOGJjNDM5YmViYmNiZC4uMTcwZjYzMWE1ZTA5MGQxYTY3MjIzNzA1YmRmNjgzNjhkMTdiNDBj
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTYyOSw2ICs2MjksNyBAQCBfX1pON1dlYkNvcmUy
NUhpc3RvcnlQcm9wZXJ0eUxpc3RXcml0ZXI2YnVmZmVyRW0KIF9fWk43V2ViQ29yZTI1SGlzdG9y
eVByb3BlcnR5TGlzdFdyaXRlckMyRXYKIF9fWk43V2ViQ29yZTI1SW1tdXRhYmxlU3R5bGVQcm9w
ZXJ0eVNldEQxRXYKIF9fWk43V2ViQ29yZTI1YWRkTGFuZ3VhZ2VDaGFuZ2VPYnNlcnZlckVQdlBG
dlMwX0UKK19fWk43V2ViQ29yZTI1Y2xpY2tUb0V4aXRGdWxsU2NyZWVuVGV4dEV2CiBfX1pON1dl
YkNvcmUyNWNvbXB1dGVWaWV3cG9ydEF0dHJpYnV0ZXNFTlNfMTdWaWV3cG9ydEFyZ3VtZW50c0Vp
aWlmTlNfN0ludFNpemVFCiBfX1pON1dlYkNvcmUyNWpzU3RyaW5nV2l0aENhY2hlU2xvd0Nhc2VF
UE4zSlNDOUV4ZWNTdGF0ZUVSTjNXVEY3SGFzaE1hcElQTlMzXzEwU3RyaW5nSW1wbEVOUzBfNFdl
YWtJTlMwXzhKU1N0cmluZ0VFRU5TM183UHRySGFzaElTNl9FRU5TM18xMEhhc2hUcmFpdHNJUzZf
RUVOU0NfSVM5X0VFRUVTNl8KIF9fWk43V2ViQ29yZTI2VXNlclR5cGluZ0dlc3R1cmVJbmRpY2F0
b3IyN3Byb2Nlc3NpbmdVc2VyVHlwaW5nR2VzdHVyZUV2CkBAIC0xNTc3LDYgKzE1NzgsNyBAQCBf
d2tTaWduYWxDRlJlYWRTdHJlYW1IYXNCeXRlcwogLm9iamNfY2xhc3NfbmFtZV9ET01TdHlsZVNo
ZWV0CiAub2JqY19jbGFzc19uYW1lX0RPTVN0eWxlU2hlZXRMaXN0CiAub2JqY19jbGFzc19uYW1l
X0RPTVRyZWVXYWxrZXIKKy5vYmpjX2NsYXNzX25hbWVfV2ViQ29yZUZ1bGxTY3JlZW5XYXJuaW5n
VmlldwogLm9iamNfY2xhc3NfbmFtZV9XZWJDb3JlRnVsbFNjcmVlbldpbmRvdwogLm9iamNfY2xh
c3NfbmFtZV9XZWJIVE1MQ29udmVydGVyCiAub2JqY19jbGFzc19uYW1lX1dlYldpbmRvd0ZhZGVB
bmltYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCA2YzE1ODU2NmZhY2M2YjBjYzQ3YzRkM2I1OTQ3NWI1NzMxNGZkYzljLi45
M2YwYjk2NGZkMDE1ZTAxZjFlOTdkNjU5ZTU0M2U2ZDIxYWFlNjRhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC01ODkzLDYgKzU4
OTMsOCBAQAogCQlDREI4NTlGNzE2MEQ0OEE0MDBFNUIwN0YgLyogTWVkaWFLZXlFdmVudC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREI4NTlGNDE2
MEQ0ODk5MDBFNUIwN0YgLyogTWVkaWFLZXlFdmVudC5jcHAgKi87IH07CiAJCUNEQjg1OUZBMTYw
RDQ5NDkwMEU1QjA3RiAvKiBKU01lZGlhS2V5RXZlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RCODU5RjgxNjBENDkzRTAwRTVCMDdGIC8qIEpT
TWVkaWFLZXlFdmVudC5jcHAgKi87IH07CiAJCUNEQjg1OUZCMTYwRDQ5NEYwMEU1QjA3RiAvKiBK
U01lZGlhS2V5RXJyb3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0RCODU5RjAxNjBENDJERDAwRTVCMDdGIC8qIEpTTWVkaWFLZXlFcnJvci5jcHAg
Ki87IH07CisJCUNEQzY5REQ2MTYzMjAyNkMwMDdDMzhERiAvKiBXZWJDb3JlRnVsbFNjcmVlbldh
cm5pbmdWaWV3LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDREM2OURENDE2MzIwMjZDMDA3QzM4REYgLyogV2ViQ29yZUZ1bGxTY3JlZW5XYXJuaW5nVmll
dy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUNE
QzY5REQ3MTYzMjAyNkMwMDdDMzhERiAvKiBXZWJDb3JlRnVsbFNjcmVlbldhcm5pbmdWaWV3Lm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RDNjlERDUx
NjMyMDI2QzAwN0MzOERGIC8qIFdlYkNvcmVGdWxsU2NyZWVuV2FybmluZ1ZpZXcubW0gKi87IH07
CiAJCUNERDUyNUQ3MTQ1QjZERDAwMDhEMjA0RCAvKiBKU0hUTUxNZWRpYUVsZW1lbnRDdXN0b20u
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RGNjVD
Q0MxNDVCNkFGRTAwQzRDN0FBIC8qIEpTSFRNTE1lZGlhRWxlbWVudEN1c3RvbS5jcHAgKi87IH07
CiAJCUNERUE3NjMwMTQ2MDhBNTMwMDhCMzFGMSAvKiBQbGF0Zm9ybUNsb2NrQ0EuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFQTc2MkUxNDYwODRE
RTAwOEIzMUYxIC8qIFBsYXRmb3JtQ2xvY2tDQS5jcHAgKi87IH07CiAJCUNERUE3NjM0MTQ2MEI1
NkYwMDhCMzFGMSAvKiBDbG9ja0dlbmVyaWMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFQTc2MzIxNDYwQUUyOTAwOEIzMUYxIC8qIENsb2NrR2Vu
ZXJpYy5jcHAgKi87IH07CkBAIC0xMzI2Niw2ICsxMzI2OCw4IEBACiAJCUNEQjg1OUY4MTYwRDQ5
M0UwMEU1QjA3RiAvKiBKU01lZGlhS2V5RXZlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSlNNZWRpYUtleUV2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQ0RCODU5RjkxNjBENDkzRTAwRTVCMDdGIC8qIEpTTWVkaWFLZXlFdmVudC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU01lZGlhS2V5RXZlbnQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RCRDkzQkExMzMzQkQ0QjAwMjU3MEUzIC8qIGZ1bGxz
Y3JlZW5RdWlja1RpbWUuY3NzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5jc3M7IHBhdGggPSBmdWxsc2NyZWVu
UXVpY2tUaW1lLmNzczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RDNjlERDQxNjMy
MDI2QzAwN0MzOERGIC8qIFdlYkNvcmVGdWxsU2NyZWVuV2FybmluZ1ZpZXcuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29yZUZ1bGxTY3JlZW5XYXJuaW5nVmlldy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREM2OURENTE2MzIwMjZDMDA3QzM4REYgLyog
V2ViQ29yZUZ1bGxTY3JlZW5XYXJuaW5nVmlldy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IFdlYkNvcmVGdWxsU2NyZWVuV2FybmluZ1ZpZXcubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEQ0U1Q0QwMTQ2MzNCQzkwMEQ0N0NDQSAvKiBFdmVudFRh
cmdldEZhY3RvcnkuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRXZlbnRUYXJnZXRGYWN0b3J5
LmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREVBNzYyQzE0NjA4MjI0MDA4QjMx
RjEgLyogQ2xvY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2xvY2suaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RFQTc2MkUxNDYwODRERTAwOEIzMUYxIC8q
IFBsYXRmb3JtQ2xvY2tDQS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBQbGF0Zm9ybUNsb2NrQ0EuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTU3
NjAsNiArMTU3NjQsOCBAQAogCQkJCUJDRTY1OUU1MEVBOTJGQjIwMDdFNDUzMyAvKiBUaGVtZU1h
Yy5oICovLAogCQkJCUJDRTY1OUU4MEVBOTJGRkEwMDdFNDUzMyAvKiBUaGVtZU1hYy5tbSAqLywK
IAkJCQk1MURGNkQ3RjBCOTJBMThFMDBDMkRDODUgLyogVGhyZWFkQ2hlY2subW0gKi8sCisJCQkJ
Q0RDNjlERDQxNjMyMDI2QzAwN0MzOERGIC8qIFdlYkNvcmVGdWxsU2NyZWVuV2FybmluZ1ZpZXcu
aCAqLywKKwkJCQlDREM2OURENTE2MzIwMjZDMDA3QzM4REYgLyogV2ViQ29yZUZ1bGxTY3JlZW5X
YXJuaW5nVmlldy5tbSAqLywKIAkJCQlDRDEyN0RFQTE0RjMwOTc5MDBFODQ3NzkgLyogV2ViQ29y
ZUZ1bGxTY3JlZW5XaW5kb3cuaCAqLywKIAkJCQlDRDEyN0RFQjE0RjMwOTc5MDBFODQ3NzkgLyog
V2ViQ29yZUZ1bGxTY3JlZW5XaW5kb3cubW0gKi8sCiAJCQkJMzcxOTQxOTUxNTY2QjM3MjAwQTI3
NkQ4IC8qIFdlYkNvcmVOU0NlbGxFeHRyYXMuaCAqLywKQEAgLTI1NDg4LDYgKzI1NDk0LDcgQEAK
IAkJCQlGRDU4MUZCNTE1MjBGOTNCMDAzQTdBNzUgLyogV2F2ZVRhYmxlLmggaW4gSGVhZGVycyAq
LywKIAkJCQkyOUE4MTI0OTBGQkI5Q0E5MDA1MTAyOTMgLyogV2ViQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRjE5OUE4MDgyNDVFNTkwMDFFOUFCQyAv
KiBXZWJDb3JlRnJhbWVWaWV3LmggaW4gSGVhZGVycyAqLywKKwkJCQlDREM2OURENjE2MzIwMjZD
MDA3QzM4REYgLyogV2ViQ29yZUZ1bGxTY3JlZW5XYXJuaW5nVmlldy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQ0QxMjdERUUxNEYzMDk4NDAwRTg0Nzc5IC8qIFdlYkNvcmVGdWxsU2NyZWVuV2luZG93
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzUzRDkxMTExNDMxMENDMDAwRDgxN0UgLyogV2ViQ29y
ZUpTQ2xpZW50RGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNGMTk5QkIwODI0NUU1OTAwMUU5
QUJDIC8qIFdlYkNvcmVLZXlib2FyZFVJTW9kZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yODYxNSw2
ICsyODYyMiw3IEBACiAJCQkJRkQ3RjI5OTYxM0Q0QzBDQjAwQUQ5NTM1IC8qIFdhdmVTaGFwZXJQ
cm9jZXNzb3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkQ1ODFGQjQxNTIwRjkzQjAwM0E3QTc1
IC8qIFdhdmVUYWJsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyOUE4MTI0QTBGQkI5Q0E5MDA1
MTAyOTMgLyogV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIubW0gaW4gU291cmNlcyAqLywK
KwkJCQlDREM2OURENzE2MzIwMjZDMDA3QzM4REYgLyogV2ViQ29yZUZ1bGxTY3JlZW5XYXJuaW5n
Vmlldy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNEMTI3REVEMTRGMzA5N0QwMEU4NDc3OSAvKiBX
ZWJDb3JlRnVsbFNjcmVlbldpbmRvdy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUYzQkZDOUQzMTVD
MTc3RUMwMDQyNDRFNSAvKiBXZWJDb3JlTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTM3MTk0MTk2MTU2NkIzNzIwMEEyNzZEOCAvKiBXZWJDb3JlTlNDZWxsRXh0
cmFzLm0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0xvY2FsaXplZFN0cmluZ3MuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9jYWxpemVk
U3RyaW5ncy5jcHAKaW5kZXggYWJmMWJjYTVlODU0MTBiYTg3ZDVjYWI4MjUwMGQ5NjlmMTA5MjZh
Ny4uNjM4YzA1NWEyNjY5ZWQwYTFmY2NkZWQ1MTBmNjY1ZGFkNzE2ODhlYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5jcHAKQEAgLTk4NSw0ICs5ODUsOSBA
QCBTdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2VTdGVwTWlzbWF0Y2hUZXh0KGNvbnN0IFN0cmluZyYs
IGNvbnN0IFN0cmluZyYpCiAgICAgcmV0dXJuIFdFQl9VSV9TVFJJTkcoInN0ZXAgbWlzbWF0Y2gi
LCAiVmFsaWRhdGlvbiBtZXNzYWdlIGZvciBpbnB1dCBmb3JtIGNvbnRyb2xzIHdpdGggdmFsdWUg
bm90IHJlc3BlY3RpbmcgdGhlIHN0ZXAgYXR0cmlidXRlIik7CiB9CiAKK1N0cmluZyBjbGlja1Rv
RXhpdEZ1bGxTY3JlZW5UZXh0KCkKK3sKKyAgICByZXR1cm4gV0VCX1VJX1NUUklORygiQ2xpY2sg
dG8gZXhpdCBmdWxsIHNjcmVlbiBtb2RlIiwgIk1lc3NhZ2UgdG8gZGlzcGxheSBpbiBicm93c2Vy
IHdpbmRvdyB3aGVuIGluIHdlYmtpdCBmdWxsIHNjcmVlbiBtb2RlLiIpOworfQorCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2Nh
bGl6ZWRTdHJpbmdzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdz
LmgKaW5kZXggOGM1NmZlMWQ1Y2ZjMjQ3OTk2YzkwODI2NGMzZjk3MTI0MDEzNTQ1Yy4uZTNmMzMw
YTQ1ODgyYTJhZWVkNDI1ZTA0NjFmMjI3MmE3MTYyZThkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuaApAQCAtMjU3LDYgKzI1Nyw4IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICBTdHJpbmcgdW5hY2NlcHRhYmxlVExTQ2VydGlmaWNhdGUoKTsKICNlbmRp
ZgogCisgICAgU3RyaW5nIGNsaWNrVG9FeGl0RnVsbFNjcmVlblRleHQoKTsKKwogI2lmICFQTEFU
Rk9STShDSFJPTUlVTSkKICNkZWZpbmUgV0VCX1VJX1NUUklORyhzdHJpbmcsIGRlc2NyaXB0aW9u
KSBXZWJDb3JlOjpsb2NhbGl6ZWRTdHJpbmcoc3RyaW5nKQogI2RlZmluZSBXRUJfVUlfU1RSSU5H
X0tFWShzdHJpbmcsIGtleSwgZGVzY3JpcHRpb24pIFdlYkNvcmU6OmxvY2FsaXplZFN0cmluZyhr
ZXkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZUZ1bGxT
Y3JlZW5XYXJuaW5nVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVG
dWxsU2NyZWVuV2FybmluZ1ZpZXcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNmVhOWFkNzg0ZWFlMmRlMDk1ZDFl
MzBlZGQ3YzBjNTRmYTZjY2NkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1dlYkNvcmVGdWxsU2NyZWVuV2FybmluZ1ZpZXcuaApAQCAtMCwwICsxLDQxIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJDb3JlRnVsbFNjcmVlbldhcm5pbmdWaWV3X2gKKyNk
ZWZpbmUgV2ViQ29yZUZ1bGxTY3JlZW5XYXJuaW5nVmlld19oCisKKyNpZiBFTkFCTEUoRlVMTFND
UkVFTl9BUEkpCisKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisKK0BpbnRlcmZhY2UgIFdl
YkNvcmVGdWxsU2NyZWVuV2FybmluZ1ZpZXcgOiBOU0JveCB7CisgICAgUmV0YWluUHRyPE5TVGV4
dEZpZWxkPiBfdGV4dEZpZWxkOworfQorLSAoaWQpaW5pdFdpdGhUaXRsZTooTlNTdHJpbmcqKXRp
dGxlOworQGVuZAorCisjZW5kaWYKKworI2VuZGlmIC8vIFdlYkNvcmVGdWxsU2NyZWVuV2Fybmlu
Z1ZpZXdfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVG
dWxsU2NyZWVuV2FybmluZ1ZpZXcubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2Vi
Q29yZUZ1bGxTY3JlZW5XYXJuaW5nVmlldy5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZWQ5OGMxODkxZTY0NWMw
NWZiNDFmNTIxY2U4YTY5NmNhZDZkY2QzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVGdWxsU2NyZWVuV2FybmluZ1ZpZXcubW0KQEAgLTAsMCAr
MSwxMDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2Vi
Q29yZUZ1bGxTY3JlZW5XYXJuaW5nVmlldy5oIgorI2luY2x1ZGUgIkxvY2FsaXplZFN0cmluZ3Mu
aCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworc3RhdGljIGNvbnN0IENHRmxv
YXQgV2FybmluZ1ZpZXdUZXh0V2hpdGUgPSAwLjk7CitzdGF0aWMgY29uc3QgQ0dGbG9hdCBXYXJu
aW5nVmlld1RleHRBbHBoYSA9IDE7CitzdGF0aWMgY29uc3QgQ0dGbG9hdCBXYXJuaW5nVmlld1Rl
eHRTaXplID0gNDg7CitzdGF0aWMgY29uc3QgQ0dGbG9hdCBXYXJuaW5nVmlld1BhZGRpbmcgPSAy
MDsKK3N0YXRpYyBjb25zdCBDR0Zsb2F0IFdhcm5pbmdWaWV3Q29ybmVyUmFkaXVzID0gMTA7Citz
dGF0aWMgY29uc3QgQ0dGbG9hdCBXYXJuaW5nVmlld0JvcmRlcldoaXRlID0gMC45Oworc3RhdGlj
IGNvbnN0IENHRmxvYXQgV2FybmluZ1ZpZXdCb3JkZXJBbHBoYSA9IDAuMjsKK3N0YXRpYyBjb25z
dCBDR0Zsb2F0IFdhcm5pbmdWaWV3QmFja2dyb3VuZFdoaXRlID0gMC4xOworc3RhdGljIGNvbnN0
IENHRmxvYXQgV2FybmluZ1ZpZXdCYWNrZ3JvdW5kQWxwaGEgPSAwLjk7CitzdGF0aWMgY29uc3Qg
Q0dGbG9hdCBXYXJuaW5nVmlld1NoYWRvd1doaXRlID0gMC4xOworc3RhdGljIGNvbnN0IENHRmxv
YXQgV2FybmluZ1ZpZXdTaGFkb3dBbHBoYSA9IDE7CitzdGF0aWMgY29uc3QgZmxvYXQgV2Fybmlu
Z1ZpZXdTaGFkb3dPcGFjaXR5ID0gMC4yNTsKK3N0YXRpYyBjb25zdCBDR1NpemUgV2FybmluZ1Zp
ZXdTaGFkb3dPZmZzZXQgPSB7MCwgLTJ9Oworc3RhdGljIGNvbnN0IENHRmxvYXQgV2FybmluZ1Zp
ZXdTaGFkb3dSYWRpdXMgPSA1Oworc3RhdGljIGNvbnN0IE5TVGltZUludGVydmFsIFdhcm5pbmdW
aWV3SGlkZURlbGF5ID0gMy4wOworc3RhdGljIGNvbnN0IE5TVGltZUludGVydmFsIFdhcm5pbmdW
aWV3RmFkZUR1cmF0aW9uID0gMC41OworCitAaW1wbGVtZW50YXRpb24gV2ViQ29yZUZ1bGxTY3Jl
ZW5XYXJuaW5nVmlldworCistIChpZClpbml0V2l0aFRpdGxlOihOU1N0cmluZyopdGl0bGUKK3sK
KyAgICBzZWxmID0gW3N1cGVyIGluaXRXaXRoRnJhbWU6TlNaZXJvUmVjdF07CisgICAgaWYgKCFz
ZWxmKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgW3NlbGYgc2V0QXV0b3Jlc2l6aW5nTWFz
azooTlNWaWV3TWluWE1hcmdpbiB8IE5TVmlld01heFhNYXJnaW4gfCBOU1ZpZXdNaW5ZTWFyZ2lu
IHwgTlNWaWV3TWF4WU1hcmdpbildOworICAgIFtzZWxmIHNldEJveFR5cGU6TlNCb3hDdXN0b21d
OworICAgIFtzZWxmIHNldFRpdGxlUG9zaXRpb246TlNOb1RpdGxlXTsKKworICAgIF90ZXh0Rmll
bGQgPSBhZG9wdE5TKFtbTlNUZXh0RmllbGQgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNaZXJvUmVj
dF0pOworICAgIFtfdGV4dEZpZWxkLmdldCgpIHNldEVkaXRhYmxlOk5PXTsKKyAgICBbX3RleHRG
aWVsZC5nZXQoKSBzZXRTZWxlY3RhYmxlOk5PXTsKKyAgICBbX3RleHRGaWVsZC5nZXQoKSBzZXRC
b3JkZXJlZDpOT107CisgICAgW190ZXh0RmllbGQuZ2V0KCkgc2V0RHJhd3NCYWNrZ3JvdW5kOk5P
XTsKKworICAgIFJldGFpblB0cjxOU0ZvbnQ+IHRleHRGb250ID0gW05TRm9udCBib2xkU3lzdGVt
Rm9udE9mU2l6ZTpXYXJuaW5nVmlld1RleHRTaXplXTsKKyAgICBSZXRhaW5QdHI8TlNDb2xvcj4g
dGV4dENvbG9yID0gW05TQ29sb3IgY29sb3JXaXRoQ2FsaWJyYXRlZFdoaXRlOldhcm5pbmdWaWV3
VGV4dFdoaXRlIGFscGhhOldhcm5pbmdWaWV3VGV4dEFscGhhXTsKKyAgICBSZXRhaW5QdHI8TlNE
aWN0aW9uYXJ5PiBhdHRyaWJ1dGVzID0gYWRvcHROUyhbW05TRGljdGlvbmFyeSBhbGxvY10gaW5p
dFdpdGhPYmplY3RzQW5kS2V5czoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdGV4dEZvbnQuZ2V0KCksIE5TRm9udEF0dHJpYnV0ZU5hbWUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRDb2xvci5n
ZXQoKSwgTlNGb3JlZ3JvdW5kQ29sb3JBdHRyaWJ1dGVOYW1lLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWxdKTsKKyAgICBSZXRhaW5QdHI8TlNB
dHRyaWJ1dGVkU3RyaW5nPiB0ZXh0ID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxv
Y10gaW5pdFdpdGhTdHJpbmc6dGl0bGUgYXR0cmlidXRlczphdHRyaWJ1dGVzLmdldCgpXSk7Cisg
ICAgW190ZXh0RmllbGQuZ2V0KCkgc2V0QXR0cmlidXRlZFN0cmluZ1ZhbHVlOnRleHQuZ2V0KCld
OworICAgIFtfdGV4dEZpZWxkLmdldCgpIHNpemVUb0ZpdF07CisgICAgTlNSZWN0IHRleHRGaWVs
ZEZyYW1lID0gW190ZXh0RmllbGQuZ2V0KCkgZnJhbWVdOworICAgIE5TU2l6ZSBmcmFtZVNpemUg
PSB0ZXh0RmllbGRGcmFtZS5zaXplOworICAgIGZyYW1lU2l6ZS53aWR0aCArPSBXYXJuaW5nVmll
d1BhZGRpbmcgKiAyOworICAgIGZyYW1lU2l6ZS5oZWlnaHQgKz0gV2FybmluZ1ZpZXdQYWRkaW5n
ICogMjsKKyAgICBbc2VsZiBzZXRGcmFtZVNpemU6ZnJhbWVTaXplXTsKKworICAgIHRleHRGaWVs
ZEZyYW1lLm9yaWdpbiA9IE5TTWFrZVBvaW50KAorICAgICAgICAoZnJhbWVTaXplLndpZHRoIC0g
dGV4dEZpZWxkRnJhbWUuc2l6ZS53aWR0aCkgLyAyLAorICAgICAgICAoZnJhbWVTaXplLmhlaWdo
dCAtIHRleHRGaWVsZEZyYW1lLnNpemUuaGVpZ2h0KSAvIDIpOworCisgICAgLy8gT2Zmc2V0IHRo
ZSBvcmlnaW4gYnkgdGhlIGZvbnQncyBkZXNjZW5kZXIsIHRvIGNlbnRlciB0aGUgdGV4dCBmaWVs
ZCBhYm91dCB0aGUgYmFzZWxpbmU6CisgICAgdGV4dEZpZWxkRnJhbWUub3JpZ2luLnkgKz0gW1tf
dGV4dEZpZWxkLmdldCgpIGZvbnRdIGRlc2NlbmRlcl07CisKKyAgICBbX3RleHRGaWVsZC5nZXQo
KSBzZXRGcmFtZTpOU0ludGVncmFsUmVjdCh0ZXh0RmllbGRGcmFtZSldOworICAgIFtzZWxmIGFk
ZFN1YnZpZXc6X3RleHRGaWVsZC5nZXQoKV07CisKKyAgICBSZXRhaW5QdHI8TlNDb2xvcj4gYmFj
a2dyb3VuZENvbG9yID0gW05TQ29sb3IgY29sb3JXaXRoQ2FsaWJyYXRlZFdoaXRlOldhcm5pbmdW
aWV3QmFja2dyb3VuZFdoaXRlIGFscGhhOldhcm5pbmdWaWV3QmFja2dyb3VuZEFscGhhXTsKKyAg
ICBbc2VsZiBzZXRGaWxsQ29sb3I6YmFja2dyb3VuZENvbG9yLmdldCgpXTsKKyAgICBbc2VsZiBz
ZXRDb3JuZXJSYWRpdXM6V2FybmluZ1ZpZXdDb3JuZXJSYWRpdXNdOworCisgICAgUmV0YWluUHRy
PE5TQ29sb3I+IGJvcmRlckNvbG9yID0gW05TQ29sb3IgY29sb3JXaXRoQ2FsaWJyYXRlZFdoaXRl
Oldhcm5pbmdWaWV3Qm9yZGVyV2hpdGUgYWxwaGE6V2FybmluZ1ZpZXdCb3JkZXJBbHBoYV07Cisg
ICAgW3NlbGYgc2V0Qm9yZGVyQ29sb3I6Ym9yZGVyQ29sb3IuZ2V0KCldOworCisgICAgUmV0YWlu
UHRyPE5TU2hhZG93PiBzaGFkb3cgPSBhZG9wdE5TKFtbTlNTaGFkb3cgYWxsb2NdIGluaXRdKTsK
KyAgICBSZXRhaW5QdHI8TlNDb2xvcj4gc2hhZG93Q29sb3IgPSBbTlNDb2xvciBjb2xvcldpdGhD
YWxpYnJhdGVkV2hpdGU6V2FybmluZ1ZpZXdTaGFkb3dXaGl0ZSBhbHBoYTpXYXJuaW5nVmlld1No
YWRvd0FscGhhXTsKKyAgICBbc2hhZG93LmdldCgpIHNldFNoYWRvd0NvbG9yOnNoYWRvd0NvbG9y
LmdldCgpXTsKKyAgICBbc2hhZG93LmdldCgpIHNldFNoYWRvd09mZnNldDpXYXJuaW5nVmlld1No
YWRvd09mZnNldF07CisgICAgW3NoYWRvdy5nZXQoKSBzZXRTaGFkb3dCbHVyUmFkaXVzOldhcm5p
bmdWaWV3U2hhZG93UmFkaXVzXTsKKyAgICBbc2VsZiBzZXRTaGFkb3c6c2hhZG93LmdldCgpXTsK
KworICAgIHJldHVybiBzZWxmOworfQorQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL21hYy9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvbWFjL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIuaAppbmRleCA5
Y2U4OGFlNWE5NmJiZGJmOWRhZjljNjcwMzkxMDdhZjkyODhlOThjLi5jMzkyZDNkZWNmMjcyZmU4
Yzg4MTVkYjBiNTNkYWE1ZGMyNjUyYzk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvbWFjL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvbWFjL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIuaApAQCAtNDAs
MTEgKzQwLDEyIEBAIGNsYXNzIEludFJlY3Q7CiBAY2xhc3MgV0tWaWV3OwogQGNsYXNzIFdlYldp
bmRvd1NjYWxlQW5pbWF0aW9uOwogQGNsYXNzIFdlYldpbmRvd0ZhZGVBbmltYXRpb247CitAY2xh
c3MgV0tGdWxsU2NyZWVuUGxhY2Vob2xkZXJWaWV3OwogCi1AaW50ZXJmYWNlIFdLRnVsbFNjcmVl
bldpbmRvd0NvbnRyb2xsZXIgOiBOU1dpbmRvd0NvbnRyb2xsZXIgeworQGludGVyZmFjZSBXS0Z1
bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyIDogTlNXaW5kb3dDb250cm9sbGVyPE5TV2luZG93RGVs
ZWdhdGU+IHsKIEBwcml2YXRlCiAgICAgV0tWaWV3ICpfd2ViVmlldzsKLSAgICBSZXRhaW5QdHI8
TlNJbWFnZVZpZXc+IF93ZWJWaWV3UGxhY2Vob2xkZXI7CisgICAgUmV0YWluUHRyPFdLRnVsbFNj
cmVlblBsYWNlaG9sZGVyVmlldz4gX3dlYlZpZXdQbGFjZWhvbGRlcjsKICAgICBSZXRhaW5QdHI8
V2ViV2luZG93U2NhbGVBbmltYXRpb24+IF9zY2FsZUFuaW1hdGlvbjsKICAgICBSZXRhaW5QdHI8
V2ViV2luZG93RmFkZUFuaW1hdGlvbj4gX2ZhZGVBbmltYXRpb247CiAgICAgUmV0YWluUHRyPE5T
V2luZG93PiBfYmFja2dyb3VuZFdpbmRvdzsKQEAgLTU2LDYgKzU3LDcgQEAgY2xhc3MgSW50UmVj
dDsKICAgICBCT09MIF9pc0V4aXRpbmdGdWxsU2NyZWVuOwogICAgIEJPT0wgX2lzRnVsbFNjcmVl
bjsKICAgICBCT09MIF9pc1BsYXlpbmc7CisgICAgTlNUaW1lSW50ZXJ2YWwgX2FuaW1hdGlvbkR1
cmF0aW9uOwogfQogCiAtIChXS1ZpZXcqKXdlYlZpZXc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvbWFjL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIubW0gYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIubW0K
aW5kZXggZWI4MjEzNGVmMWEwZTU3ZjZiNzVlNjYwODdhZjdmNTU3MzYwMThjNy4uOWM1ODM1NDIx
MmQwMWY5NDYxY2FhMWRhZmU2MjM5NzZlY2Q1ZDA1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL21hYy9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5t
bQpAQCAtMzksNiArMzksOCBAQAogI2ltcG9ydCA8V2ViQ29yZS9EaXNwbGF5U2xlZXBEaXNhYmxl
ci5oPgogI2ltcG9ydCA8V2ViQ29yZS9GbG9hdFJlY3QuaD4KICNpbXBvcnQgPFdlYkNvcmUvSW50
UmVjdC5oPgorI2ltcG9ydCA8V2ViQ29yZS9Mb2NhbGl6ZWRTdHJpbmdzLmg+CisjaW1wb3J0IDxX
ZWJDb3JlL1dlYkNvcmVGdWxsU2NyZWVuV2FybmluZ1ZpZXcuaD4KICNpbXBvcnQgPFdlYkNvcmUv
V2ViQ29yZUZ1bGxTY3JlZW5XaW5kb3cuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViV2luZG93QW5p
bWF0aW9uLmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViTlNXaW5kb3dFeHRyYXMuaD4KQEAgLTUzLDgg
KzU1LDEyIEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNXaW5kb3c+IGNyZWF0ZUJhY2tncm91bmRGdWxs
c2NyZWVuV2luZG93KE5TUmVjdCBmcmFtZSk7CiBzdGF0aWMgY29uc3QgQ0ZUaW1lSW50ZXJ2YWwg
ZGVmYXVsdEFuaW1hdGlvbkR1cmF0aW9uID0gMC41Owogc3RhdGljIGNvbnN0IE5TVGltZUludGVy
dmFsIERlZmF1bHRXYXRjaGRvZ1RpbWVySW50ZXJ2YWwgPSAxOwogCitAaW50ZXJmYWNlIE5TV2lu
ZG93KE1vcmVTcGVjaWZpY0Z1bGxTY3JlZW5BY3Rpb25zKQorLSAodm9pZClleGl0RnVsbFNjcmVl
bk1vZGU6KGlkKXNlbmRlcjsKKy0gKHZvaWQpZW50ZXJGdWxsU2NyZWVuTW9kZTooaWQpc2VuZGVy
OworQGVuZAorCiBAaW50ZXJmYWNlIFdLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIoUHJpdmF0
ZSk8TlNBbmltYXRpb25EZWxlZ2F0ZT4KLS0gKHZvaWQpX3VwZGF0ZU1lbnVBbmREb2NrRm9yRnVs
bFNjcmVlbjsKIC0gKHZvaWQpX3JlcGxhY2VWaWV3OihOU1ZpZXcqKXZpZXcgd2l0aDooTlNWaWV3
KilvdGhlclZpZXc7CiAtIChXZWJQYWdlUHJveHkqKV9wYWdlOwogLSAoV2ViRnVsbFNjcmVlbk1h
bmFnZXJQcm94eSopX21hbmFnZXI7CkBAIC02Miw2ICs2OCw3NiBAQCBzdGF0aWMgY29uc3QgTlNU
aW1lSW50ZXJ2YWwgRGVmYXVsdFdhdGNoZG9nVGltZXJJbnRlcnZhbCA9IDE7CiAtICh2b2lkKV9z
dGFydEV4aXRGdWxsU2NyZWVuQW5pbWF0aW9uV2l0aER1cmF0aW9uOihOU1RpbWVJbnRlcnZhbClk
dXJhdGlvbjsKIEBlbmQKIAorQGludGVyZmFjZSBXS0Z1bGxTY3JlZW5QbGFjZWhvbGRlclZpZXcg
OiBOU1ZpZXcgeworICAgIFJldGFpblB0cjxOU1ZpZXc+IF9leGl0V2FybmluZzsKKyAgICBOU09i
amVjdCogX3RhcmdldDsKKyAgICBTRUwgX2FjdGlvbjsKK30KK0Bwcm9wZXJ0eShyZXRhaW4pIGlk
IGNvbnRlbnRzOworQHByb3BlcnR5KGFzc2lnbikgTlNPYmplY3QqIHRhcmdldDsKK0Bwcm9wZXJ0
eShhc3NpZ24pIFNFTCBhY3Rpb247CistICh2b2lkKXNldEV4aXRXYXJuaW5nVmlzaWJsZTooQk9P
TCl2aXNpYmxlOworQGVuZAorCitAaW1wbGVtZW50YXRpb24gV0tGdWxsU2NyZWVuUGxhY2Vob2xk
ZXJWaWV3CistIChpZClpbml0V2l0aEZyYW1lOihOU1JlY3QpZnJhbWVSZWN0Cit7CisgICAgc2Vs
ZiA9IFtzdXBlciBpbml0V2l0aEZyYW1lOmZyYW1lUmVjdF07CisgICAgaWYgKCFzZWxmKQorICAg
ICAgICByZXR1cm4gbmlsOworCisgICAgW3NlbGYgc2V0TGF5ZXI6W0NBTGF5ZXIgbGF5ZXJdXTsK
KyAgICBbc2VsZiBzZXRMYXllckNvbnRlbnRzUmVkcmF3UG9saWN5Ok5TVmlld0xheWVyQ29udGVu
dHNSZWRyYXdOZXZlcl07CisgICAgW3NlbGYgc2V0V2FudHNMYXllcjpZRVNdOworCisgICAgX2V4
aXRXYXJuaW5nID0gYWRvcHROUyhbW1dlYkNvcmVGdWxsU2NyZWVuV2FybmluZ1ZpZXcgYWxsb2Nd
IGluaXRXaXRoVGl0bGU6Y2xpY2tUb0V4aXRGdWxsU2NyZWVuVGV4dCgpXSk7CisgICAgTlNSZWN0
IHdhcm5pbmdGcmFtZSA9IFtfZXhpdFdhcm5pbmcuZ2V0KCkgZnJhbWVdOworICAgIHdhcm5pbmdG
cmFtZS5vcmlnaW4gPSBOU01ha2VQb2ludCgKKyAgICAgICAgKGZyYW1lUmVjdC5zaXplLndpZHRo
IC0gd2FybmluZ0ZyYW1lLnNpemUud2lkdGgpIC8gMiwKKyAgICAgICAgKGZyYW1lUmVjdC5zaXpl
LmhlaWdodCAtIHdhcm5pbmdGcmFtZS5zaXplLmhlaWdodCkgLyAyKTsKKyAgICBbX2V4aXRXYXJu
aW5nLmdldCgpIHNldEZyYW1lOndhcm5pbmdGcmFtZV07CisgICAgW19leGl0V2FybmluZy5nZXQo
KSBzZXRIaWRkZW46WUVTXTsKKyAgICBbc2VsZiBhZGRTdWJ2aWV3Ol9leGl0V2FybmluZy5nZXQo
KV07CisKKyAgICByZXR1cm4gc2VsZjsKK30KKworQHN5bnRoZXNpemUgdGFyZ2V0ID0gX3Rhcmdl
dDsKK0BzeW50aGVzaXplIGFjdGlvbiA9IF9hY3Rpb247CisKK0BkeW5hbWljIGNvbnRlbnRzOwor
LSAodm9pZClzZXRDb250ZW50czooaWQpY29udGVudHMKK3sKKyAgICBbW3NlbGYgbGF5ZXJdIHNl
dENvbnRlbnRzOmNvbnRlbnRzXTsKK30KKworLSAoaWQpY29udGVudHMKK3sKKyAgICByZXR1cm4g
W1tzZWxmIGxheWVyXSBjb250ZW50c107Cit9CisKKy0gKHZvaWQpc2V0RXhpdFdhcm5pbmdWaXNp
YmxlOihCT09MKXZpc2libGUKK3sKKyAgICBbX2V4aXRXYXJuaW5nLmdldCgpIHNldEhpZGRlbjoh
dmlzaWJsZV07CisgICAgaWYgKHZpc2libGUpIHsKKyAgICAgICAgQ0lGaWx0ZXIqIGZpbHRlciA9
IFtDSUZpbHRlciBmaWx0ZXJXaXRoTmFtZTpAIkNJRmFsc2VDb2xvciIga2V5c0FuZFZhbHVlczoK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBAImlucHV0Q29sb3IwIiwgW0NJQ29sb3IgY29s
b3JXaXRoUmVkOjAgZ3JlZW46MCBibHVlOjBdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEAiaW5wdXRDb2xvcjEiLCBbQ0lDb2xvciBjb2xvcldpdGhSZWQ6LjkgZ3JlZW46LjkgYmx1ZTou
OV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlsXTsKKyAgICAgICAgW1tzZWxmIGxh
eWVyXSBzZXRDb21wb3NpdGluZ0ZpbHRlcjpmaWx0ZXJdOworICAgIH0gZWxzZQorICAgICAgICBb
W3NlbGYgbGF5ZXJdIHNldENvbXBvc2l0aW5nRmlsdGVyOm5pbF07Cit9CisKKy0gKHZvaWQpbW91
c2VEb3duOihOU0V2ZW50ICopdGhlRXZlbnQKK3sKKyAgICBpZiAoIV90YXJnZXQgfHwgIV9hY3Rp
b24pCisgICAgICAgIHJldHVybjsKKyAgICBbX3RhcmdldCBwZXJmb3JtU2VsZWN0b3I6X2FjdGlv
bl07Cit9CisKK0BlbmQKKwogI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0g
MTA3MAogc3RhdGljIE5TUmVjdCBjb252ZXJ0UmVjdFRvU2NyZWVuKE5TV2luZG93ICp3aW5kb3cs
IE5TUmVjdCByZWN0KQogewpAQCAtOTIsNiArMTY4LDggQEAgc3RhdGljIE5TUmVjdCBjb252ZXJ0
UmVjdFRvU2NyZWVuKE5TV2luZG93ICp3aW5kb3csIE5TUmVjdCByZWN0KQogICAgIFt3aW5kb3cg
cmVsZWFzZV07CiAgICAgaWYgKCFzZWxmKQogICAgICAgICByZXR1cm4gbmlsOworICAgIFt3aW5k
b3cgc2V0RGVsZWdhdGU6c2VsZl07CisgICAgW3dpbmRvdyBzZXRDb2xsZWN0aW9uQmVoYXZpb3I6
KFt3aW5kb3cgY29sbGVjdGlvbkJlaGF2aW9yXSB8IE5TV2luZG93Q29sbGVjdGlvbkJlaGF2aW9y
RnVsbFNjcmVlblByaW1hcnkpXTsKICAgICBbc2VsZiB3aW5kb3dEaWRMb2FkXTsKICAgICAKICAg
ICByZXR1cm4gc2VsZjsKQEAgLTE3NCw3ICsyNTIsNiBAQCBzdGF0aWMgTlNSZWN0IGNvbnZlcnRS
ZWN0VG9TY3JlZW4oTlNXaW5kb3cgKndpbmRvdywgTlNSZWN0IHJlY3QpCiAgICAgLy8gdGhlIERv
Y2sncyBzaXplIG9yIGxvY2F0aW9uLCBvciB0aGV5IG1heSBoYXZlIGNoYW5nZWQgdGhlIGZ1bGxT
Y3JlZW4gc2NyZWVuJ3MgZGltZW5zaW9ucy4gCiAgICAgLy8gVXBkYXRlIG91ciBwcmVzZW50YXRp
b24gcGFyYW1ldGVycywgYW5kIGVuc3VyZSB0aGF0IHRoZSBmdWxsIHNjcmVlbiB3aW5kb3cgb2Nj
dXBpZXMgdGhlIAogICAgIC8vIGVudGlyZSBzY3JlZW46Ci0gICAgW3NlbGYgX3VwZGF0ZU1lbnVB
bmREb2NrRm9yRnVsbFNjcmVlbl07CiAgICAgTlNXaW5kb3cqIHdpbmRvdyA9IFtzZWxmIHdpbmRv
d107CiAgICAgTlNSZWN0IHNjcmVlbkZyYW1lID0gW1t3aW5kb3cgc2NyZWVuXSBmcmFtZV07CiAg
ICAgW3dpbmRvdyBzZXRGcmFtZTpzY3JlZW5GcmFtZSBkaXNwbGF5OllFU107CkBAIC0yMTIsOCAr
Mjg5LDYgQEAgc3RhdGljIFJldGFpblB0cjxDR0ltYWdlUmVmPiBjcmVhdGVJbWFnZVdpdGhDb3Bp
ZWREYXRhKENHSW1hZ2VSZWYgc291cmNlSW1hZ2UpCiAgICAgICAgIHJldHVybjsKICAgICBfaXNG
dWxsU2NyZWVuID0gWUVTOwogCi0gICAgW3NlbGYgX3VwZGF0ZU1lbnVBbmREb2NrRm9yRnVsbFNj
cmVlbl07ICAgCi0KICAgICBpZiAoIXNjcmVlbikKICAgICAgICAgc2NyZWVuID0gW05TU2NyZWVu
IG1haW5TY3JlZW5dOwogICAgIE5TUmVjdCBzY3JlZW5GcmFtZSA9IFtzY3JlZW4gZnJhbWVdOwpA
QCAtMjQ2LDExICszMjEsMTEgQEAgc3RhdGljIFJldGFpblB0cjxDR0ltYWdlUmVmPiBjcmVhdGVJ
bWFnZVdpdGhDb3BpZWREYXRhKENHSW1hZ2VSZWYgc291cmNlSW1hZ2UpCiAKICAgICAvLyBTd2Fw
IHRoZSB3ZWJWaWV3IHBsYWNlaG9sZGVyIGludG8gcGxhY2UuCiAgICAgaWYgKCFfd2ViVmlld1Bs
YWNlaG9sZGVyKSB7Ci0gICAgICAgIF93ZWJWaWV3UGxhY2Vob2xkZXIuYWRvcHROUyhbW05TSW1h
Z2VWaWV3IGFsbG9jXSBpbml0XSk7Ci0gICAgICAgIFtfd2ViVmlld1BsYWNlaG9sZGVyLmdldCgp
IHNldExheWVyOltDQUxheWVyIGxheWVyXV07Ci0gICAgICAgIFtfd2ViVmlld1BsYWNlaG9sZGVy
LmdldCgpIHNldFdhbnRzTGF5ZXI6WUVTXTsKKyAgICAgICAgX3dlYlZpZXdQbGFjZWhvbGRlci5h
ZG9wdE5TKFtbV0tGdWxsU2NyZWVuUGxhY2Vob2xkZXJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1l
Oltfd2ViVmlldyBmcmFtZV1dKTsKKyAgICAgICAgW193ZWJWaWV3UGxhY2Vob2xkZXIuZ2V0KCkg
c2V0VGFyZ2V0OnNlbGZdOworICAgICAgICBbX3dlYlZpZXdQbGFjZWhvbGRlci5nZXQoKSBzZXRB
Y3Rpb246QHNlbGVjdG9yKGNhbmNlbE9wZXJhdGlvbjopXTsKICAgICB9Ci0gICAgW1tfd2ViVmll
d1BsYWNlaG9sZGVyLmdldCgpIGxheWVyXSBzZXRDb250ZW50czooaWQpd2ViVmlld0NvbnRlbnRz
LmdldCgpXTsKKyAgICBbX3dlYlZpZXdQbGFjZWhvbGRlci5nZXQoKSBzZXRDb250ZW50czooaWQp
d2ViVmlld0NvbnRlbnRzLmdldCgpXTsKICAgICBbc2VsZiBfcmVwbGFjZVZpZXc6X3dlYlZpZXcg
d2l0aDpfd2ViVmlld1BsYWNlaG9sZGVyLmdldCgpXTsKICAgICAKICAgICAvLyBUaGVuIGluc2Vy
dCB0aGUgV2ViVmlldyBpbnRvIHRoZSBmdWxsIHNjcmVlbiB3aW5kb3cKQEAgLTI3Myw5ICszNDgs
OCBAQCBzdGF0aWMgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGNyZWF0ZUltYWdlV2l0aENvcGllZERh
dGEoQ0dJbWFnZVJlZiBzb3VyY2VJbWFnZSkKICAgICBfaW5pdGlhbEZyYW1lID0gaW5pdGlhbEZy
YW1lOwogICAgIF9maW5hbEZyYW1lID0gZmluYWxGcmFtZTsKIAotICAgIFtzZWxmIF91cGRhdGVN
ZW51QW5kRG9ja0ZvckZ1bGxTY3JlZW5dOyAgIAotCi0gICAgW3NlbGYgX3N0YXJ0RW50ZXJGdWxs
U2NyZWVuQW5pbWF0aW9uV2l0aER1cmF0aW9uOmRlZmF1bHRBbmltYXRpb25EdXJhdGlvbl07Cisg
ICAgQVNTRVJUKFtbc2VsZiB3aW5kb3ddIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoZW50
ZXJGdWxsU2NyZWVuTW9kZTopXSk7CisgICAgW1tzZWxmIHdpbmRvd10gZW50ZXJGdWxsU2NyZWVu
TW9kZTpzZWxmXTsKIH0KIAogLSAodm9pZClmaW5pc2hlZEVudGVyRnVsbFNjcmVlbkFuaW1hdGlv
bjooYm9vbCljb21wbGV0ZWQKQEAgLTI5NCwyNCArMzY4LDE0IEBAIHN0YXRpYyBSZXRhaW5QdHI8
Q0dJbWFnZVJlZj4gY3JlYXRlSW1hZ2VXaXRoQ29waWVkRGF0YShDR0ltYWdlUmVmIHNvdXJjZUlt
YWdlKQogICAgICAgICB3aW5kb3dCb3VuZHMub3JpZ2luID0gTlNaZXJvUG9pbnQ7CiAgICAgICAg
IFdLV2luZG93U2V0Q2xpcFJlY3QoW3NlbGYgd2luZG93XSwgd2luZG93Qm91bmRzKTsKIAotICAg
ICAgICBOU1dpbmRvdyAqd2ViV2luZG93ID0gW193ZWJWaWV3UGxhY2Vob2xkZXIuZ2V0KCkgd2lu
ZG93XTsKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNzAKLSAgICAg
ICAgLy8gSW4gTGlvbiwgTlNXaW5kb3cgd2lsbCBhbmltYXRlIGludG8gYW5kIG91dCBvZiBvcmRl
ck91dCBvcGVyYXRpb25zLiBTdXBwcmVzcyB0aGF0Ci0gICAgICAgIC8vIGJlaGF2aW9yIGhlcmUs
IG1ha2luZyBzdXJlIHRvIHJlc2V0IHRoZSBhbmltYXRpb24gYmVoYXZpb3IgYWZ0ZXJ3YXJkLgot
ICAgICAgICBOU1dpbmRvd0FuaW1hdGlvbkJlaGF2aW9yIGFuaW1hdGlvbkJlaGF2aW9yID0gW3dl
YldpbmRvdyBhbmltYXRpb25CZWhhdmlvcl07Ci0gICAgICAgIFt3ZWJXaW5kb3cgc2V0QW5pbWF0
aW9uQmVoYXZpb3I6TlNXaW5kb3dBbmltYXRpb25CZWhhdmlvck5vbmVdOwotI2VuZGlmCi0gICAg
ICAgIFt3ZWJXaW5kb3cgb3JkZXJPdXQ6c2VsZl07Ci0jaWYgX19NQUNfT1NfWF9WRVJTSU9OX01J
Tl9SRVFVSVJFRCA+PSAxMDcwCi0gICAgICAgIFt3ZWJXaW5kb3cgc2V0QW5pbWF0aW9uQmVoYXZp
b3I6YW5pbWF0aW9uQmVoYXZpb3JdOwotI2VuZGlmCi0KICAgICAgICAgW19mYWRlQW5pbWF0aW9u
LmdldCgpIHN0b3BBbmltYXRpb25dOwogICAgICAgICBbX2ZhZGVBbmltYXRpb24uZ2V0KCkgc2V0
V2luZG93Om5pbF07CiAgICAgICAgIF9mYWRlQW5pbWF0aW9uID0gbnVsbHB0cjsKICAgICAgICAg
CiAgICAgICAgIFtfYmFja2dyb3VuZFdpbmRvdy5nZXQoKSBvcmRlck91dDpzZWxmXTsKICAgICAg
ICAgW19iYWNrZ3JvdW5kV2luZG93LmdldCgpIHNldEZyYW1lOk5TWmVyb1JlY3QgZGlzcGxheTpZ
RVNdOworCisgICAgICAgIFtfd2ViVmlld1BsYWNlaG9sZGVyLmdldCgpIHNldEV4aXRXYXJuaW5n
VmlzaWJsZTpZRVNdOwogICAgICAgICBOU0VuYWJsZVNjcmVlblVwZGF0ZXMoKTsKICAgICB9IGVs
c2UKICAgICAgICAgW19zY2FsZUFuaW1hdGlvbi5nZXQoKSBzdG9wQW5pbWF0aW9uXTsKQEAgLTMy
OCw3ICszOTIsOSBAQCBzdGF0aWMgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGNyZWF0ZUltYWdlV2l0
aENvcGllZERhdGEoQ0dJbWFnZVJlZiBzb3VyY2VJbWFnZSkKICAgICAgICAgcmV0dXJuOwogICAg
IF9pc0Z1bGxTY3JlZW4gPSBOTzsKIAotICAgIC8vIFNjcmVlbiB1cGRhdGVzIHRvIGJlIHJlLWVu
YWJsZWQgaW4gX3N0YXJ0RXhpdEZ1bGxTY3JlZW5BbmltYXRpb25XaXRoRHVyYXRpb246CisgICAg
W193ZWJWaWV3UGxhY2Vob2xkZXIuZ2V0KCkgc2V0RXhpdFdhcm5pbmdWaXNpYmxlOk5PXTsKKwor
ICAgIC8vIFNjcmVlbiB1cGRhdGVzIHRvIGJlIHJlLWVuYWJsZWQgaW4gX3N0YXJ0RXhpdEZ1bGxT
Y3JlZW5BbmltYXRpb25XaXRoRHVyYXRpb246IG9yIGJlZ2FuRXhpdEZ1bGxTY3JlZW5XaXRoSW5p
dGlhbEZyYW1lOmZpbmFsRnJhbWU6CiAgICAgTlNEaXNhYmxlU2NyZWVuVXBkYXRlcygpOwogICAg
IFtbc2VsZiB3aW5kb3ddIHNldEF1dG9kaXNwbGF5Ok5PXTsKIApAQCAtMzQ5LDMwICs0MTUsMTkg
QEAgc3RhdGljIFJldGFpblB0cjxDR0ltYWdlUmVmPiBjcmVhdGVJbWFnZVdpdGhDb3BpZWREYXRh
KENHSW1hZ2VSZWYgc291cmNlSW1hZ2UpCiAgICAgaWYgKF9pc0VudGVyaW5nRnVsbFNjcmVlbikK
ICAgICAgICAgW3NlbGYgZmluaXNoZWRFbnRlckZ1bGxTY3JlZW5BbmltYXRpb246Tk9dOwogCi0g
ICAgW3NlbGYgX3VwZGF0ZU1lbnVBbmREb2NrRm9yRnVsbFNjcmVlbl07Ci0gICAgCi0gICAgTlNX
aW5kb3cqIHdlYldpbmRvdyA9IFtfd2ViVmlld1BsYWNlaG9sZGVyLmdldCgpIHdpbmRvd107Ci0j
aWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDcwCi0gICAgLy8gSW4gTGlv
biwgTlNXaW5kb3cgd2lsbCBhbmltYXRlIGludG8gYW5kIG91dCBvZiBvcmRlck91dCBvcGVyYXRp
b25zLiBTdXBwcmVzcyB0aGF0Ci0gICAgLy8gYmVoYXZpb3IgaGVyZSwgbWFraW5nIHN1cmUgdG8g
cmVzZXQgdGhlIGFuaW1hdGlvbiBiZWhhdmlvciBhZnRlcndhcmQuCi0gICAgTlNXaW5kb3dBbmlt
YXRpb25CZWhhdmlvciBhbmltYXRpb25CZWhhdmlvciA9IFt3ZWJXaW5kb3cgYW5pbWF0aW9uQmVo
YXZpb3JdOwotICAgIFt3ZWJXaW5kb3cgc2V0QW5pbWF0aW9uQmVoYXZpb3I6TlNXaW5kb3dBbmlt
YXRpb25CZWhhdmlvck5vbmVdOwotI2VuZGlmCi0gICAgLy8gSWYgdGhlIHVzZXIgaGFzIG1vdmVk
IHRoZSBmdWxsU2NyZWVuIHdpbmRvdyBpbnRvIGEgbmV3IHNwYWNlLCB0ZW1wb3JhcmlseSBjaGFu
Z2UKLSAgICAvLyB0aGUgY29sbGVjdGlvbkJlaGF2aW9yIG9mIHRoZSB3ZWJWaWV3J3Mgd2luZG93
IHNvIHRoYXQgaXQgaXMgcHVsbGVkIGludG8gdGhlIGFjdGl2ZSBzcGFjZToKLSAgICBpZiAoIShb
d2ViV2luZG93IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoaXNPbkFjdGl2ZVNwYWNlKV0g
PyBbd2ViV2luZG93IGlzT25BY3RpdmVTcGFjZV0gOiBZRVMpKSB7Ci0gICAgICAgIE5TV2luZG93
Q29sbGVjdGlvbkJlaGF2aW9yIGJlaGF2aW9yID0gW3dlYldpbmRvdyBjb2xsZWN0aW9uQmVoYXZp
b3JdOwotICAgICAgICBbd2ViV2luZG93IHNldENvbGxlY3Rpb25CZWhhdmlvcjpOU1dpbmRvd0Nv
bGxlY3Rpb25CZWhhdmlvckNhbkpvaW5BbGxTcGFjZXNdOwotICAgICAgICBbd2ViV2luZG93IG9y
ZGVyV2luZG93Ok5TV2luZG93QmVsb3cgcmVsYXRpdmVUbzpbW3NlbGYgd2luZG93XSB3aW5kb3dO
dW1iZXJdXTsKLSAgICAgICAgW3dlYldpbmRvdyBzZXRDb2xsZWN0aW9uQmVoYXZpb3I6YmVoYXZp
b3JdOwotICAgIH0gZWxzZQotICAgICAgICBbd2ViV2luZG93IG9yZGVyV2luZG93Ok5TV2luZG93
QmVsb3cgcmVsYXRpdmVUbzpbW3NlbGYgd2luZG93XSB3aW5kb3dOdW1iZXJdXTsKLSAgICAKLSNp
ZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNzAKLSAgICBbd2ViV2luZG93
IHNldEFuaW1hdGlvbkJlaGF2aW9yOmFuaW1hdGlvbkJlaGF2aW9yXTsKLSNlbmRpZgorICAgIGlm
ICghW1tzZWxmIHdpbmRvd10gaXNPbkFjdGl2ZVNwYWNlXSkgeworICAgICAgICAvLyBJZiB0aGUg
ZnVsbCBzY3JlZW4gd2luZG93IGlzIG5vdCBpbiB0aGUgYWN0aXZlIHNwYWNlLCB0aGUgTlNXaW5k
b3cgZnVsbCBzY3JlZW4gYW5pbWF0aW9uIGRlbGVnYXRlIG1ldGhvZHMKKyAgICAgICAgLy8gd2ls
bCBuZXZlciBiZSBjYWxsZWQuIFNvIGNhbGwgZmluaXNoZWRFeGl0RnVsbFNjcmVlbkFuaW1hdGlv
biBleHBsaWNpdGx5LgorICAgICAgICBbc2VsZiBmaW5pc2hlZEV4aXRGdWxsU2NyZWVuQW5pbWF0
aW9uOllFU107CiAKLSAgICBbc2VsZiBfc3RhcnRFeGl0RnVsbFNjcmVlbkFuaW1hdGlvbldpdGhE
dXJhdGlvbjpkZWZhdWx0QW5pbWF0aW9uRHVyYXRpb25dOworICAgICAgICAvLyBCZWNhdXNlIHdl
IGFyZSBicmVha2luZyB0aGUgbm9ybWFsIGFuaW1hdGlvbiBwYXR0ZXJuLCByZS1lbmFibGUgc2Ny
ZWVuIHVwZGF0ZXMKKyAgICAgICAgLy8gYXMgZXhpdEZ1bGxTY3JlZW4gaGFzIGRpc2FibGVkIHRo
ZW0sIGJ1dCBfc3RhcnRFeGl0RnVsbFNjcmVlbkFuaW1hdGlvbldpdGhEdXJhdGlvbjoKKyAgICAg
ICAgLy8gd2lsbCBuZXZlciBiZSBjYWxsZWQuCisgICAgICAgIE5TRW5hYmxlU2NyZWVuVXBkYXRl
cygpOworICAgIH0KKworICAgIEFTU0VSVChbW3NlbGYgd2luZG93XSByZXNwb25kc1RvU2VsZWN0
b3I6QHNlbGVjdG9yKGV4aXRGdWxsU2NyZWVuTW9kZTopXSk7CisgICAgW1tzZWxmIHdpbmRvd10g
ZXhpdEZ1bGxTY3JlZW5Nb2RlOnNlbGZdOwogfQogCiBzdGF0aWMgdm9pZCBjb21wbGV0ZUZpbmlz
aEV4aXRGdWxsU2NyZWVuQW5pbWF0aW9uQWZ0ZXJSZXBhaW50KFdLRXJyb3JSZWYsIHZvaWQqKTsK
QEAgLTM4Myw4ICs0MzgsNiBAQCBzdGF0aWMgdm9pZCBjb21wbGV0ZUZpbmlzaEV4aXRGdWxsU2Ny
ZWVuQW5pbWF0aW9uQWZ0ZXJSZXBhaW50KFdLRXJyb3JSZWYsIHZvaWQqKQogICAgICAgICByZXR1
cm47CiAgICAgX2lzRXhpdGluZ0Z1bGxTY3JlZW4gPSBOTzsKIAotICAgIFtzZWxmIF91cGRhdGVN
ZW51QW5kRG9ja0ZvckZ1bGxTY3JlZW5dOwotCiAgICAgLy8gU2NyZWVuIHVwZGF0ZXMgdG8gYmUg
cmUtZW5hYmxlZCBpbiBjb21wbGV0ZUZpbmlzaEV4aXRGdWxsU2NyZWVuQW5pbWF0aW9uQWZ0ZXJS
ZXBhaW50LgogICAgIE5TRGlzYWJsZVNjcmVlblVwZGF0ZXMoKTsKICAgICBbW193ZWJWaWV3UGxh
Y2Vob2xkZXIuZ2V0KCkgd2luZG93XSBzZXRBdXRvZGlzcGxheTpOT107CkBAIC00NTUsMzUgKzUw
OCwzMSBAQCBzdGF0aWMgdm9pZCBjb21wbGV0ZUZpbmlzaEV4aXRGdWxsU2NyZWVuQW5pbWF0aW9u
QWZ0ZXJSZXBhaW50KFdLRXJyb3JSZWYsIHZvaWQqCiB9CiAKICNwcmFnbWEgbWFyayAtCi0jcHJh
Z21hIG1hcmsgSW50ZXJuYWwgSW50ZXJmYWNlCisjcHJhZ21hIG1hcmsgQ3VzdG9tIE5TV2luZG93
IEZ1bGwgU2NyZWVuIEFuaW1hdGlvbgogCi0tICh2b2lkKV91cGRhdGVNZW51QW5kRG9ja0ZvckZ1
bGxTY3JlZW4KKy0gKE5TQXJyYXkgKiljdXN0b21XaW5kb3dzVG9FbnRlckZ1bGxTY3JlZW5Gb3JX
aW5kb3c6KE5TV2luZG93ICopd2luZG93CiB7Ci0gICAgLy8gTlNBcHBsaWNhdGlvblByZXNlbnRh
dGlvbk9wdGlvbnMgaXMgYXZhaWxhYmxlIG9uID4gMTAuNiBvbmx5OgotI2lmIF9fTUFDX09TX1hf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA2MAotICAgIE5TQXBwbGljYXRpb25QcmVzZW50YXRp
b25PcHRpb25zIG9wdGlvbnMgPSBOU0FwcGxpY2F0aW9uUHJlc2VudGF0aW9uRGVmYXVsdDsKLSAg
ICBOU1NjcmVlbiogZnVsbFNjcmVlblNjcmVlbiA9IFtbc2VsZiB3aW5kb3ddIHNjcmVlbl07Ci0g
ICAgCi0gICAgaWYgKF9pc0Z1bGxTY3JlZW4pIHsKLSAgICAgICAgLy8gQXV0by1oaWRlIHRoZSBt
ZW51IGJhciBpZiB0aGUgZnVsbFNjcmVlblNjcmVlbiBjb250YWlucyB0aGUgbWVudSBiYXI6Ci0g
ICAgICAgIC8vIE5PVEU6IGlmIHRoZSBmdWxsU2NyZWVuU2NyZWVuIGNvbnRhaW5zIHRoZSBtZW51
IGJhciBidXQgbm90IHRoZSBkb2NrLCB3ZSBtdXN0IHN0aWxsIAotICAgICAgICAvLyBhdXRvLWhp
ZGUgdGhlIGRvY2ssIG9yIGFuIGV4Y2VwdGlvbiB3aWxsIGJlIHRocm93bi4KLSAgICAgICAgaWYg
KFtbTlNTY3JlZW4gc2NyZWVuc10gb2JqZWN0QXRJbmRleDowXSA9PSBmdWxsU2NyZWVuU2NyZWVu
KQotICAgICAgICAgICAgb3B0aW9ucyB8PSAoTlNBcHBsaWNhdGlvblByZXNlbnRhdGlvbkF1dG9I
aWRlTWVudUJhciB8IE5TQXBwbGljYXRpb25QcmVzZW50YXRpb25BdXRvSGlkZURvY2spOwotICAg
ICAgICAvLyBDaGVjayBpZiB0aGUgY3VycmVudCBzY3JlZW4gY29udGFpbnMgdGhlIGRvY2sgYnkg
Y29tcGFyaW5nIHRoZSBzY3JlZW4ncyBmcmFtZSB0byBpdHMKLSAgICAgICAgLy8gdmlzaWJsZUZy
YW1lOyBpZiBhIGRvY2sgaXMgcHJlc2VudCwgdGhlIHZpc2libGVGcmFtZSB3aWxsIGRpZmZlci4g
SWYgdGhlIGN1cnJlbnQgc2NyZWVuCi0gICAgICAgIC8vIGNvbnRhaW5zIHRoZSBkb2NrLCBoaWRl
IGl0LgotICAgICAgICBlbHNlIGlmICghTlNFcXVhbFJlY3RzKFtmdWxsU2NyZWVuU2NyZWVuIGZy
YW1lXSwgW2Z1bGxTY3JlZW5TY3JlZW4gdmlzaWJsZUZyYW1lXSkpCi0gICAgICAgICAgICBvcHRp
b25zIHw9IE5TQXBwbGljYXRpb25QcmVzZW50YXRpb25BdXRvSGlkZURvY2s7Ci0gICAgfQotICAg
IAotICAgIGlmIChbTlNBcHAgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihzZXRQcmVzZW50
YXRpb25PcHRpb25zOildKQotICAgICAgICBbTlNBcHAgc2V0UHJlc2VudGF0aW9uT3B0aW9uczpv
cHRpb25zXTsKLSAgICBlbHNlCi0jZW5kaWYKLSAgICAgICAgU2V0U3lzdGVtVUlNb2RlKF9pc0Z1
bGxTY3JlZW4gPyBrVUlNb2RlQWxsSGlkZGVuIDoga1VJTW9kZU5vcm1hbCwgMCk7CisgICAgcmV0
dXJuIFtOU0FycmF5IGFycmF5V2l0aE9iamVjdHM6W3NlbGYgd2luZG93XSwgX2JhY2tncm91bmRX
aW5kb3cuZ2V0KCksIG5pbF07CiB9CiAKKy0gKE5TQXJyYXkgKiljdXN0b21XaW5kb3dzVG9FeGl0
RnVsbFNjcmVlbkZvcldpbmRvdzooTlNXaW5kb3cgKil3aW5kb3cKK3sKKyAgICByZXR1cm4gW05T
QXJyYXkgYXJyYXlXaXRoT2JqZWN0czpbc2VsZiB3aW5kb3ddLCBfYmFja2dyb3VuZFdpbmRvdy5n
ZXQoKSwgbmlsXTsKK30KKworLSAodm9pZCl3aW5kb3c6KE5TV2luZG93ICopd2luZG93IHN0YXJ0
Q3VzdG9tQW5pbWF0aW9uVG9FbnRlckZ1bGxTY3JlZW5XaXRoRHVyYXRpb246KE5TVGltZUludGVy
dmFsKWR1cmF0aW9uCit7CisgICAgW3NlbGYgX3N0YXJ0RW50ZXJGdWxsU2NyZWVuQW5pbWF0aW9u
V2l0aER1cmF0aW9uOmR1cmF0aW9uXTsKK30KKworLSAodm9pZCl3aW5kb3c6KE5TV2luZG93ICop
d2luZG93IHN0YXJ0Q3VzdG9tQW5pbWF0aW9uVG9FeGl0RnVsbFNjcmVlbldpdGhEdXJhdGlvbjoo
TlNUaW1lSW50ZXJ2YWwpZHVyYXRpb24KK3sKKyAgICBbc2VsZiBfc3RhcnRFeGl0RnVsbFNjcmVl
bkFuaW1hdGlvbldpdGhEdXJhdGlvbjpkdXJhdGlvbl07Cit9CisKKyNwcmFnbWEgbWFyayAtCisj
cHJhZ21hIG1hcmsgSW50ZXJuYWwgSW50ZXJmYWNlCisKIC0gKFdlYlBhZ2VQcm94eSopX3BhZ2UK
IHsKICAgICByZXR1cm4gdG9JbXBsKFtfd2ViVmlldyBwYWdlUmVmXSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>170241</attachid>
            <date>2012-10-23 14:55:21 -0700</date>
            <delta_ts>2012-10-23 15:30:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100025-20121023145358.patch</filename>
            <type>text/plain</type>
            <size>42982</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyMjQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmJlNjM4ZDZkZDkxOTU0
ZDRiZWQ1NDU0MzNmZDUwOGZiYTBjMzhhYy4uNWFhZjQyNjE5MWQ3NTUwMTk2ODIwOTBhODkzNWE3
ODQ3NmMxMjdiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDEyLTEwLTIyICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtXSzJdIFtNYWNdIFdlYktp
dCBGdWxsIFNjcmVlbiBBUEkgc2hvdWxkIHVzZSBOU1dpbmRvdyBmdWxsIHNjcmVlbiBBUEkuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDAwMjUKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBzaGFy
ZWQgaW1wbGVtZW50YXRpb24gb2YgYSB3YXJuaW5nIHZpZXcgZm9yIHVzZSBpbiBXZWJLaXQgYW5k
IFdlYktpdDIuCisKKyAgICAgICAgQWRkIGEgbmV3IHNoYXJlZCBjbGFzcyBXZWJDb3JlRnVsbFNj
cmVlbldhcm5pbmdWaWV3IHdoaWNoIHByZXNlbnRzIGEgc3R5bGVkIHdhcm5pbmcgbWVzc2FnZS4K
KyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2ViQ29yZUZ1bGxTY3JlZW5XYXJuaW5nVmlldy5oOiBB
ZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2ViQ29yZUZ1bGxTY3JlZW5XYXJuaW5nVmll
dy5tbTogQWRkZWQuCisgICAgICAgICgtW1dlYkNvcmVGdWxsU2NyZWVuV2FybmluZ1ZpZXcgaW5p
dFdpdGhUaXRsZTpdKTogQ3JlYXRlIHRoZSB2aWV3LgorCisgICAgICAgIEFkZCBhIG5ldyBzaGFy
ZWQgY2xhc3MgV2ViQ29yZUZ1bGxTY3JlZW5QbGFjZWhvbGRlclZpZXcsIHdoaWNoIHByZXNlbnRz
IHRoZSBjb250ZW50cyBvZiB0aGUgCisgICAgICAgIFdlYlZpZXcgcHJpb3IgdG8gZnVsbCBzY3Jl
ZW4gd2l0aCBhIG1lc3NhZ2UgaW5mb3JtaW5nIHRoZSB1c2VyIGhvdyB0byBleGl0IGZyb20gZnVs
bCBzY3JlZW4gbW9kZS4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2ViQ29yZUZ1bGxTY3JlZW5Q
bGFjZWhvbGRlclZpZXcubW06CisgICAgICAgICgtW1dlYkNvcmVGdWxsU2NyZWVuUGxhY2Vob2xk
ZXJWaWV3IGluaXRXaXRoRnJhbWU6XSk6IENyZWF0ZSB0aGUgd2FybmluZyB2aWV3IGFuZCBzZXQg
dXAgdGhlIHBsYWNlaG9sZGVyIGxheWVyLgorICAgICAgICAoLVtXZWJDb3JlRnVsbFNjcmVlblBs
YWNlaG9sZGVyVmlldyBzZXRDb250ZW50czpdKTogUGFzcyBhbG9uZyB0byBjb250ZW50IHZpZXcg
bGF5ZXIuCisgICAgICAgICgtW1dlYkNvcmVGdWxsU2NyZWVuUGxhY2Vob2xkZXJWaWV3IGNvbnRl
bnRzXSk6IERpdHRvLgorICAgICAgICAoLVtXZWJDb3JlRnVsbFNjcmVlblBsYWNlaG9sZGVyVmll
dyBzZXRFeGl0V2FybmluZ1Zpc2libGU6XSk6IFNob3cgb3IgaGlkZSB0aGUgZXhpdCB3YXJuaW5n
LgorICAgICAgICAoLVtXZWJDb3JlRnVsbFNjcmVlblBsYWNlaG9sZGVyVmlldyBtb3VzZURvd246
XSk6IENhbGwgdGhlIHRhcmdldCB3aXRoIGFjdGlvbi4KKworICAgICAgICAgQWRkIGEgbG9jYWxp
emVkIHN0cmluZyBlbnRyeSBmb3IgdGhlICJjbGljayB0byBleGl0IiB0ZXh0OgorICAgICAgICAg
KiBFbmdsaXNoLmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3M6CisgICAgICAgICogcGxhdGZvcm0v
TG9jYWxpemVkU3RyaW5ncy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjbGlja1RvRXhpdEZ1bGxT
Y3JlZW5UZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmg6CisKKyAg
ICAgICAgQWRkIHRoZSBuZXcgZmlsZXMgdG8gdGhlIHByb2plY3QgYW5kIGV4cG9ydHMgbGlzdDoK
KyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisKIDIwMTItMTAtMjMgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3Rv
cGhlLmR1bWV6QGludGVsLmNvbT4KIAogICAgICAgICBQb3NzaWJsZSBhc3NlcnRpb24gaGl0IGlu
IFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50Ojp1cGRhdGVMaXN0Qm94U2VsZWN0aW9uKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwppbmRleCBhYWY5NDUxMDA1YzRmYTVhOTk0ZDhkMjQ5NGI5ODFhNDhjMWJlNzczLi5jYzlk
ZGQyMGMzYTVmMDcwYWZlY2I3ODg3ODk3OTY0NjM1ZWYyMzBiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMzAgQEAKKzIwMTItMTAtMjIgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisK
KyAgICAgICAgW1dLMl0gW01hY10gV2ViS2l0IEZ1bGwgU2NyZWVuIEFQSSBzaG91bGQgdXNlIE5T
V2luZG93IGZ1bGwgc2NyZWVuIEFQSS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEwMDAyNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFVzZSB0aGUgTlNXaW5kb3cgZnVsbCBzY3JlZW4gQVBJIHdoZW4gdGFr
aW5nIHRoZSBXZWJWaWV3IGZ1bGwgc2NyZWVuLiBUbyBmYWNpbGl0eSB0aGUgY2FzZSB3aGVyZSB0
aGUgYnJvd3NlciB3aW5kb3cgaXMgYWxyZWFkeQorICAgICAgICBpbiBmdWxsIHNjcmVlbiBtb2Rl
LCBubyBsb25nZXIgaGlkZSB0aGUgYnJvd3NlciB3aW5kb3cgd2hlbiBlbnRlcmluZyBmdWxsIHNj
cmVlbi4gSW5zdGVhZCwgcHJvdmlkZSBhIHBsYWNlaG9sZGVyIHZpZXcgd2l0aCAKKyAgICAgICAg
aW5zdHJ1Y3Rpb25zIHRvIGNsaWNrIHRoZSBwbGFjZWhvbGRlciB0byBleGl0IGZ1bGwgc2NyZWVu
LgorCisgICAgICAgICogVUlQcm9jZXNzL21hYy9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVy
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVy
Lm1tOgorICAgICAgICAoLVtXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyIGluaXRdKTogU2V0
IHNlbGYgYXMgdGhlIHdpbmRvdydzIGRlbGVnYXRlOyBlbmFibGUgd2luZG93J3MgZnVsbCBzY3Jl
ZW4gYWN0aW9uLgorICAgICAgICAoLVtXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyIGFwcGxp
Y2F0aW9uRGlkQ2hhbmdlU2NyZWVuUGFyYW1ldGVyczpdKTogUmVtb3ZlIHJlZmVyZW5jZSB0byBf
dXBkYXRlV2luZG93QW5kRG9ja0ZvckZ1bGxTY3JlZW4uCisgICAgICAgICgtW1dLRnVsbFNjcmVl
bldpbmRvd0NvbnRyb2xsZXIgZW50ZXJGdWxsU2NyZWVuOl0pOiAgRGl0dG8uIENyZWF0ZSBhIFdL
RnVsbFNjcmVlblBsYWNlaG9sZGVyVmlldyBpbnN0ZWFkIG9mIGdlbmVyaWMgTlNJbWFnZVZpZXcu
CisgICAgICAgICgtW1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIgYmVnYW5FbnRlckZ1bGxT
Y3JlZW5XaXRoSW5pdGlhbEZyYW1lOmZpbmFsRnJhbWU6XSk6IERpdHRvLiBDYWxsIE5TV2luZG93
IGVudGVyRnVsbFNjcmVlbjogQVBJLgorICAgICAgICAoLVtXS0Z1bGxTY3JlZW5XaW5kb3dDb250
cm9sbGVyIGZpbmlzaGVkRW50ZXJGdWxsU2NyZWVuQW5pbWF0aW9uOl0pOiBTaG93IHRoZSB3YXJu
aW5nIHZpZXcuCisgICAgICAgICgtW1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIgZXhpdEZ1
bGxTY3JlZW5dKTogSGlkZSB0aGUgd2FybmluZyB2aWV3LgorICAgICAgICAoLVtXS0Z1bGxTY3Jl
ZW5XaW5kb3dDb250cm9sbGVyIGJlZ2FuRXhpdEZ1bGxTY3JlZW5XaXRoSW5pdGlhbEZyYW1lOmZp
bmFsRnJhbWU6XSk6IEFkZCBzcGVjaWFsIGNhc2Ugd2hlcmUgd2UgYXJlIGV4aXRpbmcKKyAgICAg
ICAgICAgIGZyb20gZnVsbCBzY3JlZW4gbW9kZSB3aGVuIHRoZSBmdWxsIHNjcmVlbiB3aW5kb3cg
aXMgbm90IG9uIHNjcmVlbi4KKyAgICAgICAgKC1bV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxl
ciBmaW5pc2hlZEV4aXRGdWxsU2NyZWVuQW5pbWF0aW9uOl0pOiBSZW1vdmUgcmVmZXJlbmNlIHRv
IF91cGRhdGVNZW51QW5kRG9ja0ZvckZ1bGxTY3JlZW4uCisgICAgICAgICgtW1dLRnVsbFNjcmVl
bldpbmRvd0NvbnRyb2xsZXIgY3VzdG9tV2luZG93c1RvRW50ZXJGdWxsU2NyZWVuRm9yV2luZG93
Ol0pOiBBZGRlZC4gUmV0dXJuIHRoZSBiYWNrZ3JvdW5kIHdpbmRvdyBhbmQgdGhlIGZ1bGwgc2Ny
ZWVuIHdpbmRvdy4KKyAgICAgICAgKC1bV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlciBjdXN0
b21XaW5kb3dzVG9FeGl0RnVsbFNjcmVlbkZvcldpbmRvdzpdKTogRGl0dG8uCisgICAgICAgICgt
W1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIgd2luZG93OnN0YXJ0Q3VzdG9tQW5pbWF0aW9u
VG9FbnRlckZ1bGxTY3JlZW5XaXRoRHVyYXRpb246XSk6IEFkZGVkLiBDYWxsIHRocm91Z2ggdG8g
X3N0YXJ0RW50ZXJGdWxsU2NyZWVuQW5pbWF0aW9uV2l0aER1cmF0aW9uOgorICAgICAgICAoLVtX
S0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyIHdpbmRvdzpzdGFydEN1c3RvbUFuaW1hdGlvblRv
RXhpdEZ1bGxTY3JlZW5XaXRoRHVyYXRpb246XSk6IEFkZGVkLiBDYWxsIHRocm91Z2ggdG8gX3N0
YXJ0RXhpdEZ1bGxTY3JlZW5BbmltYXRpb25XaXRoRHVyYXRpb246CisKIDIwMTItMTAtMjMgIEFs
bGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBkaWdpYS5jb20+CiAKICAgICAgICAg
W1F0XVtXSzJdIEFkZCBwcmVmZXJlbmNlIGZvciBlbmFibGluZyBzY3JvbGwgYW5pbWF0b3JzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9FbmdsaXNoLmxwcm9qL0xvY2FsaXphYmxlLnN0cmlu
Z3MgYi9Tb3VyY2UvV2ViQ29yZS9FbmdsaXNoLmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3MKaW5k
ZXggNGM0MzE1MGE3MTljYTc2OGQ2N2E1ZGM3MmU4MjU5NDQ4YTRlMjg1MS4uODA2ZWE3NGM4MTcz
ZWE0Y2QyM2U5MjFjMDJiMzM1ZTBiODgwZjZkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
RW5nbGlzaC5scHJvai9Mb2NhbGl6YWJsZS5zdHJpbmdzCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Vu
Z2xpc2gubHByb2ovTG9jYWxpemFibGUuc3RyaW5ncwpAQCAtODkyLDMgKzg5Miw1IEBACiAvKiBh
Y2Nlc3NpYmlsaXR5IHJvbGUgZGVzY3JpcHRpb24gZm9yIHZpZGVvIGVsZW1lbnQgY29udHJvbGxl
ciAqLwogInZpZGVvIGVsZW1lbnQgcGxheWJhY2sgY29udHJvbHMgYW5kIHN0YXR1cyBkaXNwbGF5
IiA9ICJ2aWRlbyBlbGVtZW50IHBsYXliYWNrIGNvbnRyb2xzIGFuZCBzdGF0dXMgZGlzcGxheSI7
CiAKKy8qIE1lc3NhZ2UgdG8gZGlzcGxheSBpbiBicm93c2VyIHdpbmRvdyB3aGVuIGluIHdlYmtp
dCBmdWxsIHNjcmVlbiBtb2RlLiAqLworIkNsaWNrIHRvIGV4aXQgZnVsbCBzY3JlZW4gbW9kZSIg
PSAiQ2xpY2sgdG8gZXhpdCBmdWxsIHNjcmVlbiBtb2RlIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5k
ZXggMzUxNjNlNDQ5MWRiYjk5MzM2YjZkOTZlZDIwOGJjNDM5YmViYmNiZC4uZDllNDZlNmE5MDhh
MTNkZmFkNzZkNDQ4NGMxYzUwNTExM2QwNzlhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTE1
NzcsNiArMTU3Nyw4IEBAIF93a1NpZ25hbENGUmVhZFN0cmVhbUhhc0J5dGVzCiAub2JqY19jbGFz
c19uYW1lX0RPTVN0eWxlU2hlZXQKIC5vYmpjX2NsYXNzX25hbWVfRE9NU3R5bGVTaGVldExpc3QK
IC5vYmpjX2NsYXNzX25hbWVfRE9NVHJlZVdhbGtlcgorLm9iamNfY2xhc3NfbmFtZV9XZWJDb3Jl
RnVsbFNjcmVlblBsYWNlaG9sZGVyVmlldworLm9iamNfY2xhc3NfbmFtZV9XZWJDb3JlRnVsbFNj
cmVlbldhcm5pbmdWaWV3CiAub2JqY19jbGFzc19uYW1lX1dlYkNvcmVGdWxsU2NyZWVuV2luZG93
CiAub2JqY19jbGFzc19uYW1lX1dlYkhUTUxDb252ZXJ0ZXIKIC5vYmpjX2NsYXNzX25hbWVfV2Vi
V2luZG93RmFkZUFuaW1hdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDZjMTU4NTY2ZmFjYzZiMGNjNDdjNGQzYjU5NDc1YjU3
MzE0ZmRjOWMuLjM1ZDAyOGQyODg3NTkyNTlhZmQ3YWQ5ODk1ZTBlMzMyYTMwZTkzZjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTU4OTMsNiArNTg5MywxMCBAQAogCQlDREI4NTlGNzE2MEQ0OEE0MDBFNUIwN0YgLyogTWVkaWFL
ZXlFdmVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDREI4NTlGNDE2MEQ0ODk5MDBFNUIwN0YgLyogTWVkaWFLZXlFdmVudC5jcHAgKi87IH07CiAJ
CUNEQjg1OUZBMTYwRDQ5NDkwMEU1QjA3RiAvKiBKU01lZGlhS2V5RXZlbnQuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RCODU5RjgxNjBENDkzRTAw
RTVCMDdGIC8qIEpTTWVkaWFLZXlFdmVudC5jcHAgKi87IH07CiAJCUNEQjg1OUZCMTYwRDQ5NEYw
MEU1QjA3RiAvKiBKU01lZGlhS2V5RXJyb3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RCODU5RjAxNjBENDJERDAwRTVCMDdGIC8qIEpTTWVkaWFL
ZXlFcnJvci5jcHAgKi87IH07CisJCUNEQzY5REQ2MTYzMjAyNkMwMDdDMzhERiAvKiBXZWJDb3Jl
RnVsbFNjcmVlbldhcm5pbmdWaWV3LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDREM2OURENDE2MzIwMjZDMDA3QzM4REYgLyogV2ViQ29yZUZ1bGxTY3Jl
ZW5XYXJuaW5nVmlldy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCUNEQzY5REQ3MTYzMjAyNkMwMDdDMzhERiAvKiBXZWJDb3JlRnVsbFNjcmVlbldh
cm5pbmdWaWV3Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQ0RDNjlERDUxNjMyMDI2QzAwN0MzOERGIC8qIFdlYkNvcmVGdWxsU2NyZWVuV2FybmluZ1Zp
ZXcubW0gKi87IH07CisJCUNEQzY5RERBMTYzNzFGRDQwMDdDMzhERiAvKiBXZWJDb3JlRnVsbFNj
cmVlblBsYWNlaG9sZGVyVmlldy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0RDNjlERDgxNjM3MUZEMzAwN0MzOERGIC8qIFdlYkNvcmVGdWxsU2NyZWVu
UGxhY2Vob2xkZXJWaWV3LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJQ0RDNjlEREIxNjM3MUZENDAwN0MzOERGIC8qIFdlYkNvcmVGdWxsU2NyZWVu
UGxhY2Vob2xkZXJWaWV3Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0RDNjlERDkxNjM3MUZEMzAwN0MzOERGIC8qIFdlYkNvcmVGdWxsU2NyZWVuUGxh
Y2Vob2xkZXJWaWV3Lm1tICovOyB9OwogCQlDREQ1MjVENzE0NUI2REQwMDA4RDIwNEQgLyogSlNI
VE1MTWVkaWFFbGVtZW50Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IENERjY1Q0NDMTQ1QjZBRkUwMEM0QzdBQSAvKiBKU0hUTUxNZWRpYUVs
ZW1lbnRDdXN0b20uY3BwICovOyB9OwogCQlDREVBNzYzMDE0NjA4QTUzMDA4QjMxRjEgLyogUGxh
dGZvcm1DbG9ja0NBLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IENERUE3NjJFMTQ2MDg0REUwMDhCMzFGMSAvKiBQbGF0Zm9ybUNsb2NrQ0EuY3BwICov
OyB9OwogCQlDREVBNzYzNDE0NjBCNTZGMDA4QjMxRjEgLyogQ2xvY2tHZW5lcmljLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERUE3NjMyMTQ2MEFF
MjkwMDhCMzFGMSAvKiBDbG9ja0dlbmVyaWMuY3BwICovOyB9OwpAQCAtODY5MSw2ICs4Njk1LDgg
QEAKIAkJNTAzRDBDQTgxNEI1QjA4NzAwRjMyRjU3IC8qIEN1c3RvbUZpbHRlclByb2dyYW0uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQ3VzdG9tRmlsdGVyUHJvZ3JhbS5oOyBw
YXRoID0gZmlsdGVycy9DdXN0b21GaWx0ZXJQcm9ncmFtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTUwM0QwQ0E5MTRCNUIwODcwMEYzMkY1NyAvKiBDdXN0b21GaWx0ZXJQcm9ncmFt
Q2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEN1c3RvbUZpbHRlclBy
b2dyYW1DbGllbnQuaDsgcGF0aCA9IGZpbHRlcnMvQ3VzdG9tRmlsdGVyUHJvZ3JhbUNsaWVudC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MDNEMENBRDE0QjVCMEJBMDBGMzJGNTcg
LyogU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IFN0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbS5oOyBwYXRoID0gc3R5bGUvU3R5bGVDdXN0
b21GaWx0ZXJQcm9ncmFtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUwODFFM0RG
M0NGQzgwQzE2RUY4QjQ4QiAvKiBDYWNoZWRSZXNvdXJjZVJlcXVlc3QuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENhY2hlZFJlc291cmNlUmVxdWVzdC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUwODFFM0UxM0QwMjgwQzE2RUY4QjQ4QiAvKiBD
YWNoZWRSZXNvdXJjZVJlcXVlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IENhY2hlZFJlc291cmNlUmVxdWVzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
MDhDQ0E0RDEzQ0YxMDZCMDAzMTUxRjMgLyogUmVuZGVyRmxvd1RocmVhZC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJGbG93VGhyZWFkLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTUwOENDQTRFMTNDRjEwNkIwMDMxNTFGMyAvKiBSZW5kZXJGbG93VGhy
ZWFkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlckZsb3dU
aHJlYWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MDk4N0MyNDE1N0Q2NzZE
MDBCREE4MzUgLyogQ3VzdG9tRmlsdGVyR2xvYmFsQ29udGV4dC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBDdXN0b21GaWx0ZXJHbG9iYWxDb250ZXh0LmNwcDsgcGF0
aCA9IGZpbHRlcnMvQ3VzdG9tRmlsdGVyR2xvYmFsQ29udGV4dC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0xMjk2NSw4ICsxMjk3MSw2IEBACiAJCUJDQjE2QzBGMDk3OUMzQkQw
MDQ2Nzc0MSAvKiBDYWNoZWRYU0xTdHlsZVNoZWV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBDYWNoZWRYU0xTdHlsZVNoZWV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUJDQjE2QzEwMDk3OUMzQkQwMDQ2Nzc0MSAvKiBDYWNoZWRSZXNvdXJjZUxvYWRlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2FjaGVkUmVzb3VyY2VM
b2FkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0IxNkMxMTA5NzlDM0JE
MDA0Njc3NDEgLyogQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IENhY2hlZFJlc291cmNlTG9hZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCTUwODFFM0RGM0NGQzgwQzE2RUY4QjQ4QiAvKiBDYWNoZWRSZXNvdXJjZVJlcXVl
c3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENhY2hlZFJlc291
cmNlUmVxdWVzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUwODFFM0UxM0Qw
MjgwQzE2RUY4QjQ4QiAvKiBDYWNoZWRSZXNvdXJjZVJlcXVlc3QuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IENhY2hlZFJlc291cmNlUmVxdWVzdC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlCQ0I3NzM1RTBDMTc4NTNEMDAxMzJCQTQgLyogSlNOb2RlRmlsdGVy
Q29uZGl0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU05v
ZGVGaWx0ZXJDb25kaXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0I3
NzM1RjBDMTc4NTNEMDAxMzJCQTQgLyogSlNOb2RlRmlsdGVyQ29uZGl0aW9uLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU05vZGVGaWx0ZXJDb25kaXRpb24uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNCNzczNjAwQzE3ODUzRDAwMTMyQkE0IC8qIEpTTm9k
ZUZpbHRlckN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SlNOb2RlRmlsdGVyQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEz
MjY2LDYgKzEzMjcwLDEwIEBACiAJCUNEQjg1OUY4MTYwRDQ5M0UwMEU1QjA3RiAvKiBKU01lZGlh
S2V5RXZlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNNZWRp
YUtleUV2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RCODU5RjkxNjBE
NDkzRTAwRTVCMDdGIC8qIEpTTWVkaWFLZXlFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKU01lZGlhS2V5RXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQ0RCRDkzQkExMzMzQkQ0QjAwMjU3MEUzIC8qIGZ1bGxzY3JlZW5RdWlja1RpbWUuY3NzICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dC5jc3M7IHBhdGggPSBmdWxsc2NyZWVuUXVpY2tUaW1lLmNzczsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RDNjlERDQxNjMyMDI2QzAwN0MzOERGIC8qIFdlYkNv
cmVGdWxsU2NyZWVuV2FybmluZ1ZpZXcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV2ViQ29yZUZ1bGxTY3JlZW5XYXJuaW5nVmlldy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlDREM2OURENTE2MzIwMjZDMDA3QzM4REYgLyogV2ViQ29yZUZ1bGxTY3JlZW5XYXJu
aW5nVmlldy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkNv
cmVGdWxsU2NyZWVuV2FybmluZ1ZpZXcubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUNEQzY5REQ4MTYzNzFGRDMwMDdDMzhERiAvKiBXZWJDb3JlRnVsbFNjcmVlblBsYWNlaG9sZGVy
Vmlldy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDb3JlRnVsbFNjcmVl
blBsYWNlaG9sZGVyVmlldy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREM2OURE
OTE2MzcxRkQzMDA3QzM4REYgLyogV2ViQ29yZUZ1bGxTY3JlZW5QbGFjZWhvbGRlclZpZXcubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJDb3JlRnVsbFNjcmVl
blBsYWNlaG9sZGVyVmlldy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RDRTVD
RDAxNDYzM0JDOTAwRDQ3Q0NBIC8qIEV2ZW50VGFyZ2V0RmFjdG9yeS5pbiAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IHBhdGggPSBFdmVudFRhcmdldEZhY3RvcnkuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUNERUE3NjJDMTQ2MDgyMjQwMDhCMzFGMSAvKiBDbG9jay5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBDbG9jay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlDREVBNzYyRTE0NjA4NERFMDA4QjMxRjEgLyogUGxhdGZvcm1DbG9ja0NBLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBsYXRmb3JtQ2xvY2tDQS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNTc2MCw2ICsxNTc2OCwxMCBAQAogCQkJCUJDRTY1
OUU1MEVBOTJGQjIwMDdFNDUzMyAvKiBUaGVtZU1hYy5oICovLAogCQkJCUJDRTY1OUU4MEVBOTJG
RkEwMDdFNDUzMyAvKiBUaGVtZU1hYy5tbSAqLywKIAkJCQk1MURGNkQ3RjBCOTJBMThFMDBDMkRD
ODUgLyogVGhyZWFkQ2hlY2subW0gKi8sCisJCQkJQ0RDNjlERDgxNjM3MUZEMzAwN0MzOERGIC8q
IFdlYkNvcmVGdWxsU2NyZWVuUGxhY2Vob2xkZXJWaWV3LmggKi8sCisJCQkJQ0RDNjlERDkxNjM3
MUZEMzAwN0MzOERGIC8qIFdlYkNvcmVGdWxsU2NyZWVuUGxhY2Vob2xkZXJWaWV3Lm1tICovLAor
CQkJCUNEQzY5REQ0MTYzMjAyNkMwMDdDMzhERiAvKiBXZWJDb3JlRnVsbFNjcmVlbldhcm5pbmdW
aWV3LmggKi8sCisJCQkJQ0RDNjlERDUxNjMyMDI2QzAwN0MzOERGIC8qIFdlYkNvcmVGdWxsU2Ny
ZWVuV2FybmluZ1ZpZXcubW0gKi8sCiAJCQkJQ0QxMjdERUExNEYzMDk3OTAwRTg0Nzc5IC8qIFdl
YkNvcmVGdWxsU2NyZWVuV2luZG93LmggKi8sCiAJCQkJQ0QxMjdERUIxNEYzMDk3OTAwRTg0Nzc5
IC8qIFdlYkNvcmVGdWxsU2NyZWVuV2luZG93Lm1tICovLAogCQkJCTM3MTk0MTk1MTU2NkIzNzIw
MEEyNzZEOCAvKiBXZWJDb3JlTlNDZWxsRXh0cmFzLmggKi8sCkBAIC0yNTQ4OCw2ICsyNTUwMCw3
IEBACiAJCQkJRkQ1ODFGQjUxNTIwRjkzQjAwM0E3QTc1IC8qIFdhdmVUYWJsZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMjlBODEyNDkwRkJCOUNBOTAwNTEwMjkzIC8qIFdlYkFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0YxOTlBODA4MjQ1RTU5MDAxRTlB
QkMgLyogV2ViQ29yZUZyYW1lVmlldy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0RDNjlERDYxNjMy
MDI2QzAwN0MzOERGIC8qIFdlYkNvcmVGdWxsU2NyZWVuV2FybmluZ1ZpZXcuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUNEMTI3REVFMTRGMzA5ODQwMEU4NDc3OSAvKiBXZWJDb3JlRnVsbFNjcmVlbldp
bmRvdy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM1M0Q5MTExMTQzMTBDQzAwMEQ4MTdFIC8qIFdl
YkNvcmVKU0NsaWVudERhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRjE5OUJCMDgyNDVFNTkw
MDFFOUFCQyAvKiBXZWJDb3JlS2V5Ym9hcmRVSU1vZGUuaCBpbiBIZWFkZXJzICovLApAQCAtMjU2
NDksNiArMjU2NjIsNyBAQAogCQkJCTdFNUQ3QTc3MTYxRDNGOEYwMDg5NkMzNCAvKiBPRVNFbGVt
ZW50SW5kZXhVaW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk3RTQ2RjZGQjE2MjdBMkNBMDAwNjIy
MjMgLyogSlNPRVNFbGVtZW50SW5kZXhVaW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlFNDcxMjdD
QjE2MzQzOEFFMDBFRDZGNUEgLyogU3R5bGVJbnZhbGlkYXRpb25BbmFseXNpcy5oIGluIEhlYWRl
cnMgKi8sCisJCQkJQ0RDNjlEREExNjM3MUZENDAwN0MzOERGIC8qIFdlYkNvcmVGdWxsU2NyZWVu
UGxhY2Vob2xkZXJWaWV3LmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVw
bG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTI4NjE1LDYgKzI4NjI5LDcgQEAK
IAkJCQlGRDdGMjk5NjEzRDRDMENCMDBBRDk1MzUgLyogV2F2ZVNoYXBlclByb2Nlc3Nvci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlGRDU4MUZCNDE1MjBGOTNCMDAzQTdBNzUgLyogV2F2ZVRhYmxl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTI5QTgxMjRBMEZCQjlDQTkwMDUxMDI5MyAvKiBXZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5tbSBpbiBTb3VyY2VzICovLAorCQkJCUNEQzY5REQ3
MTYzMjAyNkMwMDdDMzhERiAvKiBXZWJDb3JlRnVsbFNjcmVlbldhcm5pbmdWaWV3Lm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJQ0QxMjdERUQxNEYzMDk3RDAwRTg0Nzc5IC8qIFdlYkNvcmVGdWxsU2Ny
ZWVuV2luZG93Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJRjNCRkM5RDMxNUMxNzdFQzAwNDI0NEU1
IC8qIFdlYkNvcmVNZW1vcnlJbnN0cnVtZW50YXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MzcxOTQxOTYxNTY2QjM3MjAwQTI3NkQ4IC8qIFdlYkNvcmVOU0NlbGxFeHRyYXMubSBpbiBTb3Vy
Y2VzICovLApAQCAtMjg3NjAsNiArMjg3NzUsNyBAQAogCQkJCTdFNUQ3QTc2MTYxRDNGOEYwMDg5
NkMzNCAvKiBPRVNFbGVtZW50SW5kZXhVaW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdFNDZG
NkZBMTYyN0EyQ0EwMDA2MjIyMyAvKiBKU09FU0VsZW1lbnRJbmRleFVpbnQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJRTQ3MTI3Q0ExNjM0MzhBMTAwRUQ2RjVBIC8qIFN0eWxlSW52YWxpZGF0aW9u
QW5hbHlzaXMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQ0RDNjlEREIxNjM3MUZENDAwN0MzOERG
IC8qIFdlYkNvcmVGdWxsU2NyZWVuUGxhY2Vob2xkZXJWaWV3Lm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuY3BwCmluZGV4IGFiZjFi
Y2E1ZTg1NDEwYmE4N2Q1Y2FiODI1MDBkOTY5ZjEwOTI2YTcuLjYzOGMwNTVhMjY2OWVkMGExZmNj
ZGVkNTEwZjY2NWRhZDcxNjg4ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0xvY2FsaXplZFN0cmluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvY2Fs
aXplZFN0cmluZ3MuY3BwCkBAIC05ODUsNCArOTg1LDkgQEAgU3RyaW5nIHZhbGlkYXRpb25NZXNz
YWdlU3RlcE1pc21hdGNoVGV4dChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKQogICAgIHJl
dHVybiBXRUJfVUlfU1RSSU5HKCJzdGVwIG1pc21hdGNoIiwgIlZhbGlkYXRpb24gbWVzc2FnZSBm
b3IgaW5wdXQgZm9ybSBjb250cm9scyB3aXRoIHZhbHVlIG5vdCByZXNwZWN0aW5nIHRoZSBzdGVw
IGF0dHJpYnV0ZSIpOwogfQogCitTdHJpbmcgY2xpY2tUb0V4aXRGdWxsU2NyZWVuVGV4dCgpCit7
CisgICAgcmV0dXJuIFdFQl9VSV9TVFJJTkcoIkNsaWNrIHRvIGV4aXQgZnVsbCBzY3JlZW4gbW9k
ZSIsICJNZXNzYWdlIHRvIGRpc3BsYXkgaW4gYnJvd3NlciB3aW5kb3cgd2hlbiBpbiB3ZWJraXQg
ZnVsbCBzY3JlZW4gbW9kZS4iKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5oCmluZGV4IDhjNTZmZTFkNWNmYzI0
Nzk5NmM5MDgyNjRjM2Y5NzEyNDAxMzU0NWMuLmUzZjMzMGE0NTg4MmEyYWVlZDQyNWUwNDYxZjIy
NzJhNzE2MmU4ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvY2FsaXpl
ZFN0cmluZ3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdz
LmgKQEAgLTI1Nyw2ICsyNTcsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgU3RyaW5nIHVu
YWNjZXB0YWJsZVRMU0NlcnRpZmljYXRlKCk7CiAjZW5kaWYKIAorICAgIFN0cmluZyBjbGlja1Rv
RXhpdEZ1bGxTY3JlZW5UZXh0KCk7CisKICNpZiAhUExBVEZPUk0oQ0hST01JVU0pCiAjZGVmaW5l
IFdFQl9VSV9TVFJJTkcoc3RyaW5nLCBkZXNjcmlwdGlvbikgV2ViQ29yZTo6bG9jYWxpemVkU3Ry
aW5nKHN0cmluZykKICNkZWZpbmUgV0VCX1VJX1NUUklOR19LRVkoc3RyaW5nLCBrZXksIGRlc2Ny
aXB0aW9uKSBXZWJDb3JlOjpsb2NhbGl6ZWRTdHJpbmcoa2V5KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVGdWxsU2NyZWVuUGxhY2Vob2xkZXJWaWV3Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZUZ1bGxTY3JlZW5QbGFjZWhvbGRl
clZpZXcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi43YjI0M2IwYTJmMjRjMjA1NzM3YWEzOTc4ZDFhOGM2YWU0ZGM0
NGMzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNv
cmVGdWxsU2NyZWVuUGxhY2Vob2xkZXJWaWV3LmgKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgV2ViQ29yZUZ1bGxTY3JlZW5QbGFjZWhvbGRlclZpZXdfaAorI2RlZmluZSBX
ZWJDb3JlRnVsbFNjcmVlblBsYWNlaG9sZGVyVmlld19oCisKKyNpbXBvcnQgPHd0Zi9SZXRhaW5Q
dHIuaD4KKworQGludGVyZmFjZSBXZWJDb3JlRnVsbFNjcmVlblBsYWNlaG9sZGVyVmlldyA6IE5T
VmlldyB7CisgICAgUmV0YWluUHRyPE5TVmlldz4gX2V4aXRXYXJuaW5nOworICAgIE5TT2JqZWN0
KiBfdGFyZ2V0OworICAgIFNFTCBfYWN0aW9uOworfQorQHByb3BlcnR5KHJldGFpbikgaWQgY29u
dGVudHM7CitAcHJvcGVydHkoYXNzaWduKSBOU09iamVjdCogdGFyZ2V0OworQHByb3BlcnR5KGFz
c2lnbikgU0VMIGFjdGlvbjsKKy0gKHZvaWQpc2V0RXhpdFdhcm5pbmdWaXNpYmxlOihCT09MKXZp
c2libGU7CitAZW5kCisKKyNlbmRpZiAvLyBXZWJDb3JlRnVsbFNjcmVlblBsYWNlaG9sZGVyVmll
d19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZUZ1bGxT
Y3JlZW5QbGFjZWhvbGRlclZpZXcubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2Vi
Q29yZUZ1bGxTY3JlZW5QbGFjZWhvbGRlclZpZXcubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjkyMTAyNDk1ZDJh
YmYxZWY3ZGY1MTJlNWQ0MjEwNzJkM2MwNGU3NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlRnVsbFNjcmVlblBsYWNlaG9sZGVyVmlldy5tbQpA
QCAtMCwwICsxLDk2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIldlYkNvcmVGdWxsU2NyZWVuUGxhY2Vob2xkZXJWaWV3LmgiCisKKyNpbmNsdWRlICJMb2Nh
bGl6ZWRTdHJpbmdzLmgiCisjaW5jbHVkZSAiV2ViQ29yZUZ1bGxTY3JlZW5XYXJuaW5nVmlldy5o
IgorI2luY2x1ZGUgPFF1YXJ0ekNvcmUvQ29yZUltYWdlLmg+CisjaW5jbHVkZSA8d3RmL1VudXNl
ZFBhcmFtLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK3VzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOworCitAaW1wbGVtZW50YXRpb24gV2ViQ29yZUZ1bGxTY3JlZW5QbGFjZWhv
bGRlclZpZXcKKy0gKGlkKWluaXRXaXRoRnJhbWU6KE5TUmVjdClmcmFtZVJlY3QKK3sKKyAgICBz
ZWxmID0gW3N1cGVyIGluaXRXaXRoRnJhbWU6ZnJhbWVSZWN0XTsKKyAgICBpZiAoIXNlbGYpCisg
ICAgICAgIHJldHVybiBuaWw7CisKKyAgICBbc2VsZiBzZXRMYXllcjpbQ0FMYXllciBsYXllcl1d
OworICAgIFtzZWxmIHNldExheWVyQ29udGVudHNSZWRyYXdQb2xpY3k6TlNWaWV3TGF5ZXJDb250
ZW50c1JlZHJhd05ldmVyXTsKKyAgICBbc2VsZiBzZXRXYW50c0xheWVyOllFU107CisKKyAgICBf
ZXhpdFdhcm5pbmcgPSBhZG9wdE5TKFtbV2ViQ29yZUZ1bGxTY3JlZW5XYXJuaW5nVmlldyBhbGxv
Y10gaW5pdFdpdGhUaXRsZTpjbGlja1RvRXhpdEZ1bGxTY3JlZW5UZXh0KCldKTsKKyAgICBOU1Jl
Y3Qgd2FybmluZ0ZyYW1lID0gW19leGl0V2FybmluZy5nZXQoKSBmcmFtZV07CisgICAgd2Fybmlu
Z0ZyYW1lLm9yaWdpbiA9IE5TTWFrZVBvaW50KAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAoZnJhbWVSZWN0LnNpemUud2lkdGggLSB3YXJuaW5nRnJhbWUuc2l6ZS53aWR0
aCkgLyAyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnJhbWVSZWN0
LnNpemUuaGVpZ2h0IC0gd2FybmluZ0ZyYW1lLnNpemUuaGVpZ2h0KSAvIDIpOworICAgIFtfZXhp
dFdhcm5pbmcuZ2V0KCkgc2V0RnJhbWU6d2FybmluZ0ZyYW1lXTsKKyAgICBbX2V4aXRXYXJuaW5n
LmdldCgpIHNldEhpZGRlbjpZRVNdOworICAgIFtzZWxmIGFkZFN1YnZpZXc6X2V4aXRXYXJuaW5n
LmdldCgpXTsKKworICAgIHJldHVybiBzZWxmOworfQorCitAc3ludGhlc2l6ZSB0YXJnZXQgPSBf
dGFyZ2V0OworQHN5bnRoZXNpemUgYWN0aW9uID0gX2FjdGlvbjsKKworQGR5bmFtaWMgY29udGVu
dHM7CistICh2b2lkKXNldENvbnRlbnRzOihpZCljb250ZW50cworeworICAgIFtbc2VsZiBsYXll
cl0gc2V0Q29udGVudHM6Y29udGVudHNdOworfQorCistIChpZCljb250ZW50cworeworICAgIHJl
dHVybiBbW3NlbGYgbGF5ZXJdIGNvbnRlbnRzXTsKK30KKworLSAodm9pZClzZXRFeGl0V2Fybmlu
Z1Zpc2libGU6KEJPT0wpdmlzaWJsZQoreworICAgIFtfZXhpdFdhcm5pbmcuZ2V0KCkgc2V0SGlk
ZGVuOiF2aXNpYmxlXTsKKyAgICBpZiAodmlzaWJsZSkgeworICAgICAgICBDSUZpbHRlciogZmls
dGVyID0gW0NJRmlsdGVyIGZpbHRlcldpdGhOYW1lOkAiQ0lGYWxzZUNvbG9yIiBrZXlzQW5kVmFs
dWVzOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEAiaW5wdXRDb2xvcjAiLCBbQ0lDb2xv
ciBjb2xvcldpdGhSZWQ6MCBncmVlbjowIGJsdWU6MF0sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQCJpbnB1dENvbG9yMSIsIFtDSUNvbG9yIGNvbG9yV2l0aFJlZDouOSBncmVlbjouOSBi
bHVlOi45XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWxdOworICAgICAgICBbW3Nl
bGYgbGF5ZXJdIHNldENvbXBvc2l0aW5nRmlsdGVyOmZpbHRlcl07CisgICAgfSBlbHNlCisgICAg
ICAgIFtbc2VsZiBsYXllcl0gc2V0Q29tcG9zaXRpbmdGaWx0ZXI6bmlsXTsKK30KKworLSAodm9p
ZCltb3VzZURvd246KE5TRXZlbnQgKil0aGVFdmVudAoreworICAgIFVOVVNFRF9QQVJBTSh0aGVF
dmVudCk7CisKKyAgICBpZiAoIV90YXJnZXQgfHwgIV9hY3Rpb24pCisgICAgICAgIHJldHVybjsK
KyAgICBbX3RhcmdldCBwZXJmb3JtU2VsZWN0b3I6X2FjdGlvbl07Cit9CisKK0BlbmQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlRnVsbFNjcmVlbldhcm5p
bmdWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZUZ1bGxTY3JlZW5X
YXJuaW5nVmlldy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY2ZWE5YWQ3ODRlYWUyZGUwOTVkMWUzMGVkZDdjMGM1
NGZhNmNjY2QKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
V2ViQ29yZUZ1bGxTY3JlZW5XYXJuaW5nVmlldy5oCkBAIC0wLDAgKzEsNDEgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIFdlYkNvcmVGdWxsU2NyZWVuV2FybmluZ1ZpZXdfaAorI2RlZmluZSBXZWJD
b3JlRnVsbFNjcmVlbldhcm5pbmdWaWV3X2gKKworI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkK
KworI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKworQGludGVyZmFjZSAgV2ViQ29yZUZ1bGxT
Y3JlZW5XYXJuaW5nVmlldyA6IE5TQm94IHsKKyAgICBSZXRhaW5QdHI8TlNUZXh0RmllbGQ+IF90
ZXh0RmllbGQ7Cit9CistIChpZClpbml0V2l0aFRpdGxlOihOU1N0cmluZyopdGl0bGU7CitAZW5k
CisKKyNlbmRpZgorCisjZW5kaWYgLy8gV2ViQ29yZUZ1bGxTY3JlZW5XYXJuaW5nVmlld19oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZUZ1bGxTY3JlZW5X
YXJuaW5nVmlldy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlRnVsbFNj
cmVlbldhcm5pbmdWaWV3Lm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNlZDk4YzE4OTFlNjQ1YzA1ZmI0MWY1MjFj
ZThhNjk2Y2FkNmRjZDMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvV2ViQ29yZUZ1bGxTY3JlZW5XYXJuaW5nVmlldy5tbQpAQCAtMCwwICsxLDEwNyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJDb3JlRnVsbFNj
cmVlbldhcm5pbmdWaWV3LmgiCisjaW5jbHVkZSAiTG9jYWxpemVkU3RyaW5ncy5oIgorI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCitzdGF0aWMgY29uc3QgQ0dGbG9hdCBXYXJuaW5n
Vmlld1RleHRXaGl0ZSA9IDAuOTsKK3N0YXRpYyBjb25zdCBDR0Zsb2F0IFdhcm5pbmdWaWV3VGV4
dEFscGhhID0gMTsKK3N0YXRpYyBjb25zdCBDR0Zsb2F0IFdhcm5pbmdWaWV3VGV4dFNpemUgPSA0
ODsKK3N0YXRpYyBjb25zdCBDR0Zsb2F0IFdhcm5pbmdWaWV3UGFkZGluZyA9IDIwOworc3RhdGlj
IGNvbnN0IENHRmxvYXQgV2FybmluZ1ZpZXdDb3JuZXJSYWRpdXMgPSAxMDsKK3N0YXRpYyBjb25z
dCBDR0Zsb2F0IFdhcm5pbmdWaWV3Qm9yZGVyV2hpdGUgPSAwLjk7CitzdGF0aWMgY29uc3QgQ0dG
bG9hdCBXYXJuaW5nVmlld0JvcmRlckFscGhhID0gMC4yOworc3RhdGljIGNvbnN0IENHRmxvYXQg
V2FybmluZ1ZpZXdCYWNrZ3JvdW5kV2hpdGUgPSAwLjE7CitzdGF0aWMgY29uc3QgQ0dGbG9hdCBX
YXJuaW5nVmlld0JhY2tncm91bmRBbHBoYSA9IDAuOTsKK3N0YXRpYyBjb25zdCBDR0Zsb2F0IFdh
cm5pbmdWaWV3U2hhZG93V2hpdGUgPSAwLjE7CitzdGF0aWMgY29uc3QgQ0dGbG9hdCBXYXJuaW5n
Vmlld1NoYWRvd0FscGhhID0gMTsKK3N0YXRpYyBjb25zdCBmbG9hdCBXYXJuaW5nVmlld1NoYWRv
d09wYWNpdHkgPSAwLjI1Oworc3RhdGljIGNvbnN0IENHU2l6ZSBXYXJuaW5nVmlld1NoYWRvd09m
ZnNldCA9IHswLCAtMn07CitzdGF0aWMgY29uc3QgQ0dGbG9hdCBXYXJuaW5nVmlld1NoYWRvd1Jh
ZGl1cyA9IDU7CitzdGF0aWMgY29uc3QgTlNUaW1lSW50ZXJ2YWwgV2FybmluZ1ZpZXdIaWRlRGVs
YXkgPSAzLjA7CitzdGF0aWMgY29uc3QgTlNUaW1lSW50ZXJ2YWwgV2FybmluZ1ZpZXdGYWRlRHVy
YXRpb24gPSAwLjU7CisKK0BpbXBsZW1lbnRhdGlvbiBXZWJDb3JlRnVsbFNjcmVlbldhcm5pbmdW
aWV3CisKKy0gKGlkKWluaXRXaXRoVGl0bGU6KE5TU3RyaW5nKil0aXRsZQoreworICAgIHNlbGYg
PSBbc3VwZXIgaW5pdFdpdGhGcmFtZTpOU1plcm9SZWN0XTsKKyAgICBpZiAoIXNlbGYpCisgICAg
ICAgIHJldHVybiBuaWw7CisKKyAgICBbc2VsZiBzZXRBdXRvcmVzaXppbmdNYXNrOihOU1ZpZXdN
aW5YTWFyZ2luIHwgTlNWaWV3TWF4WE1hcmdpbiB8IE5TVmlld01pbllNYXJnaW4gfCBOU1ZpZXdN
YXhZTWFyZ2luKV07CisgICAgW3NlbGYgc2V0Qm94VHlwZTpOU0JveEN1c3RvbV07CisgICAgW3Nl
bGYgc2V0VGl0bGVQb3NpdGlvbjpOU05vVGl0bGVdOworCisgICAgX3RleHRGaWVsZCA9IGFkb3B0
TlMoW1tOU1RleHRGaWVsZCBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU1plcm9SZWN0XSk7CisgICAg
W190ZXh0RmllbGQuZ2V0KCkgc2V0RWRpdGFibGU6Tk9dOworICAgIFtfdGV4dEZpZWxkLmdldCgp
IHNldFNlbGVjdGFibGU6Tk9dOworICAgIFtfdGV4dEZpZWxkLmdldCgpIHNldEJvcmRlcmVkOk5P
XTsKKyAgICBbX3RleHRGaWVsZC5nZXQoKSBzZXREcmF3c0JhY2tncm91bmQ6Tk9dOworCisgICAg
UmV0YWluUHRyPE5TRm9udD4gdGV4dEZvbnQgPSBbTlNGb250IGJvbGRTeXN0ZW1Gb250T2ZTaXpl
Oldhcm5pbmdWaWV3VGV4dFNpemVdOworICAgIFJldGFpblB0cjxOU0NvbG9yPiB0ZXh0Q29sb3Ig
PSBbTlNDb2xvciBjb2xvcldpdGhDYWxpYnJhdGVkV2hpdGU6V2FybmluZ1ZpZXdUZXh0V2hpdGUg
YWxwaGE6V2FybmluZ1ZpZXdUZXh0QWxwaGFdOworICAgIFJldGFpblB0cjxOU0RpY3Rpb25hcnk+
IGF0dHJpYnV0ZXMgPSBhZG9wdE5TKFtbTlNEaWN0aW9uYXJ5IGFsbG9jXSBpbml0V2l0aE9iamVj
dHNBbmRLZXlzOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB0ZXh0Rm9udC5nZXQoKSwgTlNGb250QXR0cmlidXRlTmFtZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dENvbG9yLmdldCgpLCBOU0Zv
cmVncm91bmRDb2xvckF0dHJpYnV0ZU5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG5pbF0pOworICAgIFJldGFpblB0cjxOU0F0dHJpYnV0ZWRT
dHJpbmc+IHRleHQgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0
aFN0cmluZzp0aXRsZSBhdHRyaWJ1dGVzOmF0dHJpYnV0ZXMuZ2V0KCldKTsKKyAgICBbX3RleHRG
aWVsZC5nZXQoKSBzZXRBdHRyaWJ1dGVkU3RyaW5nVmFsdWU6dGV4dC5nZXQoKV07CisgICAgW190
ZXh0RmllbGQuZ2V0KCkgc2l6ZVRvRml0XTsKKyAgICBOU1JlY3QgdGV4dEZpZWxkRnJhbWUgPSBb
X3RleHRGaWVsZC5nZXQoKSBmcmFtZV07CisgICAgTlNTaXplIGZyYW1lU2l6ZSA9IHRleHRGaWVs
ZEZyYW1lLnNpemU7CisgICAgZnJhbWVTaXplLndpZHRoICs9IFdhcm5pbmdWaWV3UGFkZGluZyAq
IDI7CisgICAgZnJhbWVTaXplLmhlaWdodCArPSBXYXJuaW5nVmlld1BhZGRpbmcgKiAyOworICAg
IFtzZWxmIHNldEZyYW1lU2l6ZTpmcmFtZVNpemVdOworCisgICAgdGV4dEZpZWxkRnJhbWUub3Jp
Z2luID0gTlNNYWtlUG9pbnQoCisgICAgICAgIChmcmFtZVNpemUud2lkdGggLSB0ZXh0RmllbGRG
cmFtZS5zaXplLndpZHRoKSAvIDIsCisgICAgICAgIChmcmFtZVNpemUuaGVpZ2h0IC0gdGV4dEZp
ZWxkRnJhbWUuc2l6ZS5oZWlnaHQpIC8gMik7CisKKyAgICAvLyBPZmZzZXQgdGhlIG9yaWdpbiBi
eSB0aGUgZm9udCdzIGRlc2NlbmRlciwgdG8gY2VudGVyIHRoZSB0ZXh0IGZpZWxkIGFib3V0IHRo
ZSBiYXNlbGluZToKKyAgICB0ZXh0RmllbGRGcmFtZS5vcmlnaW4ueSArPSBbW190ZXh0RmllbGQu
Z2V0KCkgZm9udF0gZGVzY2VuZGVyXTsKKworICAgIFtfdGV4dEZpZWxkLmdldCgpIHNldEZyYW1l
Ok5TSW50ZWdyYWxSZWN0KHRleHRGaWVsZEZyYW1lKV07CisgICAgW3NlbGYgYWRkU3Vidmlldzpf
dGV4dEZpZWxkLmdldCgpXTsKKworICAgIFJldGFpblB0cjxOU0NvbG9yPiBiYWNrZ3JvdW5kQ29s
b3IgPSBbTlNDb2xvciBjb2xvcldpdGhDYWxpYnJhdGVkV2hpdGU6V2FybmluZ1ZpZXdCYWNrZ3Jv
dW5kV2hpdGUgYWxwaGE6V2FybmluZ1ZpZXdCYWNrZ3JvdW5kQWxwaGFdOworICAgIFtzZWxmIHNl
dEZpbGxDb2xvcjpiYWNrZ3JvdW5kQ29sb3IuZ2V0KCldOworICAgIFtzZWxmIHNldENvcm5lclJh
ZGl1czpXYXJuaW5nVmlld0Nvcm5lclJhZGl1c107CisKKyAgICBSZXRhaW5QdHI8TlNDb2xvcj4g
Ym9yZGVyQ29sb3IgPSBbTlNDb2xvciBjb2xvcldpdGhDYWxpYnJhdGVkV2hpdGU6V2FybmluZ1Zp
ZXdCb3JkZXJXaGl0ZSBhbHBoYTpXYXJuaW5nVmlld0JvcmRlckFscGhhXTsKKyAgICBbc2VsZiBz
ZXRCb3JkZXJDb2xvcjpib3JkZXJDb2xvci5nZXQoKV07CisKKyAgICBSZXRhaW5QdHI8TlNTaGFk
b3c+IHNoYWRvdyA9IGFkb3B0TlMoW1tOU1NoYWRvdyBhbGxvY10gaW5pdF0pOworICAgIFJldGFp
blB0cjxOU0NvbG9yPiBzaGFkb3dDb2xvciA9IFtOU0NvbG9yIGNvbG9yV2l0aENhbGlicmF0ZWRX
aGl0ZTpXYXJuaW5nVmlld1NoYWRvd1doaXRlIGFscGhhOldhcm5pbmdWaWV3U2hhZG93QWxwaGFd
OworICAgIFtzaGFkb3cuZ2V0KCkgc2V0U2hhZG93Q29sb3I6c2hhZG93Q29sb3IuZ2V0KCldOwor
ICAgIFtzaGFkb3cuZ2V0KCkgc2V0U2hhZG93T2Zmc2V0Oldhcm5pbmdWaWV3U2hhZG93T2Zmc2V0
XTsKKyAgICBbc2hhZG93LmdldCgpIHNldFNoYWRvd0JsdXJSYWRpdXM6V2FybmluZ1ZpZXdTaGFk
b3dSYWRpdXNdOworICAgIFtzZWxmIHNldFNoYWRvdzpzaGFkb3cuZ2V0KCldOworCisgICAgcmV0
dXJuIHNlbGY7Cit9CitAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
bWFjL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9tYWMvV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5oCmluZGV4IDljZTg4YWU1YTk2
YmJkYmY5ZGFmOWM2NzAzOTEwN2FmOTI4OGU5OGMuLmU0Nzg5YWUzYTczZjkyMzRiMjdiYzdlMDY3
YjQ2MjQ5ODUwMDgzYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMv
V0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9tYWMvV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5oCkBAIC0zOCwxMyArMzgsMTQg
QEAgY2xhc3MgSW50UmVjdDsKIH0KIAogQGNsYXNzIFdLVmlldzsKK0BjbGFzcyBXZWJDb3JlRnVs
bFNjcmVlblBsYWNlaG9sZGVyVmlldzsKIEBjbGFzcyBXZWJXaW5kb3dTY2FsZUFuaW1hdGlvbjsK
IEBjbGFzcyBXZWJXaW5kb3dGYWRlQW5pbWF0aW9uOwogCi1AaW50ZXJmYWNlIFdLRnVsbFNjcmVl
bldpbmRvd0NvbnRyb2xsZXIgOiBOU1dpbmRvd0NvbnRyb2xsZXIgeworQGludGVyZmFjZSBXS0Z1
bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyIDogTlNXaW5kb3dDb250cm9sbGVyPE5TV2luZG93RGVs
ZWdhdGU+IHsKIEBwcml2YXRlCiAgICAgV0tWaWV3ICpfd2ViVmlldzsKLSAgICBSZXRhaW5QdHI8
TlNJbWFnZVZpZXc+IF93ZWJWaWV3UGxhY2Vob2xkZXI7CisgICAgUmV0YWluUHRyPFdlYkNvcmVG
dWxsU2NyZWVuUGxhY2Vob2xkZXJWaWV3PiBfd2ViVmlld1BsYWNlaG9sZGVyOwogICAgIFJldGFp
blB0cjxXZWJXaW5kb3dTY2FsZUFuaW1hdGlvbj4gX3NjYWxlQW5pbWF0aW9uOwogICAgIFJldGFp
blB0cjxXZWJXaW5kb3dGYWRlQW5pbWF0aW9uPiBfZmFkZUFuaW1hdGlvbjsKICAgICBSZXRhaW5Q
dHI8TlNXaW5kb3c+IF9iYWNrZ3JvdW5kV2luZG93OwpAQCAtNTYsNiArNTcsNyBAQCBjbGFzcyBJ
bnRSZWN0OwogICAgIEJPT0wgX2lzRXhpdGluZ0Z1bGxTY3JlZW47CiAgICAgQk9PTCBfaXNGdWxs
U2NyZWVuOwogICAgIEJPT0wgX2lzUGxheWluZzsKKyAgICBOU1RpbWVJbnRlcnZhbCBfYW5pbWF0
aW9uRHVyYXRpb247CiB9CiAKIC0gKFdLVmlldyopd2ViVmlldzsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5tbSBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxl
ci5tbQppbmRleCBlYjgyMTM0ZWYxYTBlNTdmNmI3NWU2NjA4N2FmN2Y1NTczNjAxOGM3Li5lOGMz
OTM0NjA2NTVhNjQzNTg1MGFiNDg1ZTZiMmJiNzZkMjE3MTAzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIubW0KKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9s
bGVyLm1tCkBAIC0zOSw2ICszOSw4IEBACiAjaW1wb3J0IDxXZWJDb3JlL0Rpc3BsYXlTbGVlcERp
c2FibGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0Zsb2F0UmVjdC5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9JbnRSZWN0Lmg+CisjaW1wb3J0IDxXZWJDb3JlL0xvY2FsaXplZFN0cmluZ3MuaD4KKyNpbXBv
cnQgPFdlYkNvcmUvV2ViQ29yZUZ1bGxTY3JlZW5QbGFjZWhvbGRlclZpZXcuaD4KICNpbXBvcnQg
PFdlYkNvcmUvV2ViQ29yZUZ1bGxTY3JlZW5XaW5kb3cuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2Vi
V2luZG93QW5pbWF0aW9uLmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViTlNXaW5kb3dFeHRyYXMuaD4K
QEAgLTUzLDggKzU1LDEyIEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNXaW5kb3c+IGNyZWF0ZUJhY2tn
cm91bmRGdWxsc2NyZWVuV2luZG93KE5TUmVjdCBmcmFtZSk7CiBzdGF0aWMgY29uc3QgQ0ZUaW1l
SW50ZXJ2YWwgZGVmYXVsdEFuaW1hdGlvbkR1cmF0aW9uID0gMC41Owogc3RhdGljIGNvbnN0IE5T
VGltZUludGVydmFsIERlZmF1bHRXYXRjaGRvZ1RpbWVySW50ZXJ2YWwgPSAxOwogCitAaW50ZXJm
YWNlIE5TV2luZG93KE1vcmVTcGVjaWZpY0Z1bGxTY3JlZW5BY3Rpb25zKQorLSAodm9pZClleGl0
RnVsbFNjcmVlbk1vZGU6KGlkKXNlbmRlcjsKKy0gKHZvaWQpZW50ZXJGdWxsU2NyZWVuTW9kZToo
aWQpc2VuZGVyOworQGVuZAorCiBAaW50ZXJmYWNlIFdLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xs
ZXIoUHJpdmF0ZSk8TlNBbmltYXRpb25EZWxlZ2F0ZT4KLS0gKHZvaWQpX3VwZGF0ZU1lbnVBbmRE
b2NrRm9yRnVsbFNjcmVlbjsKIC0gKHZvaWQpX3JlcGxhY2VWaWV3OihOU1ZpZXcqKXZpZXcgd2l0
aDooTlNWaWV3KilvdGhlclZpZXc7CiAtIChXZWJQYWdlUHJveHkqKV9wYWdlOwogLSAoV2ViRnVs
bFNjcmVlbk1hbmFnZXJQcm94eSopX21hbmFnZXI7CkBAIC05Miw2ICs5OCw4IEBAIHN0YXRpYyBO
U1JlY3QgY29udmVydFJlY3RUb1NjcmVlbihOU1dpbmRvdyAqd2luZG93LCBOU1JlY3QgcmVjdCkK
ICAgICBbd2luZG93IHJlbGVhc2VdOwogICAgIGlmICghc2VsZikKICAgICAgICAgcmV0dXJuIG5p
bDsKKyAgICBbd2luZG93IHNldERlbGVnYXRlOnNlbGZdOworICAgIFt3aW5kb3cgc2V0Q29sbGVj
dGlvbkJlaGF2aW9yOihbd2luZG93IGNvbGxlY3Rpb25CZWhhdmlvcl0gfCBOU1dpbmRvd0NvbGxl
Y3Rpb25CZWhhdmlvckZ1bGxTY3JlZW5QcmltYXJ5KV07CiAgICAgW3NlbGYgd2luZG93RGlkTG9h
ZF07CiAgICAgCiAgICAgcmV0dXJuIHNlbGY7CkBAIC0xNzQsNyArMTgyLDYgQEAgc3RhdGljIE5T
UmVjdCBjb252ZXJ0UmVjdFRvU2NyZWVuKE5TV2luZG93ICp3aW5kb3csIE5TUmVjdCByZWN0KQog
ICAgIC8vIHRoZSBEb2NrJ3Mgc2l6ZSBvciBsb2NhdGlvbiwgb3IgdGhleSBtYXkgaGF2ZSBjaGFu
Z2VkIHRoZSBmdWxsU2NyZWVuIHNjcmVlbidzIGRpbWVuc2lvbnMuIAogICAgIC8vIFVwZGF0ZSBv
dXIgcHJlc2VudGF0aW9uIHBhcmFtZXRlcnMsIGFuZCBlbnN1cmUgdGhhdCB0aGUgZnVsbCBzY3Jl
ZW4gd2luZG93IG9jY3VwaWVzIHRoZSAKICAgICAvLyBlbnRpcmUgc2NyZWVuOgotICAgIFtzZWxm
IF91cGRhdGVNZW51QW5kRG9ja0ZvckZ1bGxTY3JlZW5dOwogICAgIE5TV2luZG93KiB3aW5kb3cg
PSBbc2VsZiB3aW5kb3ddOwogICAgIE5TUmVjdCBzY3JlZW5GcmFtZSA9IFtbd2luZG93IHNjcmVl
bl0gZnJhbWVdOwogICAgIFt3aW5kb3cgc2V0RnJhbWU6c2NyZWVuRnJhbWUgZGlzcGxheTpZRVNd
OwpAQCAtMjEyLDggKzIxOSw2IEBAIHN0YXRpYyBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gY3JlYXRl
SW1hZ2VXaXRoQ29waWVkRGF0YShDR0ltYWdlUmVmIHNvdXJjZUltYWdlKQogICAgICAgICByZXR1
cm47CiAgICAgX2lzRnVsbFNjcmVlbiA9IFlFUzsKIAotICAgIFtzZWxmIF91cGRhdGVNZW51QW5k
RG9ja0ZvckZ1bGxTY3JlZW5dOyAgIAotCiAgICAgaWYgKCFzY3JlZW4pCiAgICAgICAgIHNjcmVl
biA9IFtOU1NjcmVlbiBtYWluU2NyZWVuXTsKICAgICBOU1JlY3Qgc2NyZWVuRnJhbWUgPSBbc2Ny
ZWVuIGZyYW1lXTsKQEAgLTI0NiwxMSArMjUxLDExIEBAIHN0YXRpYyBSZXRhaW5QdHI8Q0dJbWFn
ZVJlZj4gY3JlYXRlSW1hZ2VXaXRoQ29waWVkRGF0YShDR0ltYWdlUmVmIHNvdXJjZUltYWdlKQog
CiAgICAgLy8gU3dhcCB0aGUgd2ViVmlldyBwbGFjZWhvbGRlciBpbnRvIHBsYWNlLgogICAgIGlm
ICghX3dlYlZpZXdQbGFjZWhvbGRlcikgewotICAgICAgICBfd2ViVmlld1BsYWNlaG9sZGVyLmFk
b3B0TlMoW1tOU0ltYWdlVmlldyBhbGxvY10gaW5pdF0pOwotICAgICAgICBbX3dlYlZpZXdQbGFj
ZWhvbGRlci5nZXQoKSBzZXRMYXllcjpbQ0FMYXllciBsYXllcl1dOwotICAgICAgICBbX3dlYlZp
ZXdQbGFjZWhvbGRlci5nZXQoKSBzZXRXYW50c0xheWVyOllFU107CisgICAgICAgIF93ZWJWaWV3
UGxhY2Vob2xkZXIuYWRvcHROUyhbW1dlYkNvcmVGdWxsU2NyZWVuUGxhY2Vob2xkZXJWaWV3IGFs
bG9jXSBpbml0V2l0aEZyYW1lOltfd2ViVmlldyBmcmFtZV1dKTsKKyAgICAgICAgW193ZWJWaWV3
UGxhY2Vob2xkZXIuZ2V0KCkgc2V0VGFyZ2V0OnNlbGZdOworICAgICAgICBbX3dlYlZpZXdQbGFj
ZWhvbGRlci5nZXQoKSBzZXRBY3Rpb246QHNlbGVjdG9yKGNhbmNlbE9wZXJhdGlvbjopXTsKICAg
ICB9Ci0gICAgW1tfd2ViVmlld1BsYWNlaG9sZGVyLmdldCgpIGxheWVyXSBzZXRDb250ZW50czoo
aWQpd2ViVmlld0NvbnRlbnRzLmdldCgpXTsKKyAgICBbX3dlYlZpZXdQbGFjZWhvbGRlci5nZXQo
KSBzZXRDb250ZW50czooaWQpd2ViVmlld0NvbnRlbnRzLmdldCgpXTsKICAgICBbc2VsZiBfcmVw
bGFjZVZpZXc6X3dlYlZpZXcgd2l0aDpfd2ViVmlld1BsYWNlaG9sZGVyLmdldCgpXTsKICAgICAK
ICAgICAvLyBUaGVuIGluc2VydCB0aGUgV2ViVmlldyBpbnRvIHRoZSBmdWxsIHNjcmVlbiB3aW5k
b3cKQEAgLTI3Myw5ICsyNzgsOCBAQCBzdGF0aWMgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGNyZWF0
ZUltYWdlV2l0aENvcGllZERhdGEoQ0dJbWFnZVJlZiBzb3VyY2VJbWFnZSkKICAgICBfaW5pdGlh
bEZyYW1lID0gaW5pdGlhbEZyYW1lOwogICAgIF9maW5hbEZyYW1lID0gZmluYWxGcmFtZTsKIAot
ICAgIFtzZWxmIF91cGRhdGVNZW51QW5kRG9ja0ZvckZ1bGxTY3JlZW5dOyAgIAotCi0gICAgW3Nl
bGYgX3N0YXJ0RW50ZXJGdWxsU2NyZWVuQW5pbWF0aW9uV2l0aER1cmF0aW9uOmRlZmF1bHRBbmlt
YXRpb25EdXJhdGlvbl07CisgICAgQVNTRVJUKFtbc2VsZiB3aW5kb3ddIHJlc3BvbmRzVG9TZWxl
Y3RvcjpAc2VsZWN0b3IoZW50ZXJGdWxsU2NyZWVuTW9kZTopXSk7CisgICAgW1tzZWxmIHdpbmRv
d10gZW50ZXJGdWxsU2NyZWVuTW9kZTpzZWxmXTsKIH0KIAogLSAodm9pZClmaW5pc2hlZEVudGVy
RnVsbFNjcmVlbkFuaW1hdGlvbjooYm9vbCljb21wbGV0ZWQKQEAgLTI5NCwyNCArMjk4LDE0IEBA
IHN0YXRpYyBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gY3JlYXRlSW1hZ2VXaXRoQ29waWVkRGF0YShD
R0ltYWdlUmVmIHNvdXJjZUltYWdlKQogICAgICAgICB3aW5kb3dCb3VuZHMub3JpZ2luID0gTlNa
ZXJvUG9pbnQ7CiAgICAgICAgIFdLV2luZG93U2V0Q2xpcFJlY3QoW3NlbGYgd2luZG93XSwgd2lu
ZG93Qm91bmRzKTsKIAotICAgICAgICBOU1dpbmRvdyAqd2ViV2luZG93ID0gW193ZWJWaWV3UGxh
Y2Vob2xkZXIuZ2V0KCkgd2luZG93XTsKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEID49IDEwNzAKLSAgICAgICAgLy8gSW4gTGlvbiwgTlNXaW5kb3cgd2lsbCBhbmltYXRlIGlu
dG8gYW5kIG91dCBvZiBvcmRlck91dCBvcGVyYXRpb25zLiBTdXBwcmVzcyB0aGF0Ci0gICAgICAg
IC8vIGJlaGF2aW9yIGhlcmUsIG1ha2luZyBzdXJlIHRvIHJlc2V0IHRoZSBhbmltYXRpb24gYmVo
YXZpb3IgYWZ0ZXJ3YXJkLgotICAgICAgICBOU1dpbmRvd0FuaW1hdGlvbkJlaGF2aW9yIGFuaW1h
dGlvbkJlaGF2aW9yID0gW3dlYldpbmRvdyBhbmltYXRpb25CZWhhdmlvcl07Ci0gICAgICAgIFt3
ZWJXaW5kb3cgc2V0QW5pbWF0aW9uQmVoYXZpb3I6TlNXaW5kb3dBbmltYXRpb25CZWhhdmlvck5v
bmVdOwotI2VuZGlmCi0gICAgICAgIFt3ZWJXaW5kb3cgb3JkZXJPdXQ6c2VsZl07Ci0jaWYgX19N
QUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDcwCi0gICAgICAgIFt3ZWJXaW5kb3cg
c2V0QW5pbWF0aW9uQmVoYXZpb3I6YW5pbWF0aW9uQmVoYXZpb3JdOwotI2VuZGlmCi0KICAgICAg
ICAgW19mYWRlQW5pbWF0aW9uLmdldCgpIHN0b3BBbmltYXRpb25dOwogICAgICAgICBbX2ZhZGVB
bmltYXRpb24uZ2V0KCkgc2V0V2luZG93Om5pbF07CiAgICAgICAgIF9mYWRlQW5pbWF0aW9uID0g
bnVsbHB0cjsKICAgICAgICAgCiAgICAgICAgIFtfYmFja2dyb3VuZFdpbmRvdy5nZXQoKSBvcmRl
ck91dDpzZWxmXTsKICAgICAgICAgW19iYWNrZ3JvdW5kV2luZG93LmdldCgpIHNldEZyYW1lOk5T
WmVyb1JlY3QgZGlzcGxheTpZRVNdOworCisgICAgICAgIFtfd2ViVmlld1BsYWNlaG9sZGVyLmdl
dCgpIHNldEV4aXRXYXJuaW5nVmlzaWJsZTpZRVNdOwogICAgICAgICBOU0VuYWJsZVNjcmVlblVw
ZGF0ZXMoKTsKICAgICB9IGVsc2UKICAgICAgICAgW19zY2FsZUFuaW1hdGlvbi5nZXQoKSBzdG9w
QW5pbWF0aW9uXTsKQEAgLTMyOCw3ICszMjIsOSBAQCBzdGF0aWMgUmV0YWluUHRyPENHSW1hZ2VS
ZWY+IGNyZWF0ZUltYWdlV2l0aENvcGllZERhdGEoQ0dJbWFnZVJlZiBzb3VyY2VJbWFnZSkKICAg
ICAgICAgcmV0dXJuOwogICAgIF9pc0Z1bGxTY3JlZW4gPSBOTzsKIAotICAgIC8vIFNjcmVlbiB1
cGRhdGVzIHRvIGJlIHJlLWVuYWJsZWQgaW4gX3N0YXJ0RXhpdEZ1bGxTY3JlZW5BbmltYXRpb25X
aXRoRHVyYXRpb246CisgICAgW193ZWJWaWV3UGxhY2Vob2xkZXIuZ2V0KCkgc2V0RXhpdFdhcm5p
bmdWaXNpYmxlOk5PXTsKKworICAgIC8vIFNjcmVlbiB1cGRhdGVzIHRvIGJlIHJlLWVuYWJsZWQg
aW4gX3N0YXJ0RXhpdEZ1bGxTY3JlZW5BbmltYXRpb25XaXRoRHVyYXRpb246IG9yIGJlZ2FuRXhp
dEZ1bGxTY3JlZW5XaXRoSW5pdGlhbEZyYW1lOmZpbmFsRnJhbWU6CiAgICAgTlNEaXNhYmxlU2Ny
ZWVuVXBkYXRlcygpOwogICAgIFtbc2VsZiB3aW5kb3ddIHNldEF1dG9kaXNwbGF5Ok5PXTsKIApA
QCAtMzQ5LDMwICszNDUsMTkgQEAgc3RhdGljIFJldGFpblB0cjxDR0ltYWdlUmVmPiBjcmVhdGVJ
bWFnZVdpdGhDb3BpZWREYXRhKENHSW1hZ2VSZWYgc291cmNlSW1hZ2UpCiAgICAgaWYgKF9pc0Vu
dGVyaW5nRnVsbFNjcmVlbikKICAgICAgICAgW3NlbGYgZmluaXNoZWRFbnRlckZ1bGxTY3JlZW5B
bmltYXRpb246Tk9dOwogCi0gICAgW3NlbGYgX3VwZGF0ZU1lbnVBbmREb2NrRm9yRnVsbFNjcmVl
bl07Ci0gICAgCi0gICAgTlNXaW5kb3cqIHdlYldpbmRvdyA9IFtfd2ViVmlld1BsYWNlaG9sZGVy
LmdldCgpIHdpbmRvd107Ci0jaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAx
MDcwCi0gICAgLy8gSW4gTGlvbiwgTlNXaW5kb3cgd2lsbCBhbmltYXRlIGludG8gYW5kIG91dCBv
ZiBvcmRlck91dCBvcGVyYXRpb25zLiBTdXBwcmVzcyB0aGF0Ci0gICAgLy8gYmVoYXZpb3IgaGVy
ZSwgbWFraW5nIHN1cmUgdG8gcmVzZXQgdGhlIGFuaW1hdGlvbiBiZWhhdmlvciBhZnRlcndhcmQu
Ci0gICAgTlNXaW5kb3dBbmltYXRpb25CZWhhdmlvciBhbmltYXRpb25CZWhhdmlvciA9IFt3ZWJX
aW5kb3cgYW5pbWF0aW9uQmVoYXZpb3JdOwotICAgIFt3ZWJXaW5kb3cgc2V0QW5pbWF0aW9uQmVo
YXZpb3I6TlNXaW5kb3dBbmltYXRpb25CZWhhdmlvck5vbmVdOwotI2VuZGlmCi0gICAgLy8gSWYg
dGhlIHVzZXIgaGFzIG1vdmVkIHRoZSBmdWxsU2NyZWVuIHdpbmRvdyBpbnRvIGEgbmV3IHNwYWNl
LCB0ZW1wb3JhcmlseSBjaGFuZ2UKLSAgICAvLyB0aGUgY29sbGVjdGlvbkJlaGF2aW9yIG9mIHRo
ZSB3ZWJWaWV3J3Mgd2luZG93IHNvIHRoYXQgaXQgaXMgcHVsbGVkIGludG8gdGhlIGFjdGl2ZSBz
cGFjZToKLSAgICBpZiAoIShbd2ViV2luZG93IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Io
aXNPbkFjdGl2ZVNwYWNlKV0gPyBbd2ViV2luZG93IGlzT25BY3RpdmVTcGFjZV0gOiBZRVMpKSB7
Ci0gICAgICAgIE5TV2luZG93Q29sbGVjdGlvbkJlaGF2aW9yIGJlaGF2aW9yID0gW3dlYldpbmRv
dyBjb2xsZWN0aW9uQmVoYXZpb3JdOwotICAgICAgICBbd2ViV2luZG93IHNldENvbGxlY3Rpb25C
ZWhhdmlvcjpOU1dpbmRvd0NvbGxlY3Rpb25CZWhhdmlvckNhbkpvaW5BbGxTcGFjZXNdOwotICAg
ICAgICBbd2ViV2luZG93IG9yZGVyV2luZG93Ok5TV2luZG93QmVsb3cgcmVsYXRpdmVUbzpbW3Nl
bGYgd2luZG93XSB3aW5kb3dOdW1iZXJdXTsKLSAgICAgICAgW3dlYldpbmRvdyBzZXRDb2xsZWN0
aW9uQmVoYXZpb3I6YmVoYXZpb3JdOwotICAgIH0gZWxzZQotICAgICAgICBbd2ViV2luZG93IG9y
ZGVyV2luZG93Ok5TV2luZG93QmVsb3cgcmVsYXRpdmVUbzpbW3NlbGYgd2luZG93XSB3aW5kb3dO
dW1iZXJdXTsKLSAgICAKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEw
NzAKLSAgICBbd2ViV2luZG93IHNldEFuaW1hdGlvbkJlaGF2aW9yOmFuaW1hdGlvbkJlaGF2aW9y
XTsKLSNlbmRpZgorICAgIGlmICghW1tzZWxmIHdpbmRvd10gaXNPbkFjdGl2ZVNwYWNlXSkgewor
ICAgICAgICAvLyBJZiB0aGUgZnVsbCBzY3JlZW4gd2luZG93IGlzIG5vdCBpbiB0aGUgYWN0aXZl
IHNwYWNlLCB0aGUgTlNXaW5kb3cgZnVsbCBzY3JlZW4gYW5pbWF0aW9uIGRlbGVnYXRlIG1ldGhv
ZHMKKyAgICAgICAgLy8gd2lsbCBuZXZlciBiZSBjYWxsZWQuIFNvIGNhbGwgZmluaXNoZWRFeGl0
RnVsbFNjcmVlbkFuaW1hdGlvbiBleHBsaWNpdGx5LgorICAgICAgICBbc2VsZiBmaW5pc2hlZEV4
aXRGdWxsU2NyZWVuQW5pbWF0aW9uOllFU107CiAKLSAgICBbc2VsZiBfc3RhcnRFeGl0RnVsbFNj
cmVlbkFuaW1hdGlvbldpdGhEdXJhdGlvbjpkZWZhdWx0QW5pbWF0aW9uRHVyYXRpb25dOworICAg
ICAgICAvLyBCZWNhdXNlIHdlIGFyZSBicmVha2luZyB0aGUgbm9ybWFsIGFuaW1hdGlvbiBwYXR0
ZXJuLCByZS1lbmFibGUgc2NyZWVuIHVwZGF0ZXMKKyAgICAgICAgLy8gYXMgZXhpdEZ1bGxTY3Jl
ZW4gaGFzIGRpc2FibGVkIHRoZW0sIGJ1dCBfc3RhcnRFeGl0RnVsbFNjcmVlbkFuaW1hdGlvbldp
dGhEdXJhdGlvbjoKKyAgICAgICAgLy8gd2lsbCBuZXZlciBiZSBjYWxsZWQuCisgICAgICAgIE5T
RW5hYmxlU2NyZWVuVXBkYXRlcygpOworICAgIH0KKworICAgIEFTU0VSVChbW3NlbGYgd2luZG93
XSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGV4aXRGdWxsU2NyZWVuTW9kZTopXSk7Cisg
ICAgW1tzZWxmIHdpbmRvd10gZXhpdEZ1bGxTY3JlZW5Nb2RlOnNlbGZdOwogfQogCiBzdGF0aWMg
dm9pZCBjb21wbGV0ZUZpbmlzaEV4aXRGdWxsU2NyZWVuQW5pbWF0aW9uQWZ0ZXJSZXBhaW50KFdL
RXJyb3JSZWYsIHZvaWQqKTsKQEAgLTM4Myw4ICszNjgsNiBAQCBzdGF0aWMgdm9pZCBjb21wbGV0
ZUZpbmlzaEV4aXRGdWxsU2NyZWVuQW5pbWF0aW9uQWZ0ZXJSZXBhaW50KFdLRXJyb3JSZWYsIHZv
aWQqKQogICAgICAgICByZXR1cm47CiAgICAgX2lzRXhpdGluZ0Z1bGxTY3JlZW4gPSBOTzsKIAot
ICAgIFtzZWxmIF91cGRhdGVNZW51QW5kRG9ja0ZvckZ1bGxTY3JlZW5dOwotCiAgICAgLy8gU2Ny
ZWVuIHVwZGF0ZXMgdG8gYmUgcmUtZW5hYmxlZCBpbiBjb21wbGV0ZUZpbmlzaEV4aXRGdWxsU2Ny
ZWVuQW5pbWF0aW9uQWZ0ZXJSZXBhaW50LgogICAgIE5TRGlzYWJsZVNjcmVlblVwZGF0ZXMoKTsK
ICAgICBbW193ZWJWaWV3UGxhY2Vob2xkZXIuZ2V0KCkgd2luZG93XSBzZXRBdXRvZGlzcGxheTpO
T107CkBAIC00NTUsMzUgKzQzOCwzMSBAQCBzdGF0aWMgdm9pZCBjb21wbGV0ZUZpbmlzaEV4aXRG
dWxsU2NyZWVuQW5pbWF0aW9uQWZ0ZXJSZXBhaW50KFdLRXJyb3JSZWYsIHZvaWQqCiB9CiAKICNw
cmFnbWEgbWFyayAtCi0jcHJhZ21hIG1hcmsgSW50ZXJuYWwgSW50ZXJmYWNlCisjcHJhZ21hIG1h
cmsgQ3VzdG9tIE5TV2luZG93IEZ1bGwgU2NyZWVuIEFuaW1hdGlvbgogCi0tICh2b2lkKV91cGRh
dGVNZW51QW5kRG9ja0ZvckZ1bGxTY3JlZW4KKy0gKE5TQXJyYXkgKiljdXN0b21XaW5kb3dzVG9F
bnRlckZ1bGxTY3JlZW5Gb3JXaW5kb3c6KE5TV2luZG93ICopd2luZG93CiB7Ci0gICAgLy8gTlNB
cHBsaWNhdGlvblByZXNlbnRhdGlvbk9wdGlvbnMgaXMgYXZhaWxhYmxlIG9uID4gMTAuNiBvbmx5
OgotI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA2MAotICAgIE5TQXBw
bGljYXRpb25QcmVzZW50YXRpb25PcHRpb25zIG9wdGlvbnMgPSBOU0FwcGxpY2F0aW9uUHJlc2Vu
dGF0aW9uRGVmYXVsdDsKLSAgICBOU1NjcmVlbiogZnVsbFNjcmVlblNjcmVlbiA9IFtbc2VsZiB3
aW5kb3ddIHNjcmVlbl07Ci0gICAgCi0gICAgaWYgKF9pc0Z1bGxTY3JlZW4pIHsKLSAgICAgICAg
Ly8gQXV0by1oaWRlIHRoZSBtZW51IGJhciBpZiB0aGUgZnVsbFNjcmVlblNjcmVlbiBjb250YWlu
cyB0aGUgbWVudSBiYXI6Ci0gICAgICAgIC8vIE5PVEU6IGlmIHRoZSBmdWxsU2NyZWVuU2NyZWVu
IGNvbnRhaW5zIHRoZSBtZW51IGJhciBidXQgbm90IHRoZSBkb2NrLCB3ZSBtdXN0IHN0aWxsIAot
ICAgICAgICAvLyBhdXRvLWhpZGUgdGhlIGRvY2ssIG9yIGFuIGV4Y2VwdGlvbiB3aWxsIGJlIHRo
cm93bi4KLSAgICAgICAgaWYgKFtbTlNTY3JlZW4gc2NyZWVuc10gb2JqZWN0QXRJbmRleDowXSA9
PSBmdWxsU2NyZWVuU2NyZWVuKQotICAgICAgICAgICAgb3B0aW9ucyB8PSAoTlNBcHBsaWNhdGlv
blByZXNlbnRhdGlvbkF1dG9IaWRlTWVudUJhciB8IE5TQXBwbGljYXRpb25QcmVzZW50YXRpb25B
dXRvSGlkZURvY2spOwotICAgICAgICAvLyBDaGVjayBpZiB0aGUgY3VycmVudCBzY3JlZW4gY29u
dGFpbnMgdGhlIGRvY2sgYnkgY29tcGFyaW5nIHRoZSBzY3JlZW4ncyBmcmFtZSB0byBpdHMKLSAg
ICAgICAgLy8gdmlzaWJsZUZyYW1lOyBpZiBhIGRvY2sgaXMgcHJlc2VudCwgdGhlIHZpc2libGVG
cmFtZSB3aWxsIGRpZmZlci4gSWYgdGhlIGN1cnJlbnQgc2NyZWVuCi0gICAgICAgIC8vIGNvbnRh
aW5zIHRoZSBkb2NrLCBoaWRlIGl0LgotICAgICAgICBlbHNlIGlmICghTlNFcXVhbFJlY3RzKFtm
dWxsU2NyZWVuU2NyZWVuIGZyYW1lXSwgW2Z1bGxTY3JlZW5TY3JlZW4gdmlzaWJsZUZyYW1lXSkp
Ci0gICAgICAgICAgICBvcHRpb25zIHw9IE5TQXBwbGljYXRpb25QcmVzZW50YXRpb25BdXRvSGlk
ZURvY2s7Ci0gICAgfQotICAgIAotICAgIGlmIChbTlNBcHAgcmVzcG9uZHNUb1NlbGVjdG9yOkBz
ZWxlY3RvcihzZXRQcmVzZW50YXRpb25PcHRpb25zOildKQotICAgICAgICBbTlNBcHAgc2V0UHJl
c2VudGF0aW9uT3B0aW9uczpvcHRpb25zXTsKLSAgICBlbHNlCi0jZW5kaWYKLSAgICAgICAgU2V0
U3lzdGVtVUlNb2RlKF9pc0Z1bGxTY3JlZW4gPyBrVUlNb2RlQWxsSGlkZGVuIDoga1VJTW9kZU5v
cm1hbCwgMCk7CisgICAgcmV0dXJuIFtOU0FycmF5IGFycmF5V2l0aE9iamVjdHM6W3NlbGYgd2lu
ZG93XSwgX2JhY2tncm91bmRXaW5kb3cuZ2V0KCksIG5pbF07Cit9CisKKy0gKE5TQXJyYXkgKilj
dXN0b21XaW5kb3dzVG9FeGl0RnVsbFNjcmVlbkZvcldpbmRvdzooTlNXaW5kb3cgKil3aW5kb3cK
K3sKKyAgICByZXR1cm4gW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czpbc2VsZiB3aW5kb3ddLCBf
YmFja2dyb3VuZFdpbmRvdy5nZXQoKSwgbmlsXTsKK30KKworLSAodm9pZCl3aW5kb3c6KE5TV2lu
ZG93ICopd2luZG93IHN0YXJ0Q3VzdG9tQW5pbWF0aW9uVG9FbnRlckZ1bGxTY3JlZW5XaXRoRHVy
YXRpb246KE5TVGltZUludGVydmFsKWR1cmF0aW9uCit7CisgICAgW3NlbGYgX3N0YXJ0RW50ZXJG
dWxsU2NyZWVuQW5pbWF0aW9uV2l0aER1cmF0aW9uOmR1cmF0aW9uXTsKK30KKworLSAodm9pZCl3
aW5kb3c6KE5TV2luZG93ICopd2luZG93IHN0YXJ0Q3VzdG9tQW5pbWF0aW9uVG9FeGl0RnVsbFNj
cmVlbldpdGhEdXJhdGlvbjooTlNUaW1lSW50ZXJ2YWwpZHVyYXRpb24KK3sKKyAgICBbc2VsZiBf
c3RhcnRFeGl0RnVsbFNjcmVlbkFuaW1hdGlvbldpdGhEdXJhdGlvbjpkdXJhdGlvbl07CiB9CiAK
KyNwcmFnbWEgbWFyayAtCisjcHJhZ21hIG1hcmsgSW50ZXJuYWwgSW50ZXJmYWNlCisKIC0gKFdl
YlBhZ2VQcm94eSopX3BhZ2UKIHsKICAgICByZXR1cm4gdG9JbXBsKFtfd2ViVmlldyBwYWdlUmVm
XSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>170250</attachid>
            <date>2012-10-23 15:30:15 -0700</date>
            <delta_ts>2012-10-23 16:03:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100025-20121023152852.patch</filename>
            <type>text/plain</type>
            <size>42984</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyMjc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDE0MTkzZDk2MDcwZjZi
YTUwY2QyNjQyNDM5YjAwNTliY2Q4OGQxNy4uYTc5MzU1YTEwYTg0MzhjMDUxM2E0MmMxMGZhNTQy
YzNlNGQ5OWUwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDEyLTEwLTIyICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtXSzJdIFtNYWNdIFdlYktp
dCBGdWxsIFNjcmVlbiBBUEkgc2hvdWxkIHVzZSBOU1dpbmRvdyBmdWxsIHNjcmVlbiBBUEkuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDAwMjUKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBzaGFy
ZWQgaW1wbGVtZW50YXRpb24gb2YgYSB3YXJuaW5nIHZpZXcgZm9yIHVzZSBpbiBXZWJLaXQgYW5k
IFdlYktpdDIuCisKKyAgICAgICAgQWRkIGEgbmV3IHNoYXJlZCBjbGFzcyBXZWJDb3JlRnVsbFNj
cmVlbldhcm5pbmdWaWV3IHdoaWNoIHByZXNlbnRzIGEgc3R5bGVkIHdhcm5pbmcgbWVzc2FnZS4K
KyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2ViQ29yZUZ1bGxTY3JlZW5XYXJuaW5nVmlldy5oOiBB
ZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2ViQ29yZUZ1bGxTY3JlZW5XYXJuaW5nVmll
dy5tbTogQWRkZWQuCisgICAgICAgICgtW1dlYkNvcmVGdWxsU2NyZWVuV2FybmluZ1ZpZXcgaW5p
dFdpdGhUaXRsZTpdKTogQ3JlYXRlIHRoZSB2aWV3LgorCisgICAgICAgIEFkZCBhIG5ldyBzaGFy
ZWQgY2xhc3MgV2ViQ29yZUZ1bGxTY3JlZW5QbGFjZWhvbGRlclZpZXcsIHdoaWNoIHByZXNlbnRz
IHRoZSBjb250ZW50cyBvZiB0aGUgCisgICAgICAgIFdlYlZpZXcgcHJpb3IgdG8gZnVsbCBzY3Jl
ZW4gd2l0aCBhIG1lc3NhZ2UgaW5mb3JtaW5nIHRoZSB1c2VyIGhvdyB0byBleGl0IGZyb20gZnVs
bCBzY3JlZW4gbW9kZS4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2ViQ29yZUZ1bGxTY3JlZW5Q
bGFjZWhvbGRlclZpZXcubW06CisgICAgICAgICgtW1dlYkNvcmVGdWxsU2NyZWVuUGxhY2Vob2xk
ZXJWaWV3IGluaXRXaXRoRnJhbWU6XSk6IENyZWF0ZSB0aGUgd2FybmluZyB2aWV3IGFuZCBzZXQg
dXAgdGhlIHBsYWNlaG9sZGVyIGxheWVyLgorICAgICAgICAoLVtXZWJDb3JlRnVsbFNjcmVlblBs
YWNlaG9sZGVyVmlldyBzZXRDb250ZW50czpdKTogUGFzcyBhbG9uZyB0byBjb250ZW50IHZpZXcg
bGF5ZXIuCisgICAgICAgICgtW1dlYkNvcmVGdWxsU2NyZWVuUGxhY2Vob2xkZXJWaWV3IGNvbnRl
bnRzXSk6IERpdHRvLgorICAgICAgICAoLVtXZWJDb3JlRnVsbFNjcmVlblBsYWNlaG9sZGVyVmll
dyBzZXRFeGl0V2FybmluZ1Zpc2libGU6XSk6IFNob3cgb3IgaGlkZSB0aGUgZXhpdCB3YXJuaW5n
LgorICAgICAgICAoLVtXZWJDb3JlRnVsbFNjcmVlblBsYWNlaG9sZGVyVmlldyBtb3VzZURvd246
XSk6IENhbGwgdGhlIHRhcmdldCB3aXRoIGFjdGlvbi4KKworICAgICAgICAgQWRkIGEgbG9jYWxp
emVkIHN0cmluZyBlbnRyeSBmb3IgdGhlICJjbGljayB0byBleGl0IiB0ZXh0OgorICAgICAgICAg
KiBFbmdsaXNoLmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3M6CisgICAgICAgICogcGxhdGZvcm0v
TG9jYWxpemVkU3RyaW5ncy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjbGlja1RvRXhpdEZ1bGxT
Y3JlZW5UZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmg6CisKKyAg
ICAgICAgQWRkIHRoZSBuZXcgZmlsZXMgdG8gdGhlIHByb2plY3QgYW5kIGV4cG9ydHMgbGlzdDoK
KyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisKIDIwMTItMTAtMjMgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNl
ckBhcHBsZS5jb20+CiAKICAgICAgICAgQWxsb3cgdGVzdHMgdG8gcnVuIHdpdGggYSB0aWxlIGNh
Y2hlLCBhbmQgb3B0aW9uYWxseSBkdW1wIHRoZSB0aWxlIGNhY2hlIHZpYSBsYXllclRyZWVBc1Rl
eHQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCmluZGV4IDRjMjY1NzRkOTQzNTcxYzlhZjlmMjFmOTJlYjU5NDk5ZjczZjY3
N2UuLjBjODEyYTdjOTA3MmU0OTMyNWEzMWYwOTNkMTI4YzQxYWE4NzdjOGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwzMCBAQAorMjAxMi0xMC0yMiAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxl
LmNvbT4KKworICAgICAgICBbV0syXSBbTWFjXSBXZWJLaXQgRnVsbCBTY3JlZW4gQVBJIHNob3Vs
ZCB1c2UgTlNXaW5kb3cgZnVsbCBzY3JlZW4gQVBJLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwMDI1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIHRoZSBOU1dpbmRvdyBmdWxsIHNjcmVlbiBBUEkg
d2hlbiB0YWtpbmcgdGhlIFdlYlZpZXcgZnVsbCBzY3JlZW4uIFRvIGZhY2lsaXR5IHRoZSBjYXNl
IHdoZXJlIHRoZSBicm93c2VyIHdpbmRvdyBpcyBhbHJlYWR5CisgICAgICAgIGluIGZ1bGwgc2Ny
ZWVuIG1vZGUsIG5vIGxvbmdlciBoaWRlIHRoZSBicm93c2VyIHdpbmRvdyB3aGVuIGVudGVyaW5n
IGZ1bGwgc2NyZWVuLiBJbnN0ZWFkLCBwcm92aWRlIGEgcGxhY2Vob2xkZXIgdmlldyB3aXRoIAor
ICAgICAgICBpbnN0cnVjdGlvbnMgdG8gY2xpY2sgdGhlIHBsYWNlaG9sZGVyIHRvIGV4aXQgZnVs
bCBzY3JlZW4uCisKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dLRnVsbFNjcmVlbldpbmRvd0Nv
bnRyb2xsZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dLRnVsbFNjcmVlbldpbmRvd0Nv
bnRyb2xsZXIubW06CisgICAgICAgICgtW1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIgaW5p
dF0pOiBTZXQgc2VsZiBhcyB0aGUgd2luZG93J3MgZGVsZWdhdGU7IGVuYWJsZSB3aW5kb3cncyBm
dWxsIHNjcmVlbiBhY3Rpb24uCisgICAgICAgICgtW1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xs
ZXIgYXBwbGljYXRpb25EaWRDaGFuZ2VTY3JlZW5QYXJhbWV0ZXJzOl0pOiBSZW1vdmUgcmVmZXJl
bmNlIHRvIF91cGRhdGVXaW5kb3dBbmREb2NrRm9yRnVsbFNjcmVlbi4KKyAgICAgICAgKC1bV0tG
dWxsU2NyZWVuV2luZG93Q29udHJvbGxlciBlbnRlckZ1bGxTY3JlZW46XSk6ICBEaXR0by4gQ3Jl
YXRlIGEgV0tGdWxsU2NyZWVuUGxhY2Vob2xkZXJWaWV3IGluc3RlYWQgb2YgZ2VuZXJpYyBOU0lt
YWdlVmlldy4KKyAgICAgICAgKC1bV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlciBiZWdhbkVu
dGVyRnVsbFNjcmVlbldpdGhJbml0aWFsRnJhbWU6ZmluYWxGcmFtZTpdKTogRGl0dG8uIENhbGwg
TlNXaW5kb3cgZW50ZXJGdWxsU2NyZWVuOiBBUEkuCisgICAgICAgICgtW1dLRnVsbFNjcmVlbldp
bmRvd0NvbnRyb2xsZXIgZmluaXNoZWRFbnRlckZ1bGxTY3JlZW5BbmltYXRpb246XSk6IFNob3cg
dGhlIHdhcm5pbmcgdmlldy4KKyAgICAgICAgKC1bV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxl
ciBleGl0RnVsbFNjcmVlbl0pOiBIaWRlIHRoZSB3YXJuaW5nIHZpZXcuCisgICAgICAgICgtW1dL
RnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIgYmVnYW5FeGl0RnVsbFNjcmVlbldpdGhJbml0aWFs
RnJhbWU6ZmluYWxGcmFtZTpdKTogQWRkIHNwZWNpYWwgY2FzZSB3aGVyZSB3ZSBhcmUgZXhpdGlu
ZworICAgICAgICAgICAgZnJvbSBmdWxsIHNjcmVlbiBtb2RlIHdoZW4gdGhlIGZ1bGwgc2NyZWVu
IHdpbmRvdyBpcyBub3Qgb24gc2NyZWVuLgorICAgICAgICAoLVtXS0Z1bGxTY3JlZW5XaW5kb3dD
b250cm9sbGVyIGZpbmlzaGVkRXhpdEZ1bGxTY3JlZW5BbmltYXRpb246XSk6IFJlbW92ZSByZWZl
cmVuY2UgdG8gX3VwZGF0ZU1lbnVBbmREb2NrRm9yRnVsbFNjcmVlbi4KKyAgICAgICAgKC1bV0tG
dWxsU2NyZWVuV2luZG93Q29udHJvbGxlciBjdXN0b21XaW5kb3dzVG9FbnRlckZ1bGxTY3JlZW5G
b3JXaW5kb3c6XSk6IEFkZGVkLiBSZXR1cm4gdGhlIGJhY2tncm91bmQgd2luZG93IGFuZCB0aGUg
ZnVsbCBzY3JlZW4gd2luZG93LgorICAgICAgICAoLVtXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9s
bGVyIGN1c3RvbVdpbmRvd3NUb0V4aXRGdWxsU2NyZWVuRm9yV2luZG93Ol0pOiBEaXR0by4KKyAg
ICAgICAgKC1bV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlciB3aW5kb3c6c3RhcnRDdXN0b21B
bmltYXRpb25Ub0VudGVyRnVsbFNjcmVlbldpdGhEdXJhdGlvbjpdKTogQWRkZWQuIENhbGwgdGhy
b3VnaCB0byBfc3RhcnRFbnRlckZ1bGxTY3JlZW5BbmltYXRpb25XaXRoRHVyYXRpb246CisgICAg
ICAgICgtW1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIgd2luZG93OnN0YXJ0Q3VzdG9tQW5p
bWF0aW9uVG9FeGl0RnVsbFNjcmVlbldpdGhEdXJhdGlvbjpdKTogQWRkZWQuIENhbGwgdGhyb3Vn
aCB0byBfc3RhcnRFeGl0RnVsbFNjcmVlbkFuaW1hdGlvbldpdGhEdXJhdGlvbjoKKwogMjAxMi0x
MC0yMyAgTm8nYW0gUm9zZW50aGFsICA8bm9hbS5yb3NlbnRoYWxAbm9raWEuY29tPgogCiAgICAg
ICAgIENvb3JkaW5hdGVkIEdyYXBoaWNzOiBFbmFibGUgdGhyZWFkZWQvSVBDIGFuaW1hdGlvbnMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0VuZ2xpc2gubHByb2ovTG9jYWxpemFibGUuc3Ry
aW5ncyBiL1NvdXJjZS9XZWJDb3JlL0VuZ2xpc2gubHByb2ovTG9jYWxpemFibGUuc3RyaW5ncwpp
bmRleCA0YzQzMTUwYTcxOWNhNzY4ZDY3YTVkYzcyZTgyNTk0NDhhNGUyODUxLi44MDZlYTc0Yzgx
NzNlYTRjZDIzZTkyMWMwMmIzMzVlMGI4ODBmNmQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9FbmdsaXNoLmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3MKKysrIGIvU291cmNlL1dlYkNvcmUv
RW5nbGlzaC5scHJvai9Mb2NhbGl6YWJsZS5zdHJpbmdzCkBAIC04OTIsMyArODkyLDUgQEAKIC8q
IGFjY2Vzc2liaWxpdHkgcm9sZSBkZXNjcmlwdGlvbiBmb3IgdmlkZW8gZWxlbWVudCBjb250cm9s
bGVyICovCiAidmlkZW8gZWxlbWVudCBwbGF5YmFjayBjb250cm9scyBhbmQgc3RhdHVzIGRpc3Bs
YXkiID0gInZpZGVvIGVsZW1lbnQgcGxheWJhY2sgY29udHJvbHMgYW5kIHN0YXR1cyBkaXNwbGF5
IjsKIAorLyogTWVzc2FnZSB0byBkaXNwbGF5IGluIGJyb3dzZXIgd2luZG93IHdoZW4gaW4gd2Vi
a2l0IGZ1bGwgc2NyZWVuIG1vZGUuICovCisiQ2xpY2sgdG8gZXhpdCBmdWxsIHNjcmVlbiBtb2Rl
IiA9ICJDbGljayB0byBleGl0IGZ1bGwgc2NyZWVuIG1vZGUiOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpp
bmRleCAzNTE2M2U0NDkxZGJiOTkzMzZiNmQ5NmVkMjA4YmM0MzliZWJiY2JkLi5kOWU0NmU2YTkw
OGExM2RmYWQ3NmQ0NDg0YzFjNTA1MTEzZDA3OWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAt
MTU3Nyw2ICsxNTc3LDggQEAgX3drU2lnbmFsQ0ZSZWFkU3RyZWFtSGFzQnl0ZXMKIC5vYmpjX2Ns
YXNzX25hbWVfRE9NU3R5bGVTaGVldAogLm9iamNfY2xhc3NfbmFtZV9ET01TdHlsZVNoZWV0TGlz
dAogLm9iamNfY2xhc3NfbmFtZV9ET01UcmVlV2Fsa2VyCisub2JqY19jbGFzc19uYW1lX1dlYkNv
cmVGdWxsU2NyZWVuUGxhY2Vob2xkZXJWaWV3Cisub2JqY19jbGFzc19uYW1lX1dlYkNvcmVGdWxs
U2NyZWVuV2FybmluZ1ZpZXcKIC5vYmpjX2NsYXNzX25hbWVfV2ViQ29yZUZ1bGxTY3JlZW5XaW5k
b3cKIC5vYmpjX2NsYXNzX25hbWVfV2ViSFRNTENvbnZlcnRlcgogLm9iamNfY2xhc3NfbmFtZV9X
ZWJXaW5kb3dGYWRlQW5pbWF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNmMxNTg1NjZmYWNjNmIwY2M0N2M0ZDNiNTk0NzVi
NTczMTRmZGM5Yy4uMzVkMDI4ZDI4ODc1OTI1OWFmZDdhZDk4OTVlMGUzMzJhMzBlOTNmNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtNTg5Myw2ICs1ODkzLDEwIEBACiAJCUNEQjg1OUY3MTYwRDQ4QTQwMEU1QjA3RiAvKiBNZWRp
YUtleUV2ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENEQjg1OUY0MTYwRDQ4OTkwMEU1QjA3RiAvKiBNZWRpYUtleUV2ZW50LmNwcCAqLzsgfTsK
IAkJQ0RCODU5RkExNjBENDk0OTAwRTVCMDdGIC8qIEpTTWVkaWFLZXlFdmVudC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREI4NTlGODE2MEQ0OTNF
MDBFNUIwN0YgLyogSlNNZWRpYUtleUV2ZW50LmNwcCAqLzsgfTsKIAkJQ0RCODU5RkIxNjBENDk0
RjAwRTVCMDdGIC8qIEpTTWVkaWFLZXlFcnJvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREI4NTlGMDE2MEQ0MkREMDBFNUIwN0YgLyogSlNNZWRp
YUtleUVycm9yLmNwcCAqLzsgfTsKKwkJQ0RDNjlERDYxNjMyMDI2QzAwN0MzOERGIC8qIFdlYkNv
cmVGdWxsU2NyZWVuV2FybmluZ1ZpZXcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IENEQzY5REQ0MTYzMjAyNkMwMDdDMzhERiAvKiBXZWJDb3JlRnVsbFNj
cmVlbldhcm5pbmdWaWV3LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJQ0RDNjlERDcxNjMyMDI2QzAwN0MzOERGIC8qIFdlYkNvcmVGdWxsU2NyZWVu
V2FybmluZ1ZpZXcubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDREM2OURENTE2MzIwMjZDMDA3QzM4REYgLyogV2ViQ29yZUZ1bGxTY3JlZW5XYXJuaW5n
Vmlldy5tbSAqLzsgfTsKKwkJQ0RDNjlEREExNjM3MUZENDAwN0MzOERGIC8qIFdlYkNvcmVGdWxs
U2NyZWVuUGxhY2Vob2xkZXJWaWV3LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDREM2OUREODE2MzcxRkQzMDA3QzM4REYgLyogV2ViQ29yZUZ1bGxTY3Jl
ZW5QbGFjZWhvbGRlclZpZXcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQlDREM2OUREQjE2MzcxRkQ0MDA3QzM4REYgLyogV2ViQ29yZUZ1bGxTY3Jl
ZW5QbGFjZWhvbGRlclZpZXcubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDREM2OUREOTE2MzcxRkQzMDA3QzM4REYgLyogV2ViQ29yZUZ1bGxTY3JlZW5Q
bGFjZWhvbGRlclZpZXcubW0gKi87IH07CiAJCUNERDUyNUQ3MTQ1QjZERDAwMDhEMjA0RCAvKiBK
U0hUTUxNZWRpYUVsZW1lbnRDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQ0RGNjVDQ0MxNDVCNkFGRTAwQzRDN0FBIC8qIEpTSFRNTE1lZGlh
RWxlbWVudEN1c3RvbS5jcHAgKi87IH07CiAJCUNERUE3NjMwMTQ2MDhBNTMwMDhCMzFGMSAvKiBQ
bGF0Zm9ybUNsb2NrQ0EuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0RFQTc2MkUxNDYwODRERTAwOEIzMUYxIC8qIFBsYXRmb3JtQ2xvY2tDQS5jcHAg
Ki87IH07CiAJCUNERUE3NjM0MTQ2MEI1NkYwMDhCMzFGMSAvKiBDbG9ja0dlbmVyaWMuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFQTc2MzIxNDYw
QUUyOTAwOEIzMUYxIC8qIENsb2NrR2VuZXJpYy5jcHAgKi87IH07CkBAIC04NjkxLDYgKzg2OTUs
OCBAQAogCQk1MDNEMENBODE0QjVCMDg3MDBGMzJGNTcgLyogQ3VzdG9tRmlsdGVyUHJvZ3JhbS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBDdXN0b21GaWx0ZXJQcm9ncmFtLmg7
IHBhdGggPSBmaWx0ZXJzL0N1c3RvbUZpbHRlclByb2dyYW0uaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTAzRDBDQTkxNEI1QjA4NzAwRjMyRjU3IC8qIEN1c3RvbUZpbHRlclByb2dy
YW1DbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQ3VzdG9tRmlsdGVy
UHJvZ3JhbUNsaWVudC5oOyBwYXRoID0gZmlsdGVycy9DdXN0b21GaWx0ZXJQcm9ncmFtQ2xpZW50
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUwM0QwQ0FEMTRCNUIwQkEwMEYzMkY1
NyAvKiBTdHlsZUN1c3RvbUZpbHRlclByb2dyYW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtLmg7IHBhdGggPSBzdHlsZS9TdHlsZUN1
c3RvbUZpbHRlclByb2dyYW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTA4MUUz
REYzQ0ZDODBDMTZFRjhCNDhCIC8qIENhY2hlZFJlc291cmNlUmVxdWVzdC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTA4MUUzRTEzRDAyODBDMTZFRjhCNDhCIC8q
IENhY2hlZFJlc291cmNlUmVxdWVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTUwOENDQTREMTNDRjEwNkIwMDMxNTFGMyAvKiBSZW5kZXJGbG93VGhyZWFkLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlckZsb3dUaHJlYWQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNTA4Q0NBNEUxM0NGMTA2QjAwMzE1MUYzIC8qIFJlbmRlckZsb3dU
aHJlYWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyRmxv
d1RocmVhZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUwOTg3QzI0MTU3RDY3
NkQwMEJEQTgzNSAvKiBDdXN0b21GaWx0ZXJHbG9iYWxDb250ZXh0LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEN1c3RvbUZpbHRlckdsb2JhbENvbnRleHQuY3BwOyBw
YXRoID0gZmlsdGVycy9DdXN0b21GaWx0ZXJHbG9iYWxDb250ZXh0LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTEyOTY1LDggKzEyOTcxLDYgQEAKIAkJQkNCMTZDMEYwOTc5QzNC
RDAwNDY3NzQxIC8qIENhY2hlZFhTTFN0eWxlU2hlZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IENhY2hlZFhTTFN0eWxlU2hlZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQkNCMTZDMTAwOTc5QzNCRDAwNDY3NzQxIC8qIENhY2hlZFJlc291cmNlTG9hZGVy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYWNoZWRSZXNvdXJj
ZUxvYWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDQjE2QzExMDk3OUMz
QkQwMDQ2Nzc0MSAvKiBDYWNoZWRSZXNvdXJjZUxvYWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJNTA4MUUzREYzQ0ZDODBDMTZFRjhCNDhCIC8qIENhY2hlZFJlc291cmNlUmVx
dWVzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2FjaGVkUmVz
b3VyY2VSZXF1ZXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTA4MUUzRTEz
RDAyODBDMTZFRjhCNDhCIC8qIENhY2hlZFJlc291cmNlUmVxdWVzdC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUJDQjc3MzVFMEMxNzg1M0QwMDEzMkJBNCAvKiBKU05vZGVGaWx0
ZXJDb25kaXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
Tm9kZUZpbHRlckNvbmRpdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJD
Qjc3MzVGMEMxNzg1M0QwMDEzMkJBNCAvKiBKU05vZGVGaWx0ZXJDb25kaXRpb24uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTm9kZUZpbHRlckNvbmRpdGlvbi5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0I3NzM2MDBDMTc4NTNEMDAxMzJCQTQgLyogSlNO
b2RlRmlsdGVyQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBKU05vZGVGaWx0ZXJDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MTMyNjYsNiArMTMyNzAsMTAgQEAKIAkJQ0RCODU5RjgxNjBENDkzRTAwRTVCMDdGIC8qIEpTTWVk
aWFLZXlFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU01l
ZGlhS2V5RXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREI4NTlGOTE2
MEQ0OTNFMDBFNUIwN0YgLyogSlNNZWRpYUtleUV2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEpTTWVkaWFLZXlFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlDREJEOTNCQTEzMzNCRDRCMDAyNTcwRTMgLyogZnVsbHNjcmVlblF1aWNrVGltZS5jc3Mg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0LmNzczsgcGF0aCA9IGZ1bGxzY3JlZW5RdWlja1RpbWUuY3NzOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREM2OURENDE2MzIwMjZDMDA3QzM4REYgLyogV2Vi
Q29yZUZ1bGxTY3JlZW5XYXJuaW5nVmlldy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXZWJDb3JlRnVsbFNjcmVlbldhcm5pbmdWaWV3Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUNEQzY5REQ1MTYzMjAyNkMwMDdDMzhERiAvKiBXZWJDb3JlRnVsbFNjcmVlbldh
cm5pbmdWaWV3Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2Vi
Q29yZUZ1bGxTY3JlZW5XYXJuaW5nVmlldy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQ0RDNjlERDgxNjM3MUZEMzAwN0MzOERGIC8qIFdlYkNvcmVGdWxsU2NyZWVuUGxhY2Vob2xk
ZXJWaWV3LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkNvcmVGdWxsU2Ny
ZWVuUGxhY2Vob2xkZXJWaWV3Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQzY5
REQ5MTYzNzFGRDMwMDdDMzhERiAvKiBXZWJDb3JlRnVsbFNjcmVlblBsYWNlaG9sZGVyVmlldy5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkNvcmVGdWxsU2Ny
ZWVuUGxhY2Vob2xkZXJWaWV3Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRENF
NUNEMDE0NjMzQkM5MDBENDdDQ0EgLyogRXZlbnRUYXJnZXRGYWN0b3J5LmluICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IEV2ZW50VGFyZ2V0RmFjdG9yeS5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQ0RFQTc2MkMxNDYwODIyNDAwOEIzMUYxIC8qIENsb2NrLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENsb2NrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUNERUE3NjJFMTQ2MDg0REUwMDhCMzFGMSAvKiBQbGF0Zm9ybUNsb2NrQ0EuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGxhdGZvcm1DbG9ja0NBLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1NzYwLDYgKzE1NzY4LDEwIEBACiAJCQkJQkNF
NjU5RTUwRUE5MkZCMjAwN0U0NTMzIC8qIFRoZW1lTWFjLmggKi8sCiAJCQkJQkNFNjU5RTgwRUE5
MkZGQTAwN0U0NTMzIC8qIFRoZW1lTWFjLm1tICovLAogCQkJCTUxREY2RDdGMEI5MkExOEUwMEMy
REM4NSAvKiBUaHJlYWRDaGVjay5tbSAqLywKKwkJCQlDREM2OUREODE2MzcxRkQzMDA3QzM4REYg
LyogV2ViQ29yZUZ1bGxTY3JlZW5QbGFjZWhvbGRlclZpZXcuaCAqLywKKwkJCQlDREM2OUREOTE2
MzcxRkQzMDA3QzM4REYgLyogV2ViQ29yZUZ1bGxTY3JlZW5QbGFjZWhvbGRlclZpZXcubW0gKi8s
CisJCQkJQ0RDNjlERDQxNjMyMDI2QzAwN0MzOERGIC8qIFdlYkNvcmVGdWxsU2NyZWVuV2Fybmlu
Z1ZpZXcuaCAqLywKKwkJCQlDREM2OURENTE2MzIwMjZDMDA3QzM4REYgLyogV2ViQ29yZUZ1bGxT
Y3JlZW5XYXJuaW5nVmlldy5tbSAqLywKIAkJCQlDRDEyN0RFQTE0RjMwOTc5MDBFODQ3NzkgLyog
V2ViQ29yZUZ1bGxTY3JlZW5XaW5kb3cuaCAqLywKIAkJCQlDRDEyN0RFQjE0RjMwOTc5MDBFODQ3
NzkgLyogV2ViQ29yZUZ1bGxTY3JlZW5XaW5kb3cubW0gKi8sCiAJCQkJMzcxOTQxOTUxNTY2QjM3
MjAwQTI3NkQ4IC8qIFdlYkNvcmVOU0NlbGxFeHRyYXMuaCAqLywKQEAgLTI1NDg4LDYgKzI1NTAw
LDcgQEAKIAkJCQlGRDU4MUZCNTE1MjBGOTNCMDAzQTdBNzUgLyogV2F2ZVRhYmxlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkyOUE4MTI0OTBGQkI5Q0E5MDA1MTAyOTMgLyogV2ViQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRjE5OUE4MDgyNDVFNTkwMDFF
OUFCQyAvKiBXZWJDb3JlRnJhbWVWaWV3LmggaW4gSGVhZGVycyAqLywKKwkJCQlDREM2OURENjE2
MzIwMjZDMDA3QzM4REYgLyogV2ViQ29yZUZ1bGxTY3JlZW5XYXJuaW5nVmlldy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQ0QxMjdERUUxNEYzMDk4NDAwRTg0Nzc5IC8qIFdlYkNvcmVGdWxsU2NyZWVu
V2luZG93LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzUzRDkxMTExNDMxMENDMDAwRDgxN0UgLyog
V2ViQ29yZUpTQ2xpZW50RGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNGMTk5QkIwODI0NUU1
OTAwMUU5QUJDIC8qIFdlYkNvcmVLZXlib2FyZFVJTW9kZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0y
NTY0OSw2ICsyNTY2Miw3IEBACiAJCQkJN0U1RDdBNzcxNjFEM0Y4RjAwODk2QzM0IC8qIE9FU0Vs
ZW1lbnRJbmRleFVpbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTdFNDZGNkZCMTYyN0EyQ0EwMDA2
MjIyMyAvKiBKU09FU0VsZW1lbnRJbmRleFVpbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0NzEy
N0NCMTYzNDM4QUUwMEVENkY1QSAvKiBTdHlsZUludmFsaWRhdGlvbkFuYWx5c2lzLmggaW4gSGVh
ZGVycyAqLywKKwkJCQlDREM2OUREQTE2MzcxRkQ0MDA3QzM4REYgLyogV2ViQ29yZUZ1bGxTY3Jl
ZW5QbGFjZWhvbGRlclZpZXcuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JE
ZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjg2MTUsNiArMjg2MjksNyBA
QAogCQkJCUZEN0YyOTk2MTNENEMwQ0IwMEFEOTUzNSAvKiBXYXZlU2hhcGVyUHJvY2Vzc29yLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUZENTgxRkI0MTUyMEY5M0IwMDNBN0E3NSAvKiBXYXZlVGFi
bGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMjlBODEyNEEwRkJCOUNBOTAwNTEwMjkzIC8qIFdl
YkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJQ0RDNjlE
RDcxNjMyMDI2QzAwN0MzOERGIC8qIFdlYkNvcmVGdWxsU2NyZWVuV2FybmluZ1ZpZXcubW0gaW4g
U291cmNlcyAqLywKIAkJCQlDRDEyN0RFRDE0RjMwOTdEMDBFODQ3NzkgLyogV2ViQ29yZUZ1bGxT
Y3JlZW5XaW5kb3cubW0gaW4gU291cmNlcyAqLywKIAkJCQlGM0JGQzlEMzE1QzE3N0VDMDA0MjQ0
RTUgLyogV2ViQ29yZU1lbW9yeUluc3RydW1lbnRhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkzNzE5NDE5NjE1NjZCMzcyMDBBMjc2RDggLyogV2ViQ29yZU5TQ2VsbEV4dHJhcy5tIGluIFNv
dXJjZXMgKi8sCkBAIC0yODc2MCw2ICsyODc3NSw3IEBACiAJCQkJN0U1RDdBNzYxNjFEM0Y4RjAw
ODk2QzM0IC8qIE9FU0VsZW1lbnRJbmRleFVpbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0U0
NkY2RkExNjI3QTJDQTAwMDYyMjIzIC8qIEpTT0VTRWxlbWVudEluZGV4VWludC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlFNDcxMjdDQTE2MzQzOEExMDBFRDZGNUEgLyogU3R5bGVJbnZhbGlkYXRp
b25BbmFseXNpcy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDREM2OUREQjE2MzcxRkQ0MDA3QzM4
REYgLyogV2ViQ29yZUZ1bGxTY3JlZW5QbGFjZWhvbGRlclZpZXcubW0gaW4gU291cmNlcyAqLywK
IAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5jcHAKaW5kZXggYWJm
MWJjYTVlODU0MTBiYTg3ZDVjYWI4MjUwMGQ5NjlmMTA5MjZhNy4uNjM4YzA1NWEyNjY5ZWQwYTFm
Y2NkZWQ1MTBmNjY1ZGFkNzE2ODhlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vTG9jYWxpemVkU3RyaW5ncy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9j
YWxpemVkU3RyaW5ncy5jcHAKQEAgLTk4NSw0ICs5ODUsOSBAQCBTdHJpbmcgdmFsaWRhdGlvbk1l
c3NhZ2VTdGVwTWlzbWF0Y2hUZXh0KGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpCiAgICAg
cmV0dXJuIFdFQl9VSV9TVFJJTkcoInN0ZXAgbWlzbWF0Y2giLCAiVmFsaWRhdGlvbiBtZXNzYWdl
IGZvciBpbnB1dCBmb3JtIGNvbnRyb2xzIHdpdGggdmFsdWUgbm90IHJlc3BlY3RpbmcgdGhlIHN0
ZXAgYXR0cmlidXRlIik7CiB9CiAKK1N0cmluZyBjbGlja1RvRXhpdEZ1bGxTY3JlZW5UZXh0KCkK
K3sKKyAgICByZXR1cm4gV0VCX1VJX1NUUklORygiQ2xpY2sgdG8gZXhpdCBmdWxsIHNjcmVlbiBt
b2RlIiwgIk1lc3NhZ2UgdG8gZGlzcGxheSBpbiBicm93c2VyIHdpbmRvdyB3aGVuIGluIHdlYmtp
dCBmdWxsIHNjcmVlbiBtb2RlLiIpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmgKaW5kZXggOGM1NmZlMWQ1Y2Zj
MjQ3OTk2YzkwODI2NGMzZjk3MTI0MDEzNTQ1Yy4uZTNmMzMwYTQ1ODgyYTJhZWVkNDI1ZTA0NjFm
MjI3MmE3MTYyZThkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9jYWxp
emVkU3RyaW5ncy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvY2FsaXplZFN0cmlu
Z3MuaApAQCAtMjU3LDYgKzI1Nyw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBTdHJpbmcg
dW5hY2NlcHRhYmxlVExTQ2VydGlmaWNhdGUoKTsKICNlbmRpZgogCisgICAgU3RyaW5nIGNsaWNr
VG9FeGl0RnVsbFNjcmVlblRleHQoKTsKKwogI2lmICFQTEFURk9STShDSFJPTUlVTSkKICNkZWZp
bmUgV0VCX1VJX1NUUklORyhzdHJpbmcsIGRlc2NyaXB0aW9uKSBXZWJDb3JlOjpsb2NhbGl6ZWRT
dHJpbmcoc3RyaW5nKQogI2RlZmluZSBXRUJfVUlfU1RSSU5HX0tFWShzdHJpbmcsIGtleSwgZGVz
Y3JpcHRpb24pIFdlYkNvcmU6OmxvY2FsaXplZFN0cmluZyhrZXkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZUZ1bGxTY3JlZW5QbGFjZWhvbGRlclZpZXcu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlRnVsbFNjcmVlblBsYWNlaG9s
ZGVyVmlldy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdiMjQzYjBhMmYyNGMyMDU3MzdhYTM5NzhkMWE4YzZhZTRk
YzQ0YzMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2Vi
Q29yZUZ1bGxTY3JlZW5QbGFjZWhvbGRlclZpZXcuaApAQCAtMCwwICsxLDQyIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBXZWJDb3JlRnVsbFNjcmVlblBsYWNlaG9sZGVyVmlld19oCisjZGVmaW5l
IFdlYkNvcmVGdWxsU2NyZWVuUGxhY2Vob2xkZXJWaWV3X2gKKworI2ltcG9ydCA8d3RmL1JldGFp
blB0ci5oPgorCitAaW50ZXJmYWNlIFdlYkNvcmVGdWxsU2NyZWVuUGxhY2Vob2xkZXJWaWV3IDog
TlNWaWV3IHsKKyAgICBSZXRhaW5QdHI8TlNWaWV3PiBfZXhpdFdhcm5pbmc7CisgICAgTlNPYmpl
Y3QqIF90YXJnZXQ7CisgICAgU0VMIF9hY3Rpb247Cit9CitAcHJvcGVydHkocmV0YWluKSBpZCBj
b250ZW50czsKK0Bwcm9wZXJ0eShhc3NpZ24pIE5TT2JqZWN0KiB0YXJnZXQ7CitAcHJvcGVydHko
YXNzaWduKSBTRUwgYWN0aW9uOworLSAodm9pZClzZXRFeGl0V2FybmluZ1Zpc2libGU6KEJPT0wp
dmlzaWJsZTsKK0BlbmQKKworI2VuZGlmIC8vIFdlYkNvcmVGdWxsU2NyZWVuUGxhY2Vob2xkZXJW
aWV3X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlRnVs
bFNjcmVlblBsYWNlaG9sZGVyVmlldy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9X
ZWJDb3JlRnVsbFNjcmVlblBsYWNlaG9sZGVyVmlldy5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42OTIxMDI0OTVk
MmFiZjFlZjdkZjUxMmU1ZDQyMTA3MmQzYzA0ZTc3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVGdWxsU2NyZWVuUGxhY2Vob2xkZXJWaWV3Lm1t
CkBAIC0wLDAgKzEsOTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiV2ViQ29yZUZ1bGxTY3JlZW5QbGFjZWhvbGRlclZpZXcuaCIKKworI2luY2x1ZGUgIkxv
Y2FsaXplZFN0cmluZ3MuaCIKKyNpbmNsdWRlICJXZWJDb3JlRnVsbFNjcmVlbldhcm5pbmdWaWV3
LmgiCisjaW5jbHVkZSA8UXVhcnR6Q29yZS9Db3JlSW1hZ2UuaD4KKyNpbmNsdWRlIDx3dGYvVW51
c2VkUGFyYW0uaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKwordXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CisKK0BpbXBsZW1lbnRhdGlvbiBXZWJDb3JlRnVsbFNjcmVlblBsYWNl
aG9sZGVyVmlldworLSAoaWQpaW5pdFdpdGhGcmFtZTooTlNSZWN0KWZyYW1lUmVjdAoreworICAg
IHNlbGYgPSBbc3VwZXIgaW5pdFdpdGhGcmFtZTpmcmFtZVJlY3RdOworICAgIGlmICghc2VsZikK
KyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIFtzZWxmIHNldExheWVyOltDQUxheWVyIGxheWVy
XV07CisgICAgW3NlbGYgc2V0TGF5ZXJDb250ZW50c1JlZHJhd1BvbGljeTpOU1ZpZXdMYXllckNv
bnRlbnRzUmVkcmF3TmV2ZXJdOworICAgIFtzZWxmIHNldFdhbnRzTGF5ZXI6WUVTXTsKKworICAg
IF9leGl0V2FybmluZyA9IGFkb3B0TlMoW1tXZWJDb3JlRnVsbFNjcmVlbldhcm5pbmdWaWV3IGFs
bG9jXSBpbml0V2l0aFRpdGxlOmNsaWNrVG9FeGl0RnVsbFNjcmVlblRleHQoKV0pOworICAgIE5T
UmVjdCB3YXJuaW5nRnJhbWUgPSBbX2V4aXRXYXJuaW5nLmdldCgpIGZyYW1lXTsKKyAgICB3YXJu
aW5nRnJhbWUub3JpZ2luID0gTlNNYWtlUG9pbnQoCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIChmcmFtZVJlY3Quc2l6ZS53aWR0aCAtIHdhcm5pbmdGcmFtZS5zaXplLndp
ZHRoKSAvIDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmcmFtZVJl
Y3Quc2l6ZS5oZWlnaHQgLSB3YXJuaW5nRnJhbWUuc2l6ZS5oZWlnaHQpIC8gMik7CisgICAgW19l
eGl0V2FybmluZy5nZXQoKSBzZXRGcmFtZTp3YXJuaW5nRnJhbWVdOworICAgIFtfZXhpdFdhcm5p
bmcuZ2V0KCkgc2V0SGlkZGVuOllFU107CisgICAgW3NlbGYgYWRkU3VidmlldzpfZXhpdFdhcm5p
bmcuZ2V0KCldOworCisgICAgcmV0dXJuIHNlbGY7Cit9CisKK0BzeW50aGVzaXplIHRhcmdldCA9
IF90YXJnZXQ7CitAc3ludGhlc2l6ZSBhY3Rpb24gPSBfYWN0aW9uOworCitAZHluYW1pYyBjb250
ZW50czsKKy0gKHZvaWQpc2V0Q29udGVudHM6KGlkKWNvbnRlbnRzCit7CisgICAgW1tzZWxmIGxh
eWVyXSBzZXRDb250ZW50czpjb250ZW50c107Cit9CisKKy0gKGlkKWNvbnRlbnRzCit7CisgICAg
cmV0dXJuIFtbc2VsZiBsYXllcl0gY29udGVudHNdOworfQorCistICh2b2lkKXNldEV4aXRXYXJu
aW5nVmlzaWJsZTooQk9PTCl2aXNpYmxlCit7CisgICAgW19leGl0V2FybmluZy5nZXQoKSBzZXRI
aWRkZW46IXZpc2libGVdOworICAgIGlmICh2aXNpYmxlKSB7CisgICAgICAgIENJRmlsdGVyKiBm
aWx0ZXIgPSBbQ0lGaWx0ZXIgZmlsdGVyV2l0aE5hbWU6QCJDSUZhbHNlQ29sb3IiIGtleXNBbmRW
YWx1ZXM6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQCJpbnB1dENvbG9yMCIsIFtDSUNv
bG9yIGNvbG9yV2l0aFJlZDowIGdyZWVuOjAgYmx1ZTowXSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBAImlucHV0Q29sb3IxIiwgW0NJQ29sb3IgY29sb3JXaXRoUmVkOi45IGdyZWVuOi45
IGJsdWU6LjldLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pbF07CisgICAgICAgIFtb
c2VsZiBsYXllcl0gc2V0Q29tcG9zaXRpbmdGaWx0ZXI6ZmlsdGVyXTsKKyAgICB9IGVsc2UKKyAg
ICAgICAgW1tzZWxmIGxheWVyXSBzZXRDb21wb3NpdGluZ0ZpbHRlcjpuaWxdOworfQorCistICh2
b2lkKW1vdXNlRG93bjooTlNFdmVudCAqKXRoZUV2ZW50Cit7CisgICAgVU5VU0VEX1BBUkFNKHRo
ZUV2ZW50KTsKKworICAgIGlmICghX3RhcmdldCB8fCAhX2FjdGlvbikKKyAgICAgICAgcmV0dXJu
OworICAgIFtfdGFyZ2V0IHBlcmZvcm1TZWxlY3RvcjpfYWN0aW9uXTsKK30KKworQGVuZApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVGdWxsU2NyZWVuV2Fy
bmluZ1ZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlRnVsbFNjcmVl
bldhcm5pbmdWaWV3LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjZlYTlhZDc4NGVhZTJkZTA5NWQxZTMwZWRkN2Mw
YzU0ZmE2Y2NjZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9XZWJDb3JlRnVsbFNjcmVlbldhcm5pbmdWaWV3LmgKQEAgLTAsMCArMSw0MSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgV2ViQ29yZUZ1bGxTY3JlZW5XYXJuaW5nVmlld19oCisjZGVmaW5lIFdl
YkNvcmVGdWxsU2NyZWVuV2FybmluZ1ZpZXdfaAorCisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJ
KQorCisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCitAaW50ZXJmYWNlICBXZWJDb3JlRnVs
bFNjcmVlbldhcm5pbmdWaWV3IDogTlNCb3ggeworICAgIFJldGFpblB0cjxOU1RleHRGaWVsZD4g
X3RleHRGaWVsZDsKK30KKy0gKGlkKWluaXRXaXRoVGl0bGU6KE5TU3RyaW5nKil0aXRsZTsKK0Bl
bmQKKworI2VuZGlmCisKKyNlbmRpZiAvLyBXZWJDb3JlRnVsbFNjcmVlbldhcm5pbmdWaWV3X2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlRnVsbFNjcmVl
bldhcm5pbmdWaWV3Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVGdWxs
U2NyZWVuV2FybmluZ1ZpZXcubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2VkOThjMTg5MWU2NDVjMDVmYjQxZjUy
MWNlOGE2OTZjYWQ2ZGNkMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9XZWJDb3JlRnVsbFNjcmVlbldhcm5pbmdWaWV3Lm1tCkBAIC0wLDAgKzEsMTA3IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkNvcmVGdWxs
U2NyZWVuV2FybmluZ1ZpZXcuaCIKKyNpbmNsdWRlICJMb2NhbGl6ZWRTdHJpbmdzLmgiCisjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK3N0YXRpYyBjb25zdCBDR0Zsb2F0IFdhcm5p
bmdWaWV3VGV4dFdoaXRlID0gMC45Oworc3RhdGljIGNvbnN0IENHRmxvYXQgV2FybmluZ1ZpZXdU
ZXh0QWxwaGEgPSAxOworc3RhdGljIGNvbnN0IENHRmxvYXQgV2FybmluZ1ZpZXdUZXh0U2l6ZSA9
IDQ4Oworc3RhdGljIGNvbnN0IENHRmxvYXQgV2FybmluZ1ZpZXdQYWRkaW5nID0gMjA7CitzdGF0
aWMgY29uc3QgQ0dGbG9hdCBXYXJuaW5nVmlld0Nvcm5lclJhZGl1cyA9IDEwOworc3RhdGljIGNv
bnN0IENHRmxvYXQgV2FybmluZ1ZpZXdCb3JkZXJXaGl0ZSA9IDAuOTsKK3N0YXRpYyBjb25zdCBD
R0Zsb2F0IFdhcm5pbmdWaWV3Qm9yZGVyQWxwaGEgPSAwLjI7CitzdGF0aWMgY29uc3QgQ0dGbG9h
dCBXYXJuaW5nVmlld0JhY2tncm91bmRXaGl0ZSA9IDAuMTsKK3N0YXRpYyBjb25zdCBDR0Zsb2F0
IFdhcm5pbmdWaWV3QmFja2dyb3VuZEFscGhhID0gMC45Oworc3RhdGljIGNvbnN0IENHRmxvYXQg
V2FybmluZ1ZpZXdTaGFkb3dXaGl0ZSA9IDAuMTsKK3N0YXRpYyBjb25zdCBDR0Zsb2F0IFdhcm5p
bmdWaWV3U2hhZG93QWxwaGEgPSAxOworc3RhdGljIGNvbnN0IGZsb2F0IFdhcm5pbmdWaWV3U2hh
ZG93T3BhY2l0eSA9IDAuMjU7CitzdGF0aWMgY29uc3QgQ0dTaXplIFdhcm5pbmdWaWV3U2hhZG93
T2Zmc2V0ID0gezAsIC0yfTsKK3N0YXRpYyBjb25zdCBDR0Zsb2F0IFdhcm5pbmdWaWV3U2hhZG93
UmFkaXVzID0gNTsKK3N0YXRpYyBjb25zdCBOU1RpbWVJbnRlcnZhbCBXYXJuaW5nVmlld0hpZGVE
ZWxheSA9IDMuMDsKK3N0YXRpYyBjb25zdCBOU1RpbWVJbnRlcnZhbCBXYXJuaW5nVmlld0ZhZGVE
dXJhdGlvbiA9IDAuNTsKKworQGltcGxlbWVudGF0aW9uIFdlYkNvcmVGdWxsU2NyZWVuV2Fybmlu
Z1ZpZXcKKworLSAoaWQpaW5pdFdpdGhUaXRsZTooTlNTdHJpbmcqKXRpdGxlCit7CisgICAgc2Vs
ZiA9IFtzdXBlciBpbml0V2l0aEZyYW1lOk5TWmVyb1JlY3RdOworICAgIGlmICghc2VsZikKKyAg
ICAgICAgcmV0dXJuIG5pbDsKKworICAgIFtzZWxmIHNldEF1dG9yZXNpemluZ01hc2s6KE5TVmll
d01pblhNYXJnaW4gfCBOU1ZpZXdNYXhYTWFyZ2luIHwgTlNWaWV3TWluWU1hcmdpbiB8IE5TVmll
d01heFlNYXJnaW4pXTsKKyAgICBbc2VsZiBzZXRCb3hUeXBlOk5TQm94Q3VzdG9tXTsKKyAgICBb
c2VsZiBzZXRUaXRsZVBvc2l0aW9uOk5TTm9UaXRsZV07CisKKyAgICBfdGV4dEZpZWxkID0gYWRv
cHROUyhbW05TVGV4dEZpZWxkIGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TWmVyb1JlY3RdKTsKKyAg
ICBbX3RleHRGaWVsZC5nZXQoKSBzZXRFZGl0YWJsZTpOT107CisgICAgW190ZXh0RmllbGQuZ2V0
KCkgc2V0U2VsZWN0YWJsZTpOT107CisgICAgW190ZXh0RmllbGQuZ2V0KCkgc2V0Qm9yZGVyZWQ6
Tk9dOworICAgIFtfdGV4dEZpZWxkLmdldCgpIHNldERyYXdzQmFja2dyb3VuZDpOT107CisKKyAg
ICBSZXRhaW5QdHI8TlNGb250PiB0ZXh0Rm9udCA9IFtOU0ZvbnQgYm9sZFN5c3RlbUZvbnRPZlNp
emU6V2FybmluZ1ZpZXdUZXh0U2l6ZV07CisgICAgUmV0YWluUHRyPE5TQ29sb3I+IHRleHRDb2xv
ciA9IFtOU0NvbG9yIGNvbG9yV2l0aENhbGlicmF0ZWRXaGl0ZTpXYXJuaW5nVmlld1RleHRXaGl0
ZSBhbHBoYTpXYXJuaW5nVmlld1RleHRBbHBoYV07CisgICAgUmV0YWluUHRyPE5TRGljdGlvbmFy
eT4gYXR0cmlidXRlcyA9IGFkb3B0TlMoW1tOU0RpY3Rpb25hcnkgYWxsb2NdIGluaXRXaXRoT2Jq
ZWN0c0FuZEtleXM6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHRleHRGb250LmdldCgpLCBOU0ZvbnRBdHRyaWJ1dGVOYW1lLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0Q29sb3IuZ2V0KCksIE5T
Rm9yZWdyb3VuZENvbG9yQXR0cmlidXRlTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbmlsXSk7CisgICAgUmV0YWluUHRyPE5TQXR0cmlidXRl
ZFN0cmluZz4gdGV4dCA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRX
aXRoU3RyaW5nOnRpdGxlIGF0dHJpYnV0ZXM6YXR0cmlidXRlcy5nZXQoKV0pOworICAgIFtfdGV4
dEZpZWxkLmdldCgpIHNldEF0dHJpYnV0ZWRTdHJpbmdWYWx1ZTp0ZXh0LmdldCgpXTsKKyAgICBb
X3RleHRGaWVsZC5nZXQoKSBzaXplVG9GaXRdOworICAgIE5TUmVjdCB0ZXh0RmllbGRGcmFtZSA9
IFtfdGV4dEZpZWxkLmdldCgpIGZyYW1lXTsKKyAgICBOU1NpemUgZnJhbWVTaXplID0gdGV4dEZp
ZWxkRnJhbWUuc2l6ZTsKKyAgICBmcmFtZVNpemUud2lkdGggKz0gV2FybmluZ1ZpZXdQYWRkaW5n
ICogMjsKKyAgICBmcmFtZVNpemUuaGVpZ2h0ICs9IFdhcm5pbmdWaWV3UGFkZGluZyAqIDI7Cisg
ICAgW3NlbGYgc2V0RnJhbWVTaXplOmZyYW1lU2l6ZV07CisKKyAgICB0ZXh0RmllbGRGcmFtZS5v
cmlnaW4gPSBOU01ha2VQb2ludCgKKyAgICAgICAgKGZyYW1lU2l6ZS53aWR0aCAtIHRleHRGaWVs
ZEZyYW1lLnNpemUud2lkdGgpIC8gMiwKKyAgICAgICAgKGZyYW1lU2l6ZS5oZWlnaHQgLSB0ZXh0
RmllbGRGcmFtZS5zaXplLmhlaWdodCkgLyAyKTsKKworICAgIC8vIE9mZnNldCB0aGUgb3JpZ2lu
IGJ5IHRoZSBmb250J3MgZGVzY2VuZGVyLCB0byBjZW50ZXIgdGhlIHRleHQgZmllbGQgYWJvdXQg
dGhlIGJhc2VsaW5lOgorICAgIHRleHRGaWVsZEZyYW1lLm9yaWdpbi55ICs9IFtbX3RleHRGaWVs
ZC5nZXQoKSBmb250XSBkZXNjZW5kZXJdOworCisgICAgW190ZXh0RmllbGQuZ2V0KCkgc2V0RnJh
bWU6TlNJbnRlZ3JhbFJlY3QodGV4dEZpZWxkRnJhbWUpXTsKKyAgICBbc2VsZiBhZGRTdWJ2aWV3
Ol90ZXh0RmllbGQuZ2V0KCldOworCisgICAgUmV0YWluUHRyPE5TQ29sb3I+IGJhY2tncm91bmRD
b2xvciA9IFtOU0NvbG9yIGNvbG9yV2l0aENhbGlicmF0ZWRXaGl0ZTpXYXJuaW5nVmlld0JhY2tn
cm91bmRXaGl0ZSBhbHBoYTpXYXJuaW5nVmlld0JhY2tncm91bmRBbHBoYV07CisgICAgW3NlbGYg
c2V0RmlsbENvbG9yOmJhY2tncm91bmRDb2xvci5nZXQoKV07CisgICAgW3NlbGYgc2V0Q29ybmVy
UmFkaXVzOldhcm5pbmdWaWV3Q29ybmVyUmFkaXVzXTsKKworICAgIFJldGFpblB0cjxOU0NvbG9y
PiBib3JkZXJDb2xvciA9IFtOU0NvbG9yIGNvbG9yV2l0aENhbGlicmF0ZWRXaGl0ZTpXYXJuaW5n
Vmlld0JvcmRlcldoaXRlIGFscGhhOldhcm5pbmdWaWV3Qm9yZGVyQWxwaGFdOworICAgIFtzZWxm
IHNldEJvcmRlckNvbG9yOmJvcmRlckNvbG9yLmdldCgpXTsKKworICAgIFJldGFpblB0cjxOU1No
YWRvdz4gc2hhZG93ID0gYWRvcHROUyhbW05TU2hhZG93IGFsbG9jXSBpbml0XSk7CisgICAgUmV0
YWluUHRyPE5TQ29sb3I+IHNoYWRvd0NvbG9yID0gW05TQ29sb3IgY29sb3JXaXRoQ2FsaWJyYXRl
ZFdoaXRlOldhcm5pbmdWaWV3U2hhZG93V2hpdGUgYWxwaGE6V2FybmluZ1ZpZXdTaGFkb3dBbHBo
YV07CisgICAgW3NoYWRvdy5nZXQoKSBzZXRTaGFkb3dDb2xvcjpzaGFkb3dDb2xvci5nZXQoKV07
CisgICAgW3NoYWRvdy5nZXQoKSBzZXRTaGFkb3dPZmZzZXQ6V2FybmluZ1ZpZXdTaGFkb3dPZmZz
ZXRdOworICAgIFtzaGFkb3cuZ2V0KCkgc2V0U2hhZG93Qmx1clJhZGl1czpXYXJuaW5nVmlld1No
YWRvd1JhZGl1c107CisgICAgW3NlbGYgc2V0U2hhZG93OnNoYWRvdy5nZXQoKV07CisKKyAgICBy
ZXR1cm4gc2VsZjsKK30KK0BlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9tYWMvV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5oIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL21hYy9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLmgKaW5kZXggOWNlODhhZTVh
OTZiYmRiZjlkYWY5YzY3MDM5MTA3YWY5Mjg4ZTk4Yy4uZTQ3ODlhZTNhNzNmOTIzNGIyN2JjN2Uw
NjdiNDYyNDk4NTAwODNjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21h
Yy9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL21hYy9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLmgKQEAgLTM4LDEzICszOCwx
NCBAQCBjbGFzcyBJbnRSZWN0OwogfQogCiBAY2xhc3MgV0tWaWV3OworQGNsYXNzIFdlYkNvcmVG
dWxsU2NyZWVuUGxhY2Vob2xkZXJWaWV3OwogQGNsYXNzIFdlYldpbmRvd1NjYWxlQW5pbWF0aW9u
OwogQGNsYXNzIFdlYldpbmRvd0ZhZGVBbmltYXRpb247CiAKLUBpbnRlcmZhY2UgV0tGdWxsU2Ny
ZWVuV2luZG93Q29udHJvbGxlciA6IE5TV2luZG93Q29udHJvbGxlciB7CitAaW50ZXJmYWNlIFdL
RnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIgOiBOU1dpbmRvd0NvbnRyb2xsZXI8TlNXaW5kb3dE
ZWxlZ2F0ZT4gewogQHByaXZhdGUKICAgICBXS1ZpZXcgKl93ZWJWaWV3OwotICAgIFJldGFpblB0
cjxOU0ltYWdlVmlldz4gX3dlYlZpZXdQbGFjZWhvbGRlcjsKKyAgICBSZXRhaW5QdHI8V2ViQ29y
ZUZ1bGxTY3JlZW5QbGFjZWhvbGRlclZpZXc+IF93ZWJWaWV3UGxhY2Vob2xkZXI7CiAgICAgUmV0
YWluUHRyPFdlYldpbmRvd1NjYWxlQW5pbWF0aW9uPiBfc2NhbGVBbmltYXRpb247CiAgICAgUmV0
YWluUHRyPFdlYldpbmRvd0ZhZGVBbmltYXRpb24+IF9mYWRlQW5pbWF0aW9uOwogICAgIFJldGFp
blB0cjxOU1dpbmRvdz4gX2JhY2tncm91bmRXaW5kb3c7CkBAIC01Niw2ICs1Nyw3IEBAIGNsYXNz
IEludFJlY3Q7CiAgICAgQk9PTCBfaXNFeGl0aW5nRnVsbFNjcmVlbjsKICAgICBCT09MIF9pc0Z1
bGxTY3JlZW47CiAgICAgQk9PTCBfaXNQbGF5aW5nOworICAgIE5TVGltZUludGVydmFsIF9hbmlt
YXRpb25EdXJhdGlvbjsKIH0KIAogLSAoV0tWaWV3Kil3ZWJWaWV3OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLm1t
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9s
bGVyLm1tCmluZGV4IGViODIxMzRlZjFhMGU1N2Y2Yjc1ZTY2MDg3YWY3ZjU1NzM2MDE4YzcuLmU4
YzM5MzQ2MDY1NWE2NDM1ODUwYWI0ODVlNmIyYmI3NmQyMTcxMDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRy
b2xsZXIubW0KQEAgLTM5LDYgKzM5LDggQEAKICNpbXBvcnQgPFdlYkNvcmUvRGlzcGxheVNsZWVw
RGlzYWJsZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvRmxvYXRSZWN0Lmg+CiAjaW1wb3J0IDxXZWJD
b3JlL0ludFJlY3QuaD4KKyNpbXBvcnQgPFdlYkNvcmUvTG9jYWxpemVkU3RyaW5ncy5oPgorI2lt
cG9ydCA8V2ViQ29yZS9XZWJDb3JlRnVsbFNjcmVlblBsYWNlaG9sZGVyVmlldy5oPgogI2ltcG9y
dCA8V2ViQ29yZS9XZWJDb3JlRnVsbFNjcmVlbldpbmRvdy5oPgogI2ltcG9ydCA8V2ViQ29yZS9X
ZWJXaW5kb3dBbmltYXRpb24uaD4KICNpbXBvcnQgPFdlYktpdC9XZWJOU1dpbmRvd0V4dHJhcy5o
PgpAQCAtNTMsOCArNTUsMTIgQEAgc3RhdGljIFJldGFpblB0cjxOU1dpbmRvdz4gY3JlYXRlQmFj
a2dyb3VuZEZ1bGxzY3JlZW5XaW5kb3coTlNSZWN0IGZyYW1lKTsKIHN0YXRpYyBjb25zdCBDRlRp
bWVJbnRlcnZhbCBkZWZhdWx0QW5pbWF0aW9uRHVyYXRpb24gPSAwLjU7CiBzdGF0aWMgY29uc3Qg
TlNUaW1lSW50ZXJ2YWwgRGVmYXVsdFdhdGNoZG9nVGltZXJJbnRlcnZhbCA9IDE7CiAKK0BpbnRl
cmZhY2UgTlNXaW5kb3coTW9yZVNwZWNpZmljRnVsbFNjcmVlbkFjdGlvbnMpCistICh2b2lkKWV4
aXRGdWxsU2NyZWVuTW9kZTooaWQpc2VuZGVyOworLSAodm9pZCllbnRlckZ1bGxTY3JlZW5Nb2Rl
OihpZClzZW5kZXI7CitAZW5kCisKIEBpbnRlcmZhY2UgV0tGdWxsU2NyZWVuV2luZG93Q29udHJv
bGxlcihQcml2YXRlKTxOU0FuaW1hdGlvbkRlbGVnYXRlPgotLSAodm9pZClfdXBkYXRlTWVudUFu
ZERvY2tGb3JGdWxsU2NyZWVuOwogLSAodm9pZClfcmVwbGFjZVZpZXc6KE5TVmlldyopdmlldyB3
aXRoOihOU1ZpZXcqKW90aGVyVmlldzsKIC0gKFdlYlBhZ2VQcm94eSopX3BhZ2U7CiAtIChXZWJG
dWxsU2NyZWVuTWFuYWdlclByb3h5KilfbWFuYWdlcjsKQEAgLTkyLDYgKzk4LDggQEAgc3RhdGlj
IE5TUmVjdCBjb252ZXJ0UmVjdFRvU2NyZWVuKE5TV2luZG93ICp3aW5kb3csIE5TUmVjdCByZWN0
KQogICAgIFt3aW5kb3cgcmVsZWFzZV07CiAgICAgaWYgKCFzZWxmKQogICAgICAgICByZXR1cm4g
bmlsOworICAgIFt3aW5kb3cgc2V0RGVsZWdhdGU6c2VsZl07CisgICAgW3dpbmRvdyBzZXRDb2xs
ZWN0aW9uQmVoYXZpb3I6KFt3aW5kb3cgY29sbGVjdGlvbkJlaGF2aW9yXSB8IE5TV2luZG93Q29s
bGVjdGlvbkJlaGF2aW9yRnVsbFNjcmVlblByaW1hcnkpXTsKICAgICBbc2VsZiB3aW5kb3dEaWRM
b2FkXTsKICAgICAKICAgICByZXR1cm4gc2VsZjsKQEAgLTE3NCw3ICsxODIsNiBAQCBzdGF0aWMg
TlNSZWN0IGNvbnZlcnRSZWN0VG9TY3JlZW4oTlNXaW5kb3cgKndpbmRvdywgTlNSZWN0IHJlY3Qp
CiAgICAgLy8gdGhlIERvY2sncyBzaXplIG9yIGxvY2F0aW9uLCBvciB0aGV5IG1heSBoYXZlIGNo
YW5nZWQgdGhlIGZ1bGxTY3JlZW4gc2NyZWVuJ3MgZGltZW5zaW9ucy4gCiAgICAgLy8gVXBkYXRl
IG91ciBwcmVzZW50YXRpb24gcGFyYW1ldGVycywgYW5kIGVuc3VyZSB0aGF0IHRoZSBmdWxsIHNj
cmVlbiB3aW5kb3cgb2NjdXBpZXMgdGhlIAogICAgIC8vIGVudGlyZSBzY3JlZW46Ci0gICAgW3Nl
bGYgX3VwZGF0ZU1lbnVBbmREb2NrRm9yRnVsbFNjcmVlbl07CiAgICAgTlNXaW5kb3cqIHdpbmRv
dyA9IFtzZWxmIHdpbmRvd107CiAgICAgTlNSZWN0IHNjcmVlbkZyYW1lID0gW1t3aW5kb3cgc2Ny
ZWVuXSBmcmFtZV07CiAgICAgW3dpbmRvdyBzZXRGcmFtZTpzY3JlZW5GcmFtZSBkaXNwbGF5OllF
U107CkBAIC0yMTIsOCArMjE5LDYgQEAgc3RhdGljIFJldGFpblB0cjxDR0ltYWdlUmVmPiBjcmVh
dGVJbWFnZVdpdGhDb3BpZWREYXRhKENHSW1hZ2VSZWYgc291cmNlSW1hZ2UpCiAgICAgICAgIHJl
dHVybjsKICAgICBfaXNGdWxsU2NyZWVuID0gWUVTOwogCi0gICAgW3NlbGYgX3VwZGF0ZU1lbnVB
bmREb2NrRm9yRnVsbFNjcmVlbl07ICAgCi0KICAgICBpZiAoIXNjcmVlbikKICAgICAgICAgc2Ny
ZWVuID0gW05TU2NyZWVuIG1haW5TY3JlZW5dOwogICAgIE5TUmVjdCBzY3JlZW5GcmFtZSA9IFtz
Y3JlZW4gZnJhbWVdOwpAQCAtMjQ2LDExICsyNTEsMTEgQEAgc3RhdGljIFJldGFpblB0cjxDR0lt
YWdlUmVmPiBjcmVhdGVJbWFnZVdpdGhDb3BpZWREYXRhKENHSW1hZ2VSZWYgc291cmNlSW1hZ2Up
CiAKICAgICAvLyBTd2FwIHRoZSB3ZWJWaWV3IHBsYWNlaG9sZGVyIGludG8gcGxhY2UuCiAgICAg
aWYgKCFfd2ViVmlld1BsYWNlaG9sZGVyKSB7Ci0gICAgICAgIF93ZWJWaWV3UGxhY2Vob2xkZXIu
YWRvcHROUyhbW05TSW1hZ2VWaWV3IGFsbG9jXSBpbml0XSk7Ci0gICAgICAgIFtfd2ViVmlld1Bs
YWNlaG9sZGVyLmdldCgpIHNldExheWVyOltDQUxheWVyIGxheWVyXV07Ci0gICAgICAgIFtfd2Vi
Vmlld1BsYWNlaG9sZGVyLmdldCgpIHNldFdhbnRzTGF5ZXI6WUVTXTsKKyAgICAgICAgX3dlYlZp
ZXdQbGFjZWhvbGRlci5hZG9wdE5TKFtbV2ViQ29yZUZ1bGxTY3JlZW5QbGFjZWhvbGRlclZpZXcg
YWxsb2NdIGluaXRXaXRoRnJhbWU6W193ZWJWaWV3IGZyYW1lXV0pOworICAgICAgICBbX3dlYlZp
ZXdQbGFjZWhvbGRlci5nZXQoKSBzZXRUYXJnZXQ6c2VsZl07CisgICAgICAgIFtfd2ViVmlld1Bs
YWNlaG9sZGVyLmdldCgpIHNldEFjdGlvbjpAc2VsZWN0b3IoY2FuY2VsT3BlcmF0aW9uOildOwog
ICAgIH0KLSAgICBbW193ZWJWaWV3UGxhY2Vob2xkZXIuZ2V0KCkgbGF5ZXJdIHNldENvbnRlbnRz
OihpZCl3ZWJWaWV3Q29udGVudHMuZ2V0KCldOworICAgIFtfd2ViVmlld1BsYWNlaG9sZGVyLmdl
dCgpIHNldENvbnRlbnRzOihpZCl3ZWJWaWV3Q29udGVudHMuZ2V0KCldOwogICAgIFtzZWxmIF9y
ZXBsYWNlVmlldzpfd2ViVmlldyB3aXRoOl93ZWJWaWV3UGxhY2Vob2xkZXIuZ2V0KCldOwogICAg
IAogICAgIC8vIFRoZW4gaW5zZXJ0IHRoZSBXZWJWaWV3IGludG8gdGhlIGZ1bGwgc2NyZWVuIHdp
bmRvdwpAQCAtMjczLDkgKzI3OCw4IEBAIHN0YXRpYyBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gY3Jl
YXRlSW1hZ2VXaXRoQ29waWVkRGF0YShDR0ltYWdlUmVmIHNvdXJjZUltYWdlKQogICAgIF9pbml0
aWFsRnJhbWUgPSBpbml0aWFsRnJhbWU7CiAgICAgX2ZpbmFsRnJhbWUgPSBmaW5hbEZyYW1lOwog
Ci0gICAgW3NlbGYgX3VwZGF0ZU1lbnVBbmREb2NrRm9yRnVsbFNjcmVlbl07ICAgCi0KLSAgICBb
c2VsZiBfc3RhcnRFbnRlckZ1bGxTY3JlZW5BbmltYXRpb25XaXRoRHVyYXRpb246ZGVmYXVsdEFu
aW1hdGlvbkR1cmF0aW9uXTsKKyAgICBBU1NFUlQoW1tzZWxmIHdpbmRvd10gcmVzcG9uZHNUb1Nl
bGVjdG9yOkBzZWxlY3RvcihlbnRlckZ1bGxTY3JlZW5Nb2RlOildKTsKKyAgICBbW3NlbGYgd2lu
ZG93XSBlbnRlckZ1bGxTY3JlZW5Nb2RlOnNlbGZdOwogfQogCiAtICh2b2lkKWZpbmlzaGVkRW50
ZXJGdWxsU2NyZWVuQW5pbWF0aW9uOihib29sKWNvbXBsZXRlZApAQCAtMjk0LDI0ICsyOTgsMTQg
QEAgc3RhdGljIFJldGFpblB0cjxDR0ltYWdlUmVmPiBjcmVhdGVJbWFnZVdpdGhDb3BpZWREYXRh
KENHSW1hZ2VSZWYgc291cmNlSW1hZ2UpCiAgICAgICAgIHdpbmRvd0JvdW5kcy5vcmlnaW4gPSBO
U1plcm9Qb2ludDsKICAgICAgICAgV0tXaW5kb3dTZXRDbGlwUmVjdChbc2VsZiB3aW5kb3ddLCB3
aW5kb3dCb3VuZHMpOwogCi0gICAgICAgIE5TV2luZG93ICp3ZWJXaW5kb3cgPSBbX3dlYlZpZXdQ
bGFjZWhvbGRlci5nZXQoKSB3aW5kb3ddOwotI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gMTA3MAotICAgICAgICAvLyBJbiBMaW9uLCBOU1dpbmRvdyB3aWxsIGFuaW1hdGUg
aW50byBhbmQgb3V0IG9mIG9yZGVyT3V0IG9wZXJhdGlvbnMuIFN1cHByZXNzIHRoYXQKLSAgICAg
ICAgLy8gYmVoYXZpb3IgaGVyZSwgbWFraW5nIHN1cmUgdG8gcmVzZXQgdGhlIGFuaW1hdGlvbiBi
ZWhhdmlvciBhZnRlcndhcmQuCi0gICAgICAgIE5TV2luZG93QW5pbWF0aW9uQmVoYXZpb3IgYW5p
bWF0aW9uQmVoYXZpb3IgPSBbd2ViV2luZG93IGFuaW1hdGlvbkJlaGF2aW9yXTsKLSAgICAgICAg
W3dlYldpbmRvdyBzZXRBbmltYXRpb25CZWhhdmlvcjpOU1dpbmRvd0FuaW1hdGlvbkJlaGF2aW9y
Tm9uZV07Ci0jZW5kaWYKLSAgICAgICAgW3dlYldpbmRvdyBvcmRlck91dDpzZWxmXTsKLSNpZiBf
X01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNzAKLSAgICAgICAgW3dlYldpbmRv
dyBzZXRBbmltYXRpb25CZWhhdmlvcjphbmltYXRpb25CZWhhdmlvcl07Ci0jZW5kaWYKLQogICAg
ICAgICBbX2ZhZGVBbmltYXRpb24uZ2V0KCkgc3RvcEFuaW1hdGlvbl07CiAgICAgICAgIFtfZmFk
ZUFuaW1hdGlvbi5nZXQoKSBzZXRXaW5kb3c6bmlsXTsKICAgICAgICAgX2ZhZGVBbmltYXRpb24g
PSBudWxscHRyOwogICAgICAgICAKICAgICAgICAgW19iYWNrZ3JvdW5kV2luZG93LmdldCgpIG9y
ZGVyT3V0OnNlbGZdOwogICAgICAgICBbX2JhY2tncm91bmRXaW5kb3cuZ2V0KCkgc2V0RnJhbWU6
TlNaZXJvUmVjdCBkaXNwbGF5OllFU107CisKKyAgICAgICAgW193ZWJWaWV3UGxhY2Vob2xkZXIu
Z2V0KCkgc2V0RXhpdFdhcm5pbmdWaXNpYmxlOllFU107CiAgICAgICAgIE5TRW5hYmxlU2NyZWVu
VXBkYXRlcygpOwogICAgIH0gZWxzZQogICAgICAgICBbX3NjYWxlQW5pbWF0aW9uLmdldCgpIHN0
b3BBbmltYXRpb25dOwpAQCAtMzI4LDcgKzMyMiw5IEBAIHN0YXRpYyBSZXRhaW5QdHI8Q0dJbWFn
ZVJlZj4gY3JlYXRlSW1hZ2VXaXRoQ29waWVkRGF0YShDR0ltYWdlUmVmIHNvdXJjZUltYWdlKQog
ICAgICAgICByZXR1cm47CiAgICAgX2lzRnVsbFNjcmVlbiA9IE5POwogCi0gICAgLy8gU2NyZWVu
IHVwZGF0ZXMgdG8gYmUgcmUtZW5hYmxlZCBpbiBfc3RhcnRFeGl0RnVsbFNjcmVlbkFuaW1hdGlv
bldpdGhEdXJhdGlvbjoKKyAgICBbX3dlYlZpZXdQbGFjZWhvbGRlci5nZXQoKSBzZXRFeGl0V2Fy
bmluZ1Zpc2libGU6Tk9dOworCisgICAgLy8gU2NyZWVuIHVwZGF0ZXMgdG8gYmUgcmUtZW5hYmxl
ZCBpbiBfc3RhcnRFeGl0RnVsbFNjcmVlbkFuaW1hdGlvbldpdGhEdXJhdGlvbjogb3IgYmVnYW5F
eGl0RnVsbFNjcmVlbldpdGhJbml0aWFsRnJhbWU6ZmluYWxGcmFtZToKICAgICBOU0Rpc2FibGVT
Y3JlZW5VcGRhdGVzKCk7CiAgICAgW1tzZWxmIHdpbmRvd10gc2V0QXV0b2Rpc3BsYXk6Tk9dOwog
CkBAIC0zNDksMzAgKzM0NSwxOSBAQCBzdGF0aWMgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGNyZWF0
ZUltYWdlV2l0aENvcGllZERhdGEoQ0dJbWFnZVJlZiBzb3VyY2VJbWFnZSkKICAgICBpZiAoX2lz
RW50ZXJpbmdGdWxsU2NyZWVuKQogICAgICAgICBbc2VsZiBmaW5pc2hlZEVudGVyRnVsbFNjcmVl
bkFuaW1hdGlvbjpOT107CiAKLSAgICBbc2VsZiBfdXBkYXRlTWVudUFuZERvY2tGb3JGdWxsU2Ny
ZWVuXTsKLSAgICAKLSAgICBOU1dpbmRvdyogd2ViV2luZG93ID0gW193ZWJWaWV3UGxhY2Vob2xk
ZXIuZ2V0KCkgd2luZG93XTsKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IDEwNzAKLSAgICAvLyBJbiBMaW9uLCBOU1dpbmRvdyB3aWxsIGFuaW1hdGUgaW50byBhbmQgb3V0
IG9mIG9yZGVyT3V0IG9wZXJhdGlvbnMuIFN1cHByZXNzIHRoYXQKLSAgICAvLyBiZWhhdmlvciBo
ZXJlLCBtYWtpbmcgc3VyZSB0byByZXNldCB0aGUgYW5pbWF0aW9uIGJlaGF2aW9yIGFmdGVyd2Fy
ZC4KLSAgICBOU1dpbmRvd0FuaW1hdGlvbkJlaGF2aW9yIGFuaW1hdGlvbkJlaGF2aW9yID0gW3dl
YldpbmRvdyBhbmltYXRpb25CZWhhdmlvcl07Ci0gICAgW3dlYldpbmRvdyBzZXRBbmltYXRpb25C
ZWhhdmlvcjpOU1dpbmRvd0FuaW1hdGlvbkJlaGF2aW9yTm9uZV07Ci0jZW5kaWYKLSAgICAvLyBJ
ZiB0aGUgdXNlciBoYXMgbW92ZWQgdGhlIGZ1bGxTY3JlZW4gd2luZG93IGludG8gYSBuZXcgc3Bh
Y2UsIHRlbXBvcmFyaWx5IGNoYW5nZQotICAgIC8vIHRoZSBjb2xsZWN0aW9uQmVoYXZpb3Igb2Yg
dGhlIHdlYlZpZXcncyB3aW5kb3cgc28gdGhhdCBpdCBpcyBwdWxsZWQgaW50byB0aGUgYWN0aXZl
IHNwYWNlOgotICAgIGlmICghKFt3ZWJXaW5kb3cgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rv
cihpc09uQWN0aXZlU3BhY2UpXSA/IFt3ZWJXaW5kb3cgaXNPbkFjdGl2ZVNwYWNlXSA6IFlFUykp
IHsKLSAgICAgICAgTlNXaW5kb3dDb2xsZWN0aW9uQmVoYXZpb3IgYmVoYXZpb3IgPSBbd2ViV2lu
ZG93IGNvbGxlY3Rpb25CZWhhdmlvcl07Ci0gICAgICAgIFt3ZWJXaW5kb3cgc2V0Q29sbGVjdGlv
bkJlaGF2aW9yOk5TV2luZG93Q29sbGVjdGlvbkJlaGF2aW9yQ2FuSm9pbkFsbFNwYWNlc107Ci0g
ICAgICAgIFt3ZWJXaW5kb3cgb3JkZXJXaW5kb3c6TlNXaW5kb3dCZWxvdyByZWxhdGl2ZVRvOltb
c2VsZiB3aW5kb3ddIHdpbmRvd051bWJlcl1dOwotICAgICAgICBbd2ViV2luZG93IHNldENvbGxl
Y3Rpb25CZWhhdmlvcjpiZWhhdmlvcl07Ci0gICAgfSBlbHNlCi0gICAgICAgIFt3ZWJXaW5kb3cg
b3JkZXJXaW5kb3c6TlNXaW5kb3dCZWxvdyByZWxhdGl2ZVRvOltbc2VsZiB3aW5kb3ddIHdpbmRv
d051bWJlcl1dOwotICAgIAotI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0g
MTA3MAotICAgIFt3ZWJXaW5kb3cgc2V0QW5pbWF0aW9uQmVoYXZpb3I6YW5pbWF0aW9uQmVoYXZp
b3JdOwotI2VuZGlmCisgICAgaWYgKCFbW3NlbGYgd2luZG93XSBpc09uQWN0aXZlU3BhY2VdKSB7
CisgICAgICAgIC8vIElmIHRoZSBmdWxsIHNjcmVlbiB3aW5kb3cgaXMgbm90IGluIHRoZSBhY3Rp
dmUgc3BhY2UsIHRoZSBOU1dpbmRvdyBmdWxsIHNjcmVlbiBhbmltYXRpb24gZGVsZWdhdGUgbWV0
aG9kcworICAgICAgICAvLyB3aWxsIG5ldmVyIGJlIGNhbGxlZC4gU28gY2FsbCBmaW5pc2hlZEV4
aXRGdWxsU2NyZWVuQW5pbWF0aW9uIGV4cGxpY2l0bHkuCisgICAgICAgIFtzZWxmIGZpbmlzaGVk
RXhpdEZ1bGxTY3JlZW5BbmltYXRpb246WUVTXTsKIAotICAgIFtzZWxmIF9zdGFydEV4aXRGdWxs
U2NyZWVuQW5pbWF0aW9uV2l0aER1cmF0aW9uOmRlZmF1bHRBbmltYXRpb25EdXJhdGlvbl07Cisg
ICAgICAgIC8vIEJlY2F1c2Ugd2UgYXJlIGJyZWFraW5nIHRoZSBub3JtYWwgYW5pbWF0aW9uIHBh
dHRlcm4sIHJlLWVuYWJsZSBzY3JlZW4gdXBkYXRlcworICAgICAgICAvLyBhcyBleGl0RnVsbFNj
cmVlbiBoYXMgZGlzYWJsZWQgdGhlbSwgYnV0IF9zdGFydEV4aXRGdWxsU2NyZWVuQW5pbWF0aW9u
V2l0aER1cmF0aW9uOgorICAgICAgICAvLyB3aWxsIG5ldmVyIGJlIGNhbGxlZC4KKyAgICAgICAg
TlNFbmFibGVTY3JlZW5VcGRhdGVzKCk7CisgICAgfQorCisgICAgQVNTRVJUKFtbc2VsZiB3aW5k
b3ddIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoZXhpdEZ1bGxTY3JlZW5Nb2RlOildKTsK
KyAgICBbW3NlbGYgd2luZG93XSBleGl0RnVsbFNjcmVlbk1vZGU6c2VsZl07CiB9CiAKIHN0YXRp
YyB2b2lkIGNvbXBsZXRlRmluaXNoRXhpdEZ1bGxTY3JlZW5BbmltYXRpb25BZnRlclJlcGFpbnQo
V0tFcnJvclJlZiwgdm9pZCopOwpAQCAtMzgzLDggKzM2OCw2IEBAIHN0YXRpYyB2b2lkIGNvbXBs
ZXRlRmluaXNoRXhpdEZ1bGxTY3JlZW5BbmltYXRpb25BZnRlclJlcGFpbnQoV0tFcnJvclJlZiwg
dm9pZCopCiAgICAgICAgIHJldHVybjsKICAgICBfaXNFeGl0aW5nRnVsbFNjcmVlbiA9IE5POwog
Ci0gICAgW3NlbGYgX3VwZGF0ZU1lbnVBbmREb2NrRm9yRnVsbFNjcmVlbl07Ci0KICAgICAvLyBT
Y3JlZW4gdXBkYXRlcyB0byBiZSByZS1lbmFibGVkIGluIGNvbXBsZXRlRmluaXNoRXhpdEZ1bGxT
Y3JlZW5BbmltYXRpb25BZnRlclJlcGFpbnQuCiAgICAgTlNEaXNhYmxlU2NyZWVuVXBkYXRlcygp
OwogICAgIFtbX3dlYlZpZXdQbGFjZWhvbGRlci5nZXQoKSB3aW5kb3ddIHNldEF1dG9kaXNwbGF5
Ok5PXTsKQEAgLTQ1NSwzNSArNDM4LDMxIEBAIHN0YXRpYyB2b2lkIGNvbXBsZXRlRmluaXNoRXhp
dEZ1bGxTY3JlZW5BbmltYXRpb25BZnRlclJlcGFpbnQoV0tFcnJvclJlZiwgdm9pZCoKIH0KIAog
I3ByYWdtYSBtYXJrIC0KLSNwcmFnbWEgbWFyayBJbnRlcm5hbCBJbnRlcmZhY2UKKyNwcmFnbWEg
bWFyayBDdXN0b20gTlNXaW5kb3cgRnVsbCBTY3JlZW4gQW5pbWF0aW9uCiAKLS0gKHZvaWQpX3Vw
ZGF0ZU1lbnVBbmREb2NrRm9yRnVsbFNjcmVlbgorLSAoTlNBcnJheSAqKWN1c3RvbVdpbmRvd3NU
b0VudGVyRnVsbFNjcmVlbkZvcldpbmRvdzooTlNXaW5kb3cgKil3aW5kb3cKIHsKLSAgICAvLyBO
U0FwcGxpY2F0aW9uUHJlc2VudGF0aW9uT3B0aW9ucyBpcyBhdmFpbGFibGUgb24gPiAxMC42IG9u
bHk6Ci0jaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDYwCi0gICAgTlNB
cHBsaWNhdGlvblByZXNlbnRhdGlvbk9wdGlvbnMgb3B0aW9ucyA9IE5TQXBwbGljYXRpb25QcmVz
ZW50YXRpb25EZWZhdWx0OwotICAgIE5TU2NyZWVuKiBmdWxsU2NyZWVuU2NyZWVuID0gW1tzZWxm
IHdpbmRvd10gc2NyZWVuXTsKLSAgICAKLSAgICBpZiAoX2lzRnVsbFNjcmVlbikgewotICAgICAg
ICAvLyBBdXRvLWhpZGUgdGhlIG1lbnUgYmFyIGlmIHRoZSBmdWxsU2NyZWVuU2NyZWVuIGNvbnRh
aW5zIHRoZSBtZW51IGJhcjoKLSAgICAgICAgLy8gTk9URTogaWYgdGhlIGZ1bGxTY3JlZW5TY3Jl
ZW4gY29udGFpbnMgdGhlIG1lbnUgYmFyIGJ1dCBub3QgdGhlIGRvY2ssIHdlIG11c3Qgc3RpbGwg
Ci0gICAgICAgIC8vIGF1dG8taGlkZSB0aGUgZG9jaywgb3IgYW4gZXhjZXB0aW9uIHdpbGwgYmUg
dGhyb3duLgotICAgICAgICBpZiAoW1tOU1NjcmVlbiBzY3JlZW5zXSBvYmplY3RBdEluZGV4OjBd
ID09IGZ1bGxTY3JlZW5TY3JlZW4pCi0gICAgICAgICAgICBvcHRpb25zIHw9IChOU0FwcGxpY2F0
aW9uUHJlc2VudGF0aW9uQXV0b0hpZGVNZW51QmFyIHwgTlNBcHBsaWNhdGlvblByZXNlbnRhdGlv
bkF1dG9IaWRlRG9jayk7Ci0gICAgICAgIC8vIENoZWNrIGlmIHRoZSBjdXJyZW50IHNjcmVlbiBj
b250YWlucyB0aGUgZG9jayBieSBjb21wYXJpbmcgdGhlIHNjcmVlbidzIGZyYW1lIHRvIGl0cwot
ICAgICAgICAvLyB2aXNpYmxlRnJhbWU7IGlmIGEgZG9jayBpcyBwcmVzZW50LCB0aGUgdmlzaWJs
ZUZyYW1lIHdpbGwgZGlmZmVyLiBJZiB0aGUgY3VycmVudCBzY3JlZW4KLSAgICAgICAgLy8gY29u
dGFpbnMgdGhlIGRvY2ssIGhpZGUgaXQuCi0gICAgICAgIGVsc2UgaWYgKCFOU0VxdWFsUmVjdHMo
W2Z1bGxTY3JlZW5TY3JlZW4gZnJhbWVdLCBbZnVsbFNjcmVlblNjcmVlbiB2aXNpYmxlRnJhbWVd
KSkKLSAgICAgICAgICAgIG9wdGlvbnMgfD0gTlNBcHBsaWNhdGlvblByZXNlbnRhdGlvbkF1dG9I
aWRlRG9jazsKLSAgICB9Ci0gICAgCi0gICAgaWYgKFtOU0FwcCByZXNwb25kc1RvU2VsZWN0b3I6
QHNlbGVjdG9yKHNldFByZXNlbnRhdGlvbk9wdGlvbnM6KV0pCi0gICAgICAgIFtOU0FwcCBzZXRQ
cmVzZW50YXRpb25PcHRpb25zOm9wdGlvbnNdOwotICAgIGVsc2UKLSNlbmRpZgotICAgICAgICBT
ZXRTeXN0ZW1VSU1vZGUoX2lzRnVsbFNjcmVlbiA/IGtVSU1vZGVBbGxIaWRkZW4gOiBrVUlNb2Rl
Tm9ybWFsLCAwKTsKKyAgICByZXR1cm4gW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czpbc2VsZiB3
aW5kb3ddLCBfYmFja2dyb3VuZFdpbmRvdy5nZXQoKSwgbmlsXTsKK30KKworLSAoTlNBcnJheSAq
KWN1c3RvbVdpbmRvd3NUb0V4aXRGdWxsU2NyZWVuRm9yV2luZG93OihOU1dpbmRvdyAqKXdpbmRv
dworeworICAgIHJldHVybiBbTlNBcnJheSBhcnJheVdpdGhPYmplY3RzOltzZWxmIHdpbmRvd10s
IF9iYWNrZ3JvdW5kV2luZG93LmdldCgpLCBuaWxdOworfQorCistICh2b2lkKXdpbmRvdzooTlNX
aW5kb3cgKil3aW5kb3cgc3RhcnRDdXN0b21BbmltYXRpb25Ub0VudGVyRnVsbFNjcmVlbldpdGhE
dXJhdGlvbjooTlNUaW1lSW50ZXJ2YWwpZHVyYXRpb24KK3sKKyAgICBbc2VsZiBfc3RhcnRFbnRl
ckZ1bGxTY3JlZW5BbmltYXRpb25XaXRoRHVyYXRpb246ZHVyYXRpb25dOworfQorCistICh2b2lk
KXdpbmRvdzooTlNXaW5kb3cgKil3aW5kb3cgc3RhcnRDdXN0b21BbmltYXRpb25Ub0V4aXRGdWxs
U2NyZWVuV2l0aER1cmF0aW9uOihOU1RpbWVJbnRlcnZhbClkdXJhdGlvbgoreworICAgIFtzZWxm
IF9zdGFydEV4aXRGdWxsU2NyZWVuQW5pbWF0aW9uV2l0aER1cmF0aW9uOmR1cmF0aW9uXTsKIH0K
IAorI3ByYWdtYSBtYXJrIC0KKyNwcmFnbWEgbWFyayBJbnRlcm5hbCBJbnRlcmZhY2UKKwogLSAo
V2ViUGFnZVByb3h5KilfcGFnZQogewogICAgIHJldHVybiB0b0ltcGwoW193ZWJWaWV3IHBhZ2VS
ZWZdKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>170259</attachid>
            <date>2012-10-23 16:03:03 -0700</date>
            <delta_ts>2012-10-23 16:21:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100025-20121023160140.patch</filename>
            <type>text/plain</type>
            <size>42986</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyMjc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDE0MTkzZDk2MDcwZjZi
YTUwY2QyNjQyNDM5YjAwNTliY2Q4OGQxNy4uYTc5MzU1YTEwYTg0MzhjMDUxM2E0MmMxMGZhNTQy
YzNlNGQ5OWUwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDEyLTEwLTIyICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtXSzJdIFtNYWNdIFdlYktp
dCBGdWxsIFNjcmVlbiBBUEkgc2hvdWxkIHVzZSBOU1dpbmRvdyBmdWxsIHNjcmVlbiBBUEkuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDAwMjUKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBzaGFy
ZWQgaW1wbGVtZW50YXRpb24gb2YgYSB3YXJuaW5nIHZpZXcgZm9yIHVzZSBpbiBXZWJLaXQgYW5k
IFdlYktpdDIuCisKKyAgICAgICAgQWRkIGEgbmV3IHNoYXJlZCBjbGFzcyBXZWJDb3JlRnVsbFNj
cmVlbldhcm5pbmdWaWV3IHdoaWNoIHByZXNlbnRzIGEgc3R5bGVkIHdhcm5pbmcgbWVzc2FnZS4K
KyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2ViQ29yZUZ1bGxTY3JlZW5XYXJuaW5nVmlldy5oOiBB
ZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2ViQ29yZUZ1bGxTY3JlZW5XYXJuaW5nVmll
dy5tbTogQWRkZWQuCisgICAgICAgICgtW1dlYkNvcmVGdWxsU2NyZWVuV2FybmluZ1ZpZXcgaW5p
dFdpdGhUaXRsZTpdKTogQ3JlYXRlIHRoZSB2aWV3LgorCisgICAgICAgIEFkZCBhIG5ldyBzaGFy
ZWQgY2xhc3MgV2ViQ29yZUZ1bGxTY3JlZW5QbGFjZWhvbGRlclZpZXcsIHdoaWNoIHByZXNlbnRz
IHRoZSBjb250ZW50cyBvZiB0aGUgCisgICAgICAgIFdlYlZpZXcgcHJpb3IgdG8gZnVsbCBzY3Jl
ZW4gd2l0aCBhIG1lc3NhZ2UgaW5mb3JtaW5nIHRoZSB1c2VyIGhvdyB0byBleGl0IGZyb20gZnVs
bCBzY3JlZW4gbW9kZS4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2ViQ29yZUZ1bGxTY3JlZW5Q
bGFjZWhvbGRlclZpZXcubW06CisgICAgICAgICgtW1dlYkNvcmVGdWxsU2NyZWVuUGxhY2Vob2xk
ZXJWaWV3IGluaXRXaXRoRnJhbWU6XSk6IENyZWF0ZSB0aGUgd2FybmluZyB2aWV3IGFuZCBzZXQg
dXAgdGhlIHBsYWNlaG9sZGVyIGxheWVyLgorICAgICAgICAoLVtXZWJDb3JlRnVsbFNjcmVlblBs
YWNlaG9sZGVyVmlldyBzZXRDb250ZW50czpdKTogUGFzcyBhbG9uZyB0byBjb250ZW50IHZpZXcg
bGF5ZXIuCisgICAgICAgICgtW1dlYkNvcmVGdWxsU2NyZWVuUGxhY2Vob2xkZXJWaWV3IGNvbnRl
bnRzXSk6IERpdHRvLgorICAgICAgICAoLVtXZWJDb3JlRnVsbFNjcmVlblBsYWNlaG9sZGVyVmll
dyBzZXRFeGl0V2FybmluZ1Zpc2libGU6XSk6IFNob3cgb3IgaGlkZSB0aGUgZXhpdCB3YXJuaW5n
LgorICAgICAgICAoLVtXZWJDb3JlRnVsbFNjcmVlblBsYWNlaG9sZGVyVmlldyBtb3VzZURvd246
XSk6IENhbGwgdGhlIHRhcmdldCB3aXRoIGFjdGlvbi4KKworICAgICAgICAgQWRkIGEgbG9jYWxp
emVkIHN0cmluZyBlbnRyeSBmb3IgdGhlICJjbGljayB0byBleGl0IiB0ZXh0OgorICAgICAgICAg
KiBFbmdsaXNoLmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3M6CisgICAgICAgICogcGxhdGZvcm0v
TG9jYWxpemVkU3RyaW5ncy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjbGlja1RvRXhpdEZ1bGxT
Y3JlZW5UZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmg6CisKKyAg
ICAgICAgQWRkIHRoZSBuZXcgZmlsZXMgdG8gdGhlIHByb2plY3QgYW5kIGV4cG9ydHMgbGlzdDoK
KyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisKIDIwMTItMTAtMjMgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNl
ckBhcHBsZS5jb20+CiAKICAgICAgICAgQWxsb3cgdGVzdHMgdG8gcnVuIHdpdGggYSB0aWxlIGNh
Y2hlLCBhbmQgb3B0aW9uYWxseSBkdW1wIHRoZSB0aWxlIGNhY2hlIHZpYSBsYXllclRyZWVBc1Rl
eHQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCmluZGV4IDRjMjY1NzRkOTQzNTcxYzlhZjlmMjFmOTJlYjU5NDk5ZjczZjY3
N2UuLjBjODEyYTdjOTA3MmU0OTMyNWEzMWYwOTNkMTI4YzQxYWE4NzdjOGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwzMCBAQAorMjAxMi0xMC0yMiAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxl
LmNvbT4KKworICAgICAgICBbV0syXSBbTWFjXSBXZWJLaXQgRnVsbCBTY3JlZW4gQVBJIHNob3Vs
ZCB1c2UgTlNXaW5kb3cgZnVsbCBzY3JlZW4gQVBJLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwMDI1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIHRoZSBOU1dpbmRvdyBmdWxsIHNjcmVlbiBBUEkg
d2hlbiB0YWtpbmcgdGhlIFdlYlZpZXcgZnVsbCBzY3JlZW4uIFRvIGZhY2lsaXR5IHRoZSBjYXNl
IHdoZXJlIHRoZSBicm93c2VyIHdpbmRvdyBpcyBhbHJlYWR5CisgICAgICAgIGluIGZ1bGwgc2Ny
ZWVuIG1vZGUsIG5vIGxvbmdlciBoaWRlIHRoZSBicm93c2VyIHdpbmRvdyB3aGVuIGVudGVyaW5n
IGZ1bGwgc2NyZWVuLiBJbnN0ZWFkLCBwcm92aWRlIGEgcGxhY2Vob2xkZXIgdmlldyB3aXRoIAor
ICAgICAgICBpbnN0cnVjdGlvbnMgdG8gY2xpY2sgdGhlIHBsYWNlaG9sZGVyIHRvIGV4aXQgZnVs
bCBzY3JlZW4uCisKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dLRnVsbFNjcmVlbldpbmRvd0Nv
bnRyb2xsZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dLRnVsbFNjcmVlbldpbmRvd0Nv
bnRyb2xsZXIubW06CisgICAgICAgICgtW1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIgaW5p
dF0pOiBTZXQgc2VsZiBhcyB0aGUgd2luZG93J3MgZGVsZWdhdGU7IGVuYWJsZSB3aW5kb3cncyBm
dWxsIHNjcmVlbiBhY3Rpb24uCisgICAgICAgICgtW1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xs
ZXIgYXBwbGljYXRpb25EaWRDaGFuZ2VTY3JlZW5QYXJhbWV0ZXJzOl0pOiBSZW1vdmUgcmVmZXJl
bmNlIHRvIF91cGRhdGVXaW5kb3dBbmREb2NrRm9yRnVsbFNjcmVlbi4KKyAgICAgICAgKC1bV0tG
dWxsU2NyZWVuV2luZG93Q29udHJvbGxlciBlbnRlckZ1bGxTY3JlZW46XSk6ICBEaXR0by4gQ3Jl
YXRlIGEgV0tGdWxsU2NyZWVuUGxhY2Vob2xkZXJWaWV3IGluc3RlYWQgb2YgZ2VuZXJpYyBOU0lt
YWdlVmlldy4KKyAgICAgICAgKC1bV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlciBiZWdhbkVu
dGVyRnVsbFNjcmVlbldpdGhJbml0aWFsRnJhbWU6ZmluYWxGcmFtZTpdKTogRGl0dG8uIENhbGwg
TlNXaW5kb3cgZW50ZXJGdWxsU2NyZWVuOiBBUEkuCisgICAgICAgICgtW1dLRnVsbFNjcmVlbldp
bmRvd0NvbnRyb2xsZXIgZmluaXNoZWRFbnRlckZ1bGxTY3JlZW5BbmltYXRpb246XSk6IFNob3cg
dGhlIHdhcm5pbmcgdmlldy4KKyAgICAgICAgKC1bV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxl
ciBleGl0RnVsbFNjcmVlbl0pOiBIaWRlIHRoZSB3YXJuaW5nIHZpZXcuCisgICAgICAgICgtW1dL
RnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIgYmVnYW5FeGl0RnVsbFNjcmVlbldpdGhJbml0aWFs
RnJhbWU6ZmluYWxGcmFtZTpdKTogQWRkIHNwZWNpYWwgY2FzZSB3aGVyZSB3ZSBhcmUgZXhpdGlu
ZworICAgICAgICAgICAgZnJvbSBmdWxsIHNjcmVlbiBtb2RlIHdoZW4gdGhlIGZ1bGwgc2NyZWVu
IHdpbmRvdyBpcyBub3Qgb24gc2NyZWVuLgorICAgICAgICAoLVtXS0Z1bGxTY3JlZW5XaW5kb3dD
b250cm9sbGVyIGZpbmlzaGVkRXhpdEZ1bGxTY3JlZW5BbmltYXRpb246XSk6IFJlbW92ZSByZWZl
cmVuY2UgdG8gX3VwZGF0ZU1lbnVBbmREb2NrRm9yRnVsbFNjcmVlbi4KKyAgICAgICAgKC1bV0tG
dWxsU2NyZWVuV2luZG93Q29udHJvbGxlciBjdXN0b21XaW5kb3dzVG9FbnRlckZ1bGxTY3JlZW5G
b3JXaW5kb3c6XSk6IEFkZGVkLiBSZXR1cm4gdGhlIGJhY2tncm91bmQgd2luZG93IGFuZCB0aGUg
ZnVsbCBzY3JlZW4gd2luZG93LgorICAgICAgICAoLVtXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9s
bGVyIGN1c3RvbVdpbmRvd3NUb0V4aXRGdWxsU2NyZWVuRm9yV2luZG93Ol0pOiBEaXR0by4KKyAg
ICAgICAgKC1bV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlciB3aW5kb3c6c3RhcnRDdXN0b21B
bmltYXRpb25Ub0VudGVyRnVsbFNjcmVlbldpdGhEdXJhdGlvbjpdKTogQWRkZWQuIENhbGwgdGhy
b3VnaCB0byBfc3RhcnRFbnRlckZ1bGxTY3JlZW5BbmltYXRpb25XaXRoRHVyYXRpb246CisgICAg
ICAgICgtW1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIgd2luZG93OnN0YXJ0Q3VzdG9tQW5p
bWF0aW9uVG9FeGl0RnVsbFNjcmVlbldpdGhEdXJhdGlvbjpdKTogQWRkZWQuIENhbGwgdGhyb3Vn
aCB0byBfc3RhcnRFeGl0RnVsbFNjcmVlbkFuaW1hdGlvbldpdGhEdXJhdGlvbjoKKwogMjAxMi0x
MC0yMyAgTm8nYW0gUm9zZW50aGFsICA8bm9hbS5yb3NlbnRoYWxAbm9raWEuY29tPgogCiAgICAg
ICAgIENvb3JkaW5hdGVkIEdyYXBoaWNzOiBFbmFibGUgdGhyZWFkZWQvSVBDIGFuaW1hdGlvbnMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0VuZ2xpc2gubHByb2ovTG9jYWxpemFibGUuc3Ry
aW5ncyBiL1NvdXJjZS9XZWJDb3JlL0VuZ2xpc2gubHByb2ovTG9jYWxpemFibGUuc3RyaW5ncwpp
bmRleCA0YzQzMTUwYTcxOWNhNzY4ZDY3YTVkYzcyZTgyNTk0NDhhNGUyODUxLi5mMGY2YzNhZjg1
OTYyODhiYWE3MDRjOGQ5NGZiZGY2MWRhNjdhZGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9FbmdsaXNoLmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3MKKysrIGIvU291cmNlL1dlYkNvcmUv
RW5nbGlzaC5scHJvai9Mb2NhbGl6YWJsZS5zdHJpbmdzCkBAIC04OTIsMyArODkyLDYgQEAKIC8q
IGFjY2Vzc2liaWxpdHkgcm9sZSBkZXNjcmlwdGlvbiBmb3IgdmlkZW8gZWxlbWVudCBjb250cm9s
bGVyICovCiAidmlkZW8gZWxlbWVudCBwbGF5YmFjayBjb250cm9scyBhbmQgc3RhdHVzIGRpc3Bs
YXkiID0gInZpZGVvIGVsZW1lbnQgcGxheWJhY2sgY29udHJvbHMgYW5kIHN0YXR1cyBkaXNwbGF5
IjsKIAorLyogTWVzc2FnZSB0byBkaXNwbGF5IGluIGJyb3dzZXIgd2luZG93IHdoZW4gaW4gd2Vi
a2l0IGZ1bGwgc2NyZWVuIG1vZGUuICovCisiQ2xpY2sgdG8gZXhpdCBmdWxsIHNjcmVlbiBtb2Rl
IiA9ICJDbGljayB0byBleGl0IGZ1bGwgc2NyZWVuIG1vZGUiOworCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmlu
CmluZGV4IDM1MTYzZTQ0OTFkYmI5OTMzNmI2ZDk2ZWQyMDhiYzQzOWJlYmJjYmQuLmQ5ZTQ2ZTZh
OTA4YTEzZGZhZDc2ZDQ0ODRjMWM1MDUxMTNkMDc5YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBA
IC0xNTc3LDYgKzE1NzcsOCBAQCBfd2tTaWduYWxDRlJlYWRTdHJlYW1IYXNCeXRlcwogLm9iamNf
Y2xhc3NfbmFtZV9ET01TdHlsZVNoZWV0CiAub2JqY19jbGFzc19uYW1lX0RPTVN0eWxlU2hlZXRM
aXN0CiAub2JqY19jbGFzc19uYW1lX0RPTVRyZWVXYWxrZXIKKy5vYmpjX2NsYXNzX25hbWVfV2Vi
Q29yZUZ1bGxTY3JlZW5QbGFjZWhvbGRlclZpZXcKKy5vYmpjX2NsYXNzX25hbWVfV2ViQ29yZUZ1
bGxTY3JlZW5XYXJuaW5nVmlldwogLm9iamNfY2xhc3NfbmFtZV9XZWJDb3JlRnVsbFNjcmVlbldp
bmRvdwogLm9iamNfY2xhc3NfbmFtZV9XZWJIVE1MQ29udmVydGVyCiAub2JqY19jbGFzc19uYW1l
X1dlYldpbmRvd0ZhZGVBbmltYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA2YzE1ODU2NmZhY2M2YjBjYzQ3YzRkM2I1OTQ3
NWI1NzMxNGZkYzljLi4zNWQwMjhkMjg4NzU5MjU5YWZkN2FkOTg5NWUwZTMzMmEzMGU5M2Y1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC01ODkzLDYgKzU4OTMsMTAgQEAKIAkJQ0RCODU5RjcxNjBENDhBNDAwRTVCMDdGIC8qIE1l
ZGlhS2V5RXZlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQ0RCODU5RjQxNjBENDg5OTAwRTVCMDdGIC8qIE1lZGlhS2V5RXZlbnQuY3BwICovOyB9
OwogCQlDREI4NTlGQTE2MEQ0OTQ5MDBFNUIwN0YgLyogSlNNZWRpYUtleUV2ZW50LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQjg1OUY4MTYwRDQ5
M0UwMEU1QjA3RiAvKiBKU01lZGlhS2V5RXZlbnQuY3BwICovOyB9OwogCQlDREI4NTlGQjE2MEQ0
OTRGMDBFNUIwN0YgLyogSlNNZWRpYUtleUVycm9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQjg1OUYwMTYwRDQyREQwMEU1QjA3RiAvKiBKU01l
ZGlhS2V5RXJyb3IuY3BwICovOyB9OworCQlDREM2OURENjE2MzIwMjZDMDA3QzM4REYgLyogV2Vi
Q29yZUZ1bGxTY3JlZW5XYXJuaW5nVmlldy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQ0RDNjlERDQxNjMyMDI2QzAwN0MzOERGIC8qIFdlYkNvcmVGdWxs
U2NyZWVuV2FybmluZ1ZpZXcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQlDREM2OURENzE2MzIwMjZDMDA3QzM4REYgLyogV2ViQ29yZUZ1bGxTY3Jl
ZW5XYXJuaW5nVmlldy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IENEQzY5REQ1MTYzMjAyNkMwMDdDMzhERiAvKiBXZWJDb3JlRnVsbFNjcmVlbldhcm5p
bmdWaWV3Lm1tICovOyB9OworCQlDREM2OUREQTE2MzcxRkQ0MDA3QzM4REYgLyogV2ViQ29yZUZ1
bGxTY3JlZW5QbGFjZWhvbGRlclZpZXcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IENEQzY5REQ4MTYzNzFGRDMwMDdDMzhERiAvKiBXZWJDb3JlRnVsbFNj
cmVlblBsYWNlaG9sZGVyVmlldy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCUNEQzY5RERCMTYzNzFGRDQwMDdDMzhERiAvKiBXZWJDb3JlRnVsbFNj
cmVlblBsYWNlaG9sZGVyVmlldy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IENEQzY5REQ5MTYzNzFGRDMwMDdDMzhERiAvKiBXZWJDb3JlRnVsbFNjcmVl
blBsYWNlaG9sZGVyVmlldy5tbSAqLzsgfTsKIAkJQ0RENTI1RDcxNDVCNkREMDAwOEQyMDREIC8q
IEpTSFRNTE1lZGlhRWxlbWVudEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDREY2NUNDQzE0NUI2QUZFMDBDNEM3QUEgLyogSlNIVE1MTWVk
aWFFbGVtZW50Q3VzdG9tLmNwcCAqLzsgfTsKIAkJQ0RFQTc2MzAxNDYwOEE1MzAwOEIzMUYxIC8q
IFBsYXRmb3JtQ2xvY2tDQS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDREVBNzYyRTE0NjA4NERFMDA4QjMxRjEgLyogUGxhdGZvcm1DbG9ja0NBLmNw
cCAqLzsgfTsKIAkJQ0RFQTc2MzQxNDYwQjU2RjAwOEIzMUYxIC8qIENsb2NrR2VuZXJpYy5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREVBNzYzMjE0
NjBBRTI5MDA4QjMxRjEgLyogQ2xvY2tHZW5lcmljLmNwcCAqLzsgfTsKQEAgLTg2OTEsNiArODY5
NSw4IEBACiAJCTUwM0QwQ0E4MTRCNUIwODcwMEYzMkY1NyAvKiBDdXN0b21GaWx0ZXJQcm9ncmFt
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEN1c3RvbUZpbHRlclByb2dyYW0u
aDsgcGF0aCA9IGZpbHRlcnMvQ3VzdG9tRmlsdGVyUHJvZ3JhbS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1MDNEMENBOTE0QjVCMDg3MDBGMzJGNTcgLyogQ3VzdG9tRmlsdGVyUHJv
Z3JhbUNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBDdXN0b21GaWx0
ZXJQcm9ncmFtQ2xpZW50Lmg7IHBhdGggPSBmaWx0ZXJzL0N1c3RvbUZpbHRlclByb2dyYW1DbGll
bnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTAzRDBDQUQxNEI1QjBCQTAwRjMy
RjU3IC8qIFN0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBTdHlsZUN1c3RvbUZpbHRlclByb2dyYW0uaDsgcGF0aCA9IHN0eWxlL1N0eWxl
Q3VzdG9tRmlsdGVyUHJvZ3JhbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MDgx
RTNERjNDRkM4MEMxNkVGOEI0OEIgLyogQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYWNoZWRSZXNvdXJjZVJlcXVlc3QuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MDgxRTNFMTNEMDI4MEMxNkVGOEI0OEIg
LyogQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBDYWNoZWRSZXNvdXJjZVJlcXVlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTA4Q0NBNEQxM0NGMTA2QjAwMzE1MUYzIC8qIFJlbmRlckZsb3dUaHJlYWQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyRmxvd1RocmVhZC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1MDhDQ0E0RTEzQ0YxMDZCMDAzMTUxRjMgLyogUmVuZGVyRmxv
d1RocmVhZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJG
bG93VGhyZWFkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTA5ODdDMjQxNTdE
Njc2RDAwQkRBODM1IC8qIEN1c3RvbUZpbHRlckdsb2JhbENvbnRleHQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQ3VzdG9tRmlsdGVyR2xvYmFsQ29udGV4dC5jcHA7
IHBhdGggPSBmaWx0ZXJzL0N1c3RvbUZpbHRlckdsb2JhbENvbnRleHQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMTI5NjUsOCArMTI5NzEsNiBAQAogCQlCQ0IxNkMwRjA5NzlD
M0JEMDA0Njc3NDEgLyogQ2FjaGVkWFNMU3R5bGVTaGVldC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQ2FjaGVkWFNMU3R5bGVTaGVldC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlCQ0IxNkMxMDA5NzlDM0JEMDA0Njc3NDEgLyogQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENhY2hlZFJlc291
cmNlTG9hZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNCMTZDMTEwOTc5
QzNCRDAwNDY3NzQxIC8qIENhY2hlZFJlc291cmNlTG9hZGVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBDYWNoZWRSZXNvdXJjZUxvYWRlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQk1MDgxRTNERjNDRkM4MEMxNkVGOEI0OEIgLyogQ2FjaGVkUmVzb3VyY2VS
ZXF1ZXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYWNoZWRS
ZXNvdXJjZVJlcXVlc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MDgxRTNF
MTNEMDI4MEMxNkVGOEI0OEIgLyogQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBDYWNoZWRSZXNvdXJjZVJlcXVlc3QuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNCNzczNUUwQzE3ODUzRDAwMTMyQkE0IC8qIEpTTm9kZUZp
bHRlckNvbmRpdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SlNOb2RlRmlsdGVyQ29uZGl0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QkNCNzczNUYwQzE3ODUzRDAwMTMyQkE0IC8qIEpTTm9kZUZpbHRlckNvbmRpdGlvbi5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNOb2RlRmlsdGVyQ29uZGl0aW9uLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDQjc3MzYwMEMxNzg1M0QwMDEzMkJBNCAvKiBK
U05vZGVGaWx0ZXJDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEpTTm9kZUZpbHRlckN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0xMzI2Niw2ICsxMzI3MCwxMCBAQAogCQlDREI4NTlGODE2MEQ0OTNFMDBFNUIwN0YgLyogSlNN
ZWRpYUtleUV2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
TWVkaWFLZXlFdmVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEQjg1OUY5
MTYwRDQ5M0UwMEU1QjA3RiAvKiBKU01lZGlhS2V5RXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSlNNZWRpYUtleUV2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUNEQkQ5M0JBMTMzM0JENEIwMDI1NzBFMyAvKiBmdWxsc2NyZWVuUXVpY2tUaW1lLmNz
cyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQuY3NzOyBwYXRoID0gZnVsbHNjcmVlblF1aWNrVGltZS5jc3M7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQzY5REQ0MTYzMjAyNkMwMDdDMzhERiAvKiBX
ZWJDb3JlRnVsbFNjcmVlbldhcm5pbmdWaWV3LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdlYkNvcmVGdWxsU2NyZWVuV2FybmluZ1ZpZXcuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQ0RDNjlERDUxNjMyMDI2QzAwN0MzOERGIC8qIFdlYkNvcmVGdWxsU2NyZWVu
V2FybmluZ1ZpZXcubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBX
ZWJDb3JlRnVsbFNjcmVlbldhcm5pbmdWaWV3Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlDREM2OUREODE2MzcxRkQzMDA3QzM4REYgLyogV2ViQ29yZUZ1bGxTY3JlZW5QbGFjZWhv
bGRlclZpZXcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29yZUZ1bGxT
Y3JlZW5QbGFjZWhvbGRlclZpZXcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RD
NjlERDkxNjM3MUZEMzAwN0MzOERGIC8qIFdlYkNvcmVGdWxsU2NyZWVuUGxhY2Vob2xkZXJWaWV3
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViQ29yZUZ1bGxT
Y3JlZW5QbGFjZWhvbGRlclZpZXcubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNE
Q0U1Q0QwMTQ2MzNCQzkwMEQ0N0NDQSAvKiBFdmVudFRhcmdldEZhY3RvcnkuaW4gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0OyBwYXRoID0gRXZlbnRUYXJnZXRGYWN0b3J5LmluOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlDREVBNzYyQzE0NjA4MjI0MDA4QjMxRjEgLyogQ2xvY2suaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2xvY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQ0RFQTc2MkUxNDYwODRERTAwOEIzMUYxIC8qIFBsYXRmb3JtQ2xvY2tDQS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQbGF0Zm9ybUNsb2NrQ0EuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTU3NjAsNiArMTU3NjgsMTAgQEAKIAkJCQlC
Q0U2NTlFNTBFQTkyRkIyMDA3RTQ1MzMgLyogVGhlbWVNYWMuaCAqLywKIAkJCQlCQ0U2NTlFODBF
QTkyRkZBMDA3RTQ1MzMgLyogVGhlbWVNYWMubW0gKi8sCiAJCQkJNTFERjZEN0YwQjkyQTE4RTAw
QzJEQzg1IC8qIFRocmVhZENoZWNrLm1tICovLAorCQkJCUNEQzY5REQ4MTYzNzFGRDMwMDdDMzhE
RiAvKiBXZWJDb3JlRnVsbFNjcmVlblBsYWNlaG9sZGVyVmlldy5oICovLAorCQkJCUNEQzY5REQ5
MTYzNzFGRDMwMDdDMzhERiAvKiBXZWJDb3JlRnVsbFNjcmVlblBsYWNlaG9sZGVyVmlldy5tbSAq
LywKKwkJCQlDREM2OURENDE2MzIwMjZDMDA3QzM4REYgLyogV2ViQ29yZUZ1bGxTY3JlZW5XYXJu
aW5nVmlldy5oICovLAorCQkJCUNEQzY5REQ1MTYzMjAyNkMwMDdDMzhERiAvKiBXZWJDb3JlRnVs
bFNjcmVlbldhcm5pbmdWaWV3Lm1tICovLAogCQkJCUNEMTI3REVBMTRGMzA5NzkwMEU4NDc3OSAv
KiBXZWJDb3JlRnVsbFNjcmVlbldpbmRvdy5oICovLAogCQkJCUNEMTI3REVCMTRGMzA5NzkwMEU4
NDc3OSAvKiBXZWJDb3JlRnVsbFNjcmVlbldpbmRvdy5tbSAqLywKIAkJCQkzNzE5NDE5NTE1NjZC
MzcyMDBBMjc2RDggLyogV2ViQ29yZU5TQ2VsbEV4dHJhcy5oICovLApAQCAtMjU0ODgsNiArMjU1
MDAsNyBAQAogCQkJCUZENTgxRkI1MTUyMEY5M0IwMDNBN0E3NSAvKiBXYXZlVGFibGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTI5QTgxMjQ5MEZCQjlDQTkwMDUxMDI5MyAvKiBXZWJBY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNGMTk5QTgwODI0NUU1OTAw
MUU5QUJDIC8qIFdlYkNvcmVGcmFtZVZpZXcuaCBpbiBIZWFkZXJzICovLAorCQkJCUNEQzY5REQ2
MTYzMjAyNkMwMDdDMzhERiAvKiBXZWJDb3JlRnVsbFNjcmVlbldhcm5pbmdWaWV3LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlDRDEyN0RFRTE0RjMwOTg0MDBFODQ3NzkgLyogV2ViQ29yZUZ1bGxTY3Jl
ZW5XaW5kb3cuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNTNEOTExMTE0MzEwQ0MwMDBEODE3RSAv
KiBXZWJDb3JlSlNDbGllbnREYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0YxOTlCQjA4MjQ1
RTU5MDAxRTlBQkMgLyogV2ViQ29yZUtleWJvYXJkVUlNb2RlLmggaW4gSGVhZGVycyAqLywKQEAg
LTI1NjQ5LDYgKzI1NjYyLDcgQEAKIAkJCQk3RTVEN0E3NzE2MUQzRjhGMDA4OTZDMzQgLyogT0VT
RWxlbWVudEluZGV4VWludC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0U0NkY2RkIxNjI3QTJDQTAw
MDYyMjIzIC8qIEpTT0VTRWxlbWVudEluZGV4VWludC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQ3
MTI3Q0IxNjM0MzhBRTAwRUQ2RjVBIC8qIFN0eWxlSW52YWxpZGF0aW9uQW5hbHlzaXMuaCBpbiBI
ZWFkZXJzICovLAorCQkJCUNEQzY5RERBMTYzNzFGRDQwMDdDMzhERiAvKiBXZWJDb3JlRnVsbFNj
cmVlblBsYWNlaG9sZGVyVmlldy5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZv
ckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yODYxNSw2ICsyODYyOSw3
IEBACiAJCQkJRkQ3RjI5OTYxM0Q0QzBDQjAwQUQ5NTM1IC8qIFdhdmVTaGFwZXJQcm9jZXNzb3Iu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkQ1ODFGQjQxNTIwRjkzQjAwM0E3QTc1IC8qIFdhdmVU
YWJsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyOUE4MTI0QTBGQkI5Q0E5MDA1MTAyOTMgLyog
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIubW0gaW4gU291cmNlcyAqLywKKwkJCQlDREM2
OURENzE2MzIwMjZDMDA3QzM4REYgLyogV2ViQ29yZUZ1bGxTY3JlZW5XYXJuaW5nVmlldy5tbSBp
biBTb3VyY2VzICovLAogCQkJCUNEMTI3REVEMTRGMzA5N0QwMEU4NDc3OSAvKiBXZWJDb3JlRnVs
bFNjcmVlbldpbmRvdy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUYzQkZDOUQzMTVDMTc3RUMwMDQy
NDRFNSAvKiBXZWJDb3JlTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTM3MTk0MTk2MTU2NkIzNzIwMEEyNzZEOCAvKiBXZWJDb3JlTlNDZWxsRXh0cmFzLm0gaW4g
U291cmNlcyAqLywKQEAgLTI4NzYwLDYgKzI4Nzc1LDcgQEAKIAkJCQk3RTVEN0E3NjE2MUQzRjhG
MDA4OTZDMzQgLyogT0VTRWxlbWVudEluZGV4VWludC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3
RTQ2RjZGQTE2MjdBMkNBMDAwNjIyMjMgLyogSlNPRVNFbGVtZW50SW5kZXhVaW50LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUU0NzEyN0NBMTYzNDM4QTEwMEVENkY1QSAvKiBTdHlsZUludmFsaWRh
dGlvbkFuYWx5c2lzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUNEQzY5RERCMTYzNzFGRDQwMDdD
MzhERiAvKiBXZWJDb3JlRnVsbFNjcmVlblBsYWNlaG9sZGVyVmlldy5tbSBpbiBTb3VyY2VzICov
LAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmNwcAppbmRleCBh
YmYxYmNhNWU4NTQxMGJhODdkNWNhYjgyNTAwZDk2OWYxMDkyNmE3Li42MzhjMDU1YTI2NjllZDBh
MWZjY2RlZDUxMGY2NjVkYWQ3MTY4OGViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9M
b2NhbGl6ZWRTdHJpbmdzLmNwcApAQCAtOTg1LDQgKzk4NSw5IEBAIFN0cmluZyB2YWxpZGF0aW9u
TWVzc2FnZVN0ZXBNaXNtYXRjaFRleHQoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJikKICAg
ICByZXR1cm4gV0VCX1VJX1NUUklORygic3RlcCBtaXNtYXRjaCIsICJWYWxpZGF0aW9uIG1lc3Nh
Z2UgZm9yIGlucHV0IGZvcm0gY29udHJvbHMgd2l0aCB2YWx1ZSBub3QgcmVzcGVjdGluZyB0aGUg
c3RlcCBhdHRyaWJ1dGUiKTsKIH0KIAorU3RyaW5nIGNsaWNrVG9FeGl0RnVsbFNjcmVlblRleHQo
KQoreworICAgIHJldHVybiBXRUJfVUlfU1RSSU5HKCJDbGljayB0byBleGl0IGZ1bGwgc2NyZWVu
IG1vZGUiLCAiTWVzc2FnZSB0byBkaXNwbGF5IGluIGJyb3dzZXIgd2luZG93IHdoZW4gaW4gd2Vi
a2l0IGZ1bGwgc2NyZWVuIG1vZGUuIik7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuaAppbmRleCA4YzU2ZmUxZDVj
ZmMyNDc5OTZjOTA4MjY0YzNmOTcxMjQwMTM1NDVjLi5lM2YzMzBhNDU4ODJhMmFlZWQ0MjVlMDQ2
MWYyMjcyYTcxNjJlOGRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2Nh
bGl6ZWRTdHJpbmdzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9jYWxpemVkU3Ry
aW5ncy5oCkBAIC0yNTcsNiArMjU3LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIFN0cmlu
ZyB1bmFjY2VwdGFibGVUTFNDZXJ0aWZpY2F0ZSgpOwogI2VuZGlmCiAKKyAgICBTdHJpbmcgY2xp
Y2tUb0V4aXRGdWxsU2NyZWVuVGV4dCgpOworCiAjaWYgIVBMQVRGT1JNKENIUk9NSVVNKQogI2Rl
ZmluZSBXRUJfVUlfU1RSSU5HKHN0cmluZywgZGVzY3JpcHRpb24pIFdlYkNvcmU6OmxvY2FsaXpl
ZFN0cmluZyhzdHJpbmcpCiAjZGVmaW5lIFdFQl9VSV9TVFJJTkdfS0VZKHN0cmluZywga2V5LCBk
ZXNjcmlwdGlvbikgV2ViQ29yZTo6bG9jYWxpemVkU3RyaW5nKGtleSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlRnVsbFNjcmVlblBsYWNlaG9sZGVyVmll
dy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVGdWxsU2NyZWVuUGxhY2Vo
b2xkZXJWaWV3LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2IyNDNiMGEyZjI0YzIwNTczN2FhMzk3OGQxYThjNmFl
NGRjNDRjMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9X
ZWJDb3JlRnVsbFNjcmVlblBsYWNlaG9sZGVyVmlldy5oCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWZuZGVmIFdlYkNvcmVGdWxsU2NyZWVuUGxhY2Vob2xkZXJWaWV3X2gKKyNkZWZp
bmUgV2ViQ29yZUZ1bGxTY3JlZW5QbGFjZWhvbGRlclZpZXdfaAorCisjaW1wb3J0IDx3dGYvUmV0
YWluUHRyLmg+CisKK0BpbnRlcmZhY2UgV2ViQ29yZUZ1bGxTY3JlZW5QbGFjZWhvbGRlclZpZXcg
OiBOU1ZpZXcgeworICAgIFJldGFpblB0cjxOU1ZpZXc+IF9leGl0V2FybmluZzsKKyAgICBOU09i
amVjdCogX3RhcmdldDsKKyAgICBTRUwgX2FjdGlvbjsKK30KK0Bwcm9wZXJ0eShyZXRhaW4pIGlk
IGNvbnRlbnRzOworQHByb3BlcnR5KGFzc2lnbikgTlNPYmplY3QqIHRhcmdldDsKK0Bwcm9wZXJ0
eShhc3NpZ24pIFNFTCBhY3Rpb247CistICh2b2lkKXNldEV4aXRXYXJuaW5nVmlzaWJsZTooQk9P
TCl2aXNpYmxlOworQGVuZAorCisjZW5kaWYgLy8gV2ViQ29yZUZ1bGxTY3JlZW5QbGFjZWhvbGRl
clZpZXdfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVG
dWxsU2NyZWVuUGxhY2Vob2xkZXJWaWV3Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1dlYkNvcmVGdWxsU2NyZWVuUGxhY2Vob2xkZXJWaWV3Lm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY5MjEwMjQ5
NWQyYWJmMWVmN2RmNTEyZTVkNDIxMDcyZDNjMDRlNzcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZUZ1bGxTY3JlZW5QbGFjZWhvbGRlclZpZXcu
bW0KQEAgLTAsMCArMSw5NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJXZWJDb3JlRnVsbFNjcmVlblBsYWNlaG9sZGVyVmlldy5oIgorCisjaW5jbHVkZSAi
TG9jYWxpemVkU3RyaW5ncy5oIgorI2luY2x1ZGUgIldlYkNvcmVGdWxsU2NyZWVuV2FybmluZ1Zp
ZXcuaCIKKyNpbmNsdWRlIDxRdWFydHpDb3JlL0NvcmVJbWFnZS5oPgorI2luY2x1ZGUgPHd0Zi9V
bnVzZWRQYXJhbS5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCit1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKKworQGltcGxlbWVudGF0aW9uIFdlYkNvcmVGdWxsU2NyZWVuUGxh
Y2Vob2xkZXJWaWV3CistIChpZClpbml0V2l0aEZyYW1lOihOU1JlY3QpZnJhbWVSZWN0Cit7Cisg
ICAgc2VsZiA9IFtzdXBlciBpbml0V2l0aEZyYW1lOmZyYW1lUmVjdF07CisgICAgaWYgKCFzZWxm
KQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgW3NlbGYgc2V0TGF5ZXI6W0NBTGF5ZXIgbGF5
ZXJdXTsKKyAgICBbc2VsZiBzZXRMYXllckNvbnRlbnRzUmVkcmF3UG9saWN5Ok5TVmlld0xheWVy
Q29udGVudHNSZWRyYXdOZXZlcl07CisgICAgW3NlbGYgc2V0V2FudHNMYXllcjpZRVNdOworCisg
ICAgX2V4aXRXYXJuaW5nID0gYWRvcHROUyhbW1dlYkNvcmVGdWxsU2NyZWVuV2FybmluZ1ZpZXcg
YWxsb2NdIGluaXRXaXRoVGl0bGU6Y2xpY2tUb0V4aXRGdWxsU2NyZWVuVGV4dCgpXSk7CisgICAg
TlNSZWN0IHdhcm5pbmdGcmFtZSA9IFtfZXhpdFdhcm5pbmcuZ2V0KCkgZnJhbWVdOworICAgIHdh
cm5pbmdGcmFtZS5vcmlnaW4gPSBOU01ha2VQb2ludCgKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKGZyYW1lUmVjdC5zaXplLndpZHRoIC0gd2FybmluZ0ZyYW1lLnNpemUu
d2lkdGgpIC8gMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZyYW1l
UmVjdC5zaXplLmhlaWdodCAtIHdhcm5pbmdGcmFtZS5zaXplLmhlaWdodCkgLyAyKTsKKyAgICBb
X2V4aXRXYXJuaW5nLmdldCgpIHNldEZyYW1lOndhcm5pbmdGcmFtZV07CisgICAgW19leGl0V2Fy
bmluZy5nZXQoKSBzZXRIaWRkZW46WUVTXTsKKyAgICBbc2VsZiBhZGRTdWJ2aWV3Ol9leGl0V2Fy
bmluZy5nZXQoKV07CisKKyAgICByZXR1cm4gc2VsZjsKK30KKworQHN5bnRoZXNpemUgdGFyZ2V0
ID0gX3RhcmdldDsKK0BzeW50aGVzaXplIGFjdGlvbiA9IF9hY3Rpb247CisKK0BkeW5hbWljIGNv
bnRlbnRzOworLSAodm9pZClzZXRDb250ZW50czooaWQpY29udGVudHMKK3sKKyAgICBbW3NlbGYg
bGF5ZXJdIHNldENvbnRlbnRzOmNvbnRlbnRzXTsKK30KKworLSAoaWQpY29udGVudHMKK3sKKyAg
ICByZXR1cm4gW1tzZWxmIGxheWVyXSBjb250ZW50c107Cit9CisKKy0gKHZvaWQpc2V0RXhpdFdh
cm5pbmdWaXNpYmxlOihCT09MKXZpc2libGUKK3sKKyAgICBbX2V4aXRXYXJuaW5nLmdldCgpIHNl
dEhpZGRlbjohdmlzaWJsZV07CisgICAgaWYgKHZpc2libGUpIHsKKyAgICAgICAgQ0lGaWx0ZXIq
IGZpbHRlciA9IFtDSUZpbHRlciBmaWx0ZXJXaXRoTmFtZTpAIkNJRmFsc2VDb2xvciIga2V5c0Fu
ZFZhbHVlczoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBAImlucHV0Q29sb3IwIiwgW0NJ
Q29sb3IgY29sb3JXaXRoUmVkOjAgZ3JlZW46MCBibHVlOjBdLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEAiaW5wdXRDb2xvcjEiLCBbQ0lDb2xvciBjb2xvcldpdGhSZWQ6LjkgZ3JlZW46
LjkgYmx1ZTouOV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlsXTsKKyAgICAgICAg
W1tzZWxmIGxheWVyXSBzZXRDb21wb3NpdGluZ0ZpbHRlcjpmaWx0ZXJdOworICAgIH0gZWxzZQor
ICAgICAgICBbW3NlbGYgbGF5ZXJdIHNldENvbXBvc2l0aW5nRmlsdGVyOm5pbF07Cit9CisKKy0g
KHZvaWQpbW91c2VEb3duOihOU0V2ZW50ICopdGhlRXZlbnQKK3sKKyAgICBVTlVTRURfUEFSQU0o
dGhlRXZlbnQpOworCisgICAgaWYgKCFfdGFyZ2V0IHx8ICFfYWN0aW9uKQorICAgICAgICByZXR1
cm47CisgICAgW190YXJnZXQgcGVyZm9ybVNlbGVjdG9yOl9hY3Rpb25dOworfQorCitAZW5kCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZUZ1bGxTY3JlZW5X
YXJuaW5nVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVGdWxsU2Ny
ZWVuV2FybmluZ1ZpZXcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNmVhOWFkNzg0ZWFlMmRlMDk1ZDFlMzBlZGQ3
YzBjNTRmYTZjY2NkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1dlYkNvcmVGdWxsU2NyZWVuV2FybmluZ1ZpZXcuaApAQCAtMCwwICsxLDQxIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBXZWJDb3JlRnVsbFNjcmVlbldhcm5pbmdWaWV3X2gKKyNkZWZpbmUg
V2ViQ29yZUZ1bGxTY3JlZW5XYXJuaW5nVmlld19oCisKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9B
UEkpCisKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisKK0BpbnRlcmZhY2UgIFdlYkNvcmVG
dWxsU2NyZWVuV2FybmluZ1ZpZXcgOiBOU0JveCB7CisgICAgUmV0YWluUHRyPE5TVGV4dEZpZWxk
PiBfdGV4dEZpZWxkOworfQorLSAoaWQpaW5pdFdpdGhUaXRsZTooTlNTdHJpbmcqKXRpdGxlOwor
QGVuZAorCisjZW5kaWYKKworI2VuZGlmIC8vIFdlYkNvcmVGdWxsU2NyZWVuV2FybmluZ1ZpZXdf
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVGdWxsU2Ny
ZWVuV2FybmluZ1ZpZXcubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZUZ1
bGxTY3JlZW5XYXJuaW5nVmlldy5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZWQ5OGMxODkxZTY0NWMwNWZiNDFm
NTIxY2U4YTY5NmNhZDZkY2QzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1dlYkNvcmVGdWxsU2NyZWVuV2FybmluZ1ZpZXcubW0KQEAgLTAsMCArMSwxMDcg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViQ29yZUZ1
bGxTY3JlZW5XYXJuaW5nVmlldy5oIgorI2luY2x1ZGUgIkxvY2FsaXplZFN0cmluZ3MuaCIKKyNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworc3RhdGljIGNvbnN0IENHRmxvYXQgV2Fy
bmluZ1ZpZXdUZXh0V2hpdGUgPSAwLjk7CitzdGF0aWMgY29uc3QgQ0dGbG9hdCBXYXJuaW5nVmll
d1RleHRBbHBoYSA9IDE7CitzdGF0aWMgY29uc3QgQ0dGbG9hdCBXYXJuaW5nVmlld1RleHRTaXpl
ID0gNDg7CitzdGF0aWMgY29uc3QgQ0dGbG9hdCBXYXJuaW5nVmlld1BhZGRpbmcgPSAyMDsKK3N0
YXRpYyBjb25zdCBDR0Zsb2F0IFdhcm5pbmdWaWV3Q29ybmVyUmFkaXVzID0gMTA7CitzdGF0aWMg
Y29uc3QgQ0dGbG9hdCBXYXJuaW5nVmlld0JvcmRlcldoaXRlID0gMC45Oworc3RhdGljIGNvbnN0
IENHRmxvYXQgV2FybmluZ1ZpZXdCb3JkZXJBbHBoYSA9IDAuMjsKK3N0YXRpYyBjb25zdCBDR0Zs
b2F0IFdhcm5pbmdWaWV3QmFja2dyb3VuZFdoaXRlID0gMC4xOworc3RhdGljIGNvbnN0IENHRmxv
YXQgV2FybmluZ1ZpZXdCYWNrZ3JvdW5kQWxwaGEgPSAwLjk7CitzdGF0aWMgY29uc3QgQ0dGbG9h
dCBXYXJuaW5nVmlld1NoYWRvd1doaXRlID0gMC4xOworc3RhdGljIGNvbnN0IENHRmxvYXQgV2Fy
bmluZ1ZpZXdTaGFkb3dBbHBoYSA9IDE7CitzdGF0aWMgY29uc3QgZmxvYXQgV2FybmluZ1ZpZXdT
aGFkb3dPcGFjaXR5ID0gMC4yNTsKK3N0YXRpYyBjb25zdCBDR1NpemUgV2FybmluZ1ZpZXdTaGFk
b3dPZmZzZXQgPSB7MCwgLTJ9Oworc3RhdGljIGNvbnN0IENHRmxvYXQgV2FybmluZ1ZpZXdTaGFk
b3dSYWRpdXMgPSA1Oworc3RhdGljIGNvbnN0IE5TVGltZUludGVydmFsIFdhcm5pbmdWaWV3SGlk
ZURlbGF5ID0gMy4wOworc3RhdGljIGNvbnN0IE5TVGltZUludGVydmFsIFdhcm5pbmdWaWV3RmFk
ZUR1cmF0aW9uID0gMC41OworCitAaW1wbGVtZW50YXRpb24gV2ViQ29yZUZ1bGxTY3JlZW5XYXJu
aW5nVmlldworCistIChpZClpbml0V2l0aFRpdGxlOihOU1N0cmluZyopdGl0bGUKK3sKKyAgICBz
ZWxmID0gW3N1cGVyIGluaXRXaXRoRnJhbWU6TlNaZXJvUmVjdF07CisgICAgaWYgKCFzZWxmKQor
ICAgICAgICByZXR1cm4gbmlsOworCisgICAgW3NlbGYgc2V0QXV0b3Jlc2l6aW5nTWFzazooTlNW
aWV3TWluWE1hcmdpbiB8IE5TVmlld01heFhNYXJnaW4gfCBOU1ZpZXdNaW5ZTWFyZ2luIHwgTlNW
aWV3TWF4WU1hcmdpbildOworICAgIFtzZWxmIHNldEJveFR5cGU6TlNCb3hDdXN0b21dOworICAg
IFtzZWxmIHNldFRpdGxlUG9zaXRpb246TlNOb1RpdGxlXTsKKworICAgIF90ZXh0RmllbGQgPSBh
ZG9wdE5TKFtbTlNUZXh0RmllbGQgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNaZXJvUmVjdF0pOwor
ICAgIFtfdGV4dEZpZWxkLmdldCgpIHNldEVkaXRhYmxlOk5PXTsKKyAgICBbX3RleHRGaWVsZC5n
ZXQoKSBzZXRTZWxlY3RhYmxlOk5PXTsKKyAgICBbX3RleHRGaWVsZC5nZXQoKSBzZXRCb3JkZXJl
ZDpOT107CisgICAgW190ZXh0RmllbGQuZ2V0KCkgc2V0RHJhd3NCYWNrZ3JvdW5kOk5PXTsKKwor
ICAgIFJldGFpblB0cjxOU0ZvbnQ+IHRleHRGb250ID0gW05TRm9udCBib2xkU3lzdGVtRm9udE9m
U2l6ZTpXYXJuaW5nVmlld1RleHRTaXplXTsKKyAgICBSZXRhaW5QdHI8TlNDb2xvcj4gdGV4dENv
bG9yID0gW05TQ29sb3IgY29sb3JXaXRoQ2FsaWJyYXRlZFdoaXRlOldhcm5pbmdWaWV3VGV4dFdo
aXRlIGFscGhhOldhcm5pbmdWaWV3VGV4dEFscGhhXTsKKyAgICBSZXRhaW5QdHI8TlNEaWN0aW9u
YXJ5PiBhdHRyaWJ1dGVzID0gYWRvcHROUyhbW05TRGljdGlvbmFyeSBhbGxvY10gaW5pdFdpdGhP
YmplY3RzQW5kS2V5czoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdGV4dEZvbnQuZ2V0KCksIE5TRm9udEF0dHJpYnV0ZU5hbWUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRDb2xvci5nZXQoKSwg
TlNGb3JlZ3JvdW5kQ29sb3JBdHRyaWJ1dGVOYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBuaWxdKTsKKyAgICBSZXRhaW5QdHI8TlNBdHRyaWJ1
dGVkU3RyaW5nPiB0ZXh0ID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5p
dFdpdGhTdHJpbmc6dGl0bGUgYXR0cmlidXRlczphdHRyaWJ1dGVzLmdldCgpXSk7CisgICAgW190
ZXh0RmllbGQuZ2V0KCkgc2V0QXR0cmlidXRlZFN0cmluZ1ZhbHVlOnRleHQuZ2V0KCldOworICAg
IFtfdGV4dEZpZWxkLmdldCgpIHNpemVUb0ZpdF07CisgICAgTlNSZWN0IHRleHRGaWVsZEZyYW1l
ID0gW190ZXh0RmllbGQuZ2V0KCkgZnJhbWVdOworICAgIE5TU2l6ZSBmcmFtZVNpemUgPSB0ZXh0
RmllbGRGcmFtZS5zaXplOworICAgIGZyYW1lU2l6ZS53aWR0aCArPSBXYXJuaW5nVmlld1BhZGRp
bmcgKiAyOworICAgIGZyYW1lU2l6ZS5oZWlnaHQgKz0gV2FybmluZ1ZpZXdQYWRkaW5nICogMjsK
KyAgICBbc2VsZiBzZXRGcmFtZVNpemU6ZnJhbWVTaXplXTsKKworICAgIHRleHRGaWVsZEZyYW1l
Lm9yaWdpbiA9IE5TTWFrZVBvaW50KAorICAgICAgICAoZnJhbWVTaXplLndpZHRoIC0gdGV4dEZp
ZWxkRnJhbWUuc2l6ZS53aWR0aCkgLyAyLAorICAgICAgICAoZnJhbWVTaXplLmhlaWdodCAtIHRl
eHRGaWVsZEZyYW1lLnNpemUuaGVpZ2h0KSAvIDIpOworCisgICAgLy8gT2Zmc2V0IHRoZSBvcmln
aW4gYnkgdGhlIGZvbnQncyBkZXNjZW5kZXIsIHRvIGNlbnRlciB0aGUgdGV4dCBmaWVsZCBhYm91
dCB0aGUgYmFzZWxpbmU6CisgICAgdGV4dEZpZWxkRnJhbWUub3JpZ2luLnkgKz0gW1tfdGV4dEZp
ZWxkLmdldCgpIGZvbnRdIGRlc2NlbmRlcl07CisKKyAgICBbX3RleHRGaWVsZC5nZXQoKSBzZXRG
cmFtZTpOU0ludGVncmFsUmVjdCh0ZXh0RmllbGRGcmFtZSldOworICAgIFtzZWxmIGFkZFN1YnZp
ZXc6X3RleHRGaWVsZC5nZXQoKV07CisKKyAgICBSZXRhaW5QdHI8TlNDb2xvcj4gYmFja2dyb3Vu
ZENvbG9yID0gW05TQ29sb3IgY29sb3JXaXRoQ2FsaWJyYXRlZFdoaXRlOldhcm5pbmdWaWV3QmFj
a2dyb3VuZFdoaXRlIGFscGhhOldhcm5pbmdWaWV3QmFja2dyb3VuZEFscGhhXTsKKyAgICBbc2Vs
ZiBzZXRGaWxsQ29sb3I6YmFja2dyb3VuZENvbG9yLmdldCgpXTsKKyAgICBbc2VsZiBzZXRDb3Ju
ZXJSYWRpdXM6V2FybmluZ1ZpZXdDb3JuZXJSYWRpdXNdOworCisgICAgUmV0YWluUHRyPE5TQ29s
b3I+IGJvcmRlckNvbG9yID0gW05TQ29sb3IgY29sb3JXaXRoQ2FsaWJyYXRlZFdoaXRlOldhcm5p
bmdWaWV3Qm9yZGVyV2hpdGUgYWxwaGE6V2FybmluZ1ZpZXdCb3JkZXJBbHBoYV07CisgICAgW3Nl
bGYgc2V0Qm9yZGVyQ29sb3I6Ym9yZGVyQ29sb3IuZ2V0KCldOworCisgICAgUmV0YWluUHRyPE5T
U2hhZG93PiBzaGFkb3cgPSBhZG9wdE5TKFtbTlNTaGFkb3cgYWxsb2NdIGluaXRdKTsKKyAgICBS
ZXRhaW5QdHI8TlNDb2xvcj4gc2hhZG93Q29sb3IgPSBbTlNDb2xvciBjb2xvcldpdGhDYWxpYnJh
dGVkV2hpdGU6V2FybmluZ1ZpZXdTaGFkb3dXaGl0ZSBhbHBoYTpXYXJuaW5nVmlld1NoYWRvd0Fs
cGhhXTsKKyAgICBbc2hhZG93LmdldCgpIHNldFNoYWRvd0NvbG9yOnNoYWRvd0NvbG9yLmdldCgp
XTsKKyAgICBbc2hhZG93LmdldCgpIHNldFNoYWRvd09mZnNldDpXYXJuaW5nVmlld1NoYWRvd09m
ZnNldF07CisgICAgW3NoYWRvdy5nZXQoKSBzZXRTaGFkb3dCbHVyUmFkaXVzOldhcm5pbmdWaWV3
U2hhZG93UmFkaXVzXTsKKyAgICBbc2VsZiBzZXRTaGFkb3c6c2hhZG93LmdldCgpXTsKKworICAg
IHJldHVybiBzZWxmOworfQorQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL21hYy9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvbWFjL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIuaAppbmRleCA5Y2U4OGFl
NWE5NmJiZGJmOWRhZjljNjcwMzkxMDdhZjkyODhlOThjLi5lNDc4OWFlM2E3M2Y5MjM0YjI3YmM3
ZTA2N2I0NjI0OTg1MDA4M2MyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
bWFjL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvbWFjL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIuaApAQCAtMzgsMTMgKzM4
LDE0IEBAIGNsYXNzIEludFJlY3Q7CiB9CiAKIEBjbGFzcyBXS1ZpZXc7CitAY2xhc3MgV2ViQ29y
ZUZ1bGxTY3JlZW5QbGFjZWhvbGRlclZpZXc7CiBAY2xhc3MgV2ViV2luZG93U2NhbGVBbmltYXRp
b247CiBAY2xhc3MgV2ViV2luZG93RmFkZUFuaW1hdGlvbjsKIAotQGludGVyZmFjZSBXS0Z1bGxT
Y3JlZW5XaW5kb3dDb250cm9sbGVyIDogTlNXaW5kb3dDb250cm9sbGVyIHsKK0BpbnRlcmZhY2Ug
V0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlciA6IE5TV2luZG93Q29udHJvbGxlcjxOU1dpbmRv
d0RlbGVnYXRlPiB7CiBAcHJpdmF0ZQogICAgIFdLVmlldyAqX3dlYlZpZXc7Ci0gICAgUmV0YWlu
UHRyPE5TSW1hZ2VWaWV3PiBfd2ViVmlld1BsYWNlaG9sZGVyOworICAgIFJldGFpblB0cjxXZWJD
b3JlRnVsbFNjcmVlblBsYWNlaG9sZGVyVmlldz4gX3dlYlZpZXdQbGFjZWhvbGRlcjsKICAgICBS
ZXRhaW5QdHI8V2ViV2luZG93U2NhbGVBbmltYXRpb24+IF9zY2FsZUFuaW1hdGlvbjsKICAgICBS
ZXRhaW5QdHI8V2ViV2luZG93RmFkZUFuaW1hdGlvbj4gX2ZhZGVBbmltYXRpb247CiAgICAgUmV0
YWluUHRyPE5TV2luZG93PiBfYmFja2dyb3VuZFdpbmRvdzsKQEAgLTU2LDYgKzU3LDcgQEAgY2xh
c3MgSW50UmVjdDsKICAgICBCT09MIF9pc0V4aXRpbmdGdWxsU2NyZWVuOwogICAgIEJPT0wgX2lz
RnVsbFNjcmVlbjsKICAgICBCT09MIF9pc1BsYXlpbmc7CisgICAgTlNUaW1lSW50ZXJ2YWwgX2Fu
aW1hdGlvbkR1cmF0aW9uOwogfQogCiAtIChXS1ZpZXcqKXdlYlZpZXc7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIu
bW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRy
b2xsZXIubW0KaW5kZXggZWI4MjEzNGVmMWEwZTU3ZjZiNzVlNjYwODdhZjdmNTU3MzYwMThjNy4u
ZThjMzkzNDYwNjU1YTY0MzU4NTBhYjQ4NWU2YjJiYjc2ZDIxNzEwMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV0tGdWxsU2NyZWVuV2luZG93Q29u
dHJvbGxlci5tbQpAQCAtMzksNiArMzksOCBAQAogI2ltcG9ydCA8V2ViQ29yZS9EaXNwbGF5U2xl
ZXBEaXNhYmxlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9GbG9hdFJlY3QuaD4KICNpbXBvcnQgPFdl
YkNvcmUvSW50UmVjdC5oPgorI2ltcG9ydCA8V2ViQ29yZS9Mb2NhbGl6ZWRTdHJpbmdzLmg+Cisj
aW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVGdWxsU2NyZWVuUGxhY2Vob2xkZXJWaWV3Lmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1dlYkNvcmVGdWxsU2NyZWVuV2luZG93Lmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1dlYldpbmRvd0FuaW1hdGlvbi5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYk5TV2luZG93RXh0cmFz
Lmg+CkBAIC01Myw4ICs1NSwxMiBAQCBzdGF0aWMgUmV0YWluUHRyPE5TV2luZG93PiBjcmVhdGVC
YWNrZ3JvdW5kRnVsbHNjcmVlbldpbmRvdyhOU1JlY3QgZnJhbWUpOwogc3RhdGljIGNvbnN0IENG
VGltZUludGVydmFsIGRlZmF1bHRBbmltYXRpb25EdXJhdGlvbiA9IDAuNTsKIHN0YXRpYyBjb25z
dCBOU1RpbWVJbnRlcnZhbCBEZWZhdWx0V2F0Y2hkb2dUaW1lckludGVydmFsID0gMTsKIAorQGlu
dGVyZmFjZSBOU1dpbmRvdyhNb3JlU3BlY2lmaWNGdWxsU2NyZWVuQWN0aW9ucykKKy0gKHZvaWQp
ZXhpdEZ1bGxTY3JlZW5Nb2RlOihpZClzZW5kZXI7CistICh2b2lkKWVudGVyRnVsbFNjcmVlbk1v
ZGU6KGlkKXNlbmRlcjsKK0BlbmQKKwogQGludGVyZmFjZSBXS0Z1bGxTY3JlZW5XaW5kb3dDb250
cm9sbGVyKFByaXZhdGUpPE5TQW5pbWF0aW9uRGVsZWdhdGU+Ci0tICh2b2lkKV91cGRhdGVNZW51
QW5kRG9ja0ZvckZ1bGxTY3JlZW47CiAtICh2b2lkKV9yZXBsYWNlVmlldzooTlNWaWV3Kil2aWV3
IHdpdGg6KE5TVmlldyopb3RoZXJWaWV3OwogLSAoV2ViUGFnZVByb3h5KilfcGFnZTsKIC0gKFdl
YkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHkqKV9tYW5hZ2VyOwpAQCAtOTIsNiArOTgsOCBAQCBzdGF0
aWMgTlNSZWN0IGNvbnZlcnRSZWN0VG9TY3JlZW4oTlNXaW5kb3cgKndpbmRvdywgTlNSZWN0IHJl
Y3QpCiAgICAgW3dpbmRvdyByZWxlYXNlXTsKICAgICBpZiAoIXNlbGYpCiAgICAgICAgIHJldHVy
biBuaWw7CisgICAgW3dpbmRvdyBzZXREZWxlZ2F0ZTpzZWxmXTsKKyAgICBbd2luZG93IHNldENv
bGxlY3Rpb25CZWhhdmlvcjooW3dpbmRvdyBjb2xsZWN0aW9uQmVoYXZpb3JdIHwgTlNXaW5kb3dD
b2xsZWN0aW9uQmVoYXZpb3JGdWxsU2NyZWVuUHJpbWFyeSldOwogICAgIFtzZWxmIHdpbmRvd0Rp
ZExvYWRdOwogICAgIAogICAgIHJldHVybiBzZWxmOwpAQCAtMTc0LDcgKzE4Miw2IEBAIHN0YXRp
YyBOU1JlY3QgY29udmVydFJlY3RUb1NjcmVlbihOU1dpbmRvdyAqd2luZG93LCBOU1JlY3QgcmVj
dCkKICAgICAvLyB0aGUgRG9jaydzIHNpemUgb3IgbG9jYXRpb24sIG9yIHRoZXkgbWF5IGhhdmUg
Y2hhbmdlZCB0aGUgZnVsbFNjcmVlbiBzY3JlZW4ncyBkaW1lbnNpb25zLiAKICAgICAvLyBVcGRh
dGUgb3VyIHByZXNlbnRhdGlvbiBwYXJhbWV0ZXJzLCBhbmQgZW5zdXJlIHRoYXQgdGhlIGZ1bGwg
c2NyZWVuIHdpbmRvdyBvY2N1cGllcyB0aGUgCiAgICAgLy8gZW50aXJlIHNjcmVlbjoKLSAgICBb
c2VsZiBfdXBkYXRlTWVudUFuZERvY2tGb3JGdWxsU2NyZWVuXTsKICAgICBOU1dpbmRvdyogd2lu
ZG93ID0gW3NlbGYgd2luZG93XTsKICAgICBOU1JlY3Qgc2NyZWVuRnJhbWUgPSBbW3dpbmRvdyBz
Y3JlZW5dIGZyYW1lXTsKICAgICBbd2luZG93IHNldEZyYW1lOnNjcmVlbkZyYW1lIGRpc3BsYXk6
WUVTXTsKQEAgLTIxMiw4ICsyMTksNiBAQCBzdGF0aWMgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGNy
ZWF0ZUltYWdlV2l0aENvcGllZERhdGEoQ0dJbWFnZVJlZiBzb3VyY2VJbWFnZSkKICAgICAgICAg
cmV0dXJuOwogICAgIF9pc0Z1bGxTY3JlZW4gPSBZRVM7CiAKLSAgICBbc2VsZiBfdXBkYXRlTWVu
dUFuZERvY2tGb3JGdWxsU2NyZWVuXTsgICAKLQogICAgIGlmICghc2NyZWVuKQogICAgICAgICBz
Y3JlZW4gPSBbTlNTY3JlZW4gbWFpblNjcmVlbl07CiAgICAgTlNSZWN0IHNjcmVlbkZyYW1lID0g
W3NjcmVlbiBmcmFtZV07CkBAIC0yNDYsMTEgKzI1MSwxMSBAQCBzdGF0aWMgUmV0YWluUHRyPENH
SW1hZ2VSZWY+IGNyZWF0ZUltYWdlV2l0aENvcGllZERhdGEoQ0dJbWFnZVJlZiBzb3VyY2VJbWFn
ZSkKIAogICAgIC8vIFN3YXAgdGhlIHdlYlZpZXcgcGxhY2Vob2xkZXIgaW50byBwbGFjZS4KICAg
ICBpZiAoIV93ZWJWaWV3UGxhY2Vob2xkZXIpIHsKLSAgICAgICAgX3dlYlZpZXdQbGFjZWhvbGRl
ci5hZG9wdE5TKFtbTlNJbWFnZVZpZXcgYWxsb2NdIGluaXRdKTsKLSAgICAgICAgW193ZWJWaWV3
UGxhY2Vob2xkZXIuZ2V0KCkgc2V0TGF5ZXI6W0NBTGF5ZXIgbGF5ZXJdXTsKLSAgICAgICAgW193
ZWJWaWV3UGxhY2Vob2xkZXIuZ2V0KCkgc2V0V2FudHNMYXllcjpZRVNdOworICAgICAgICBfd2Vi
Vmlld1BsYWNlaG9sZGVyLmFkb3B0TlMoW1tXZWJDb3JlRnVsbFNjcmVlblBsYWNlaG9sZGVyVmll
dyBhbGxvY10gaW5pdFdpdGhGcmFtZTpbX3dlYlZpZXcgZnJhbWVdXSk7CisgICAgICAgIFtfd2Vi
Vmlld1BsYWNlaG9sZGVyLmdldCgpIHNldFRhcmdldDpzZWxmXTsKKyAgICAgICAgW193ZWJWaWV3
UGxhY2Vob2xkZXIuZ2V0KCkgc2V0QWN0aW9uOkBzZWxlY3RvcihjYW5jZWxPcGVyYXRpb246KV07
CiAgICAgfQotICAgIFtbX3dlYlZpZXdQbGFjZWhvbGRlci5nZXQoKSBsYXllcl0gc2V0Q29udGVu
dHM6KGlkKXdlYlZpZXdDb250ZW50cy5nZXQoKV07CisgICAgW193ZWJWaWV3UGxhY2Vob2xkZXIu
Z2V0KCkgc2V0Q29udGVudHM6KGlkKXdlYlZpZXdDb250ZW50cy5nZXQoKV07CiAgICAgW3NlbGYg
X3JlcGxhY2VWaWV3Ol93ZWJWaWV3IHdpdGg6X3dlYlZpZXdQbGFjZWhvbGRlci5nZXQoKV07CiAg
ICAgCiAgICAgLy8gVGhlbiBpbnNlcnQgdGhlIFdlYlZpZXcgaW50byB0aGUgZnVsbCBzY3JlZW4g
d2luZG93CkBAIC0yNzMsOSArMjc4LDggQEAgc3RhdGljIFJldGFpblB0cjxDR0ltYWdlUmVmPiBj
cmVhdGVJbWFnZVdpdGhDb3BpZWREYXRhKENHSW1hZ2VSZWYgc291cmNlSW1hZ2UpCiAgICAgX2lu
aXRpYWxGcmFtZSA9IGluaXRpYWxGcmFtZTsKICAgICBfZmluYWxGcmFtZSA9IGZpbmFsRnJhbWU7
CiAKLSAgICBbc2VsZiBfdXBkYXRlTWVudUFuZERvY2tGb3JGdWxsU2NyZWVuXTsgICAKLQotICAg
IFtzZWxmIF9zdGFydEVudGVyRnVsbFNjcmVlbkFuaW1hdGlvbldpdGhEdXJhdGlvbjpkZWZhdWx0
QW5pbWF0aW9uRHVyYXRpb25dOworICAgIEFTU0VSVChbW3NlbGYgd2luZG93XSByZXNwb25kc1Rv
U2VsZWN0b3I6QHNlbGVjdG9yKGVudGVyRnVsbFNjcmVlbk1vZGU6KV0pOworICAgIFtbc2VsZiB3
aW5kb3ddIGVudGVyRnVsbFNjcmVlbk1vZGU6c2VsZl07CiB9CiAKIC0gKHZvaWQpZmluaXNoZWRF
bnRlckZ1bGxTY3JlZW5BbmltYXRpb246KGJvb2wpY29tcGxldGVkCkBAIC0yOTQsMjQgKzI5OCwx
NCBAQCBzdGF0aWMgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGNyZWF0ZUltYWdlV2l0aENvcGllZERh
dGEoQ0dJbWFnZVJlZiBzb3VyY2VJbWFnZSkKICAgICAgICAgd2luZG93Qm91bmRzLm9yaWdpbiA9
IE5TWmVyb1BvaW50OwogICAgICAgICBXS1dpbmRvd1NldENsaXBSZWN0KFtzZWxmIHdpbmRvd10s
IHdpbmRvd0JvdW5kcyk7CiAKLSAgICAgICAgTlNXaW5kb3cgKndlYldpbmRvdyA9IFtfd2ViVmll
d1BsYWNlaG9sZGVyLmdldCgpIHdpbmRvd107Ci0jaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9S
RVFVSVJFRCA+PSAxMDcwCi0gICAgICAgIC8vIEluIExpb24sIE5TV2luZG93IHdpbGwgYW5pbWF0
ZSBpbnRvIGFuZCBvdXQgb2Ygb3JkZXJPdXQgb3BlcmF0aW9ucy4gU3VwcHJlc3MgdGhhdAotICAg
ICAgICAvLyBiZWhhdmlvciBoZXJlLCBtYWtpbmcgc3VyZSB0byByZXNldCB0aGUgYW5pbWF0aW9u
IGJlaGF2aW9yIGFmdGVyd2FyZC4KLSAgICAgICAgTlNXaW5kb3dBbmltYXRpb25CZWhhdmlvciBh
bmltYXRpb25CZWhhdmlvciA9IFt3ZWJXaW5kb3cgYW5pbWF0aW9uQmVoYXZpb3JdOwotICAgICAg
ICBbd2ViV2luZG93IHNldEFuaW1hdGlvbkJlaGF2aW9yOk5TV2luZG93QW5pbWF0aW9uQmVoYXZp
b3JOb25lXTsKLSNlbmRpZgotICAgICAgICBbd2ViV2luZG93IG9yZGVyT3V0OnNlbGZdOwotI2lm
IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA3MAotICAgICAgICBbd2ViV2lu
ZG93IHNldEFuaW1hdGlvbkJlaGF2aW9yOmFuaW1hdGlvbkJlaGF2aW9yXTsKLSNlbmRpZgotCiAg
ICAgICAgIFtfZmFkZUFuaW1hdGlvbi5nZXQoKSBzdG9wQW5pbWF0aW9uXTsKICAgICAgICAgW19m
YWRlQW5pbWF0aW9uLmdldCgpIHNldFdpbmRvdzpuaWxdOwogICAgICAgICBfZmFkZUFuaW1hdGlv
biA9IG51bGxwdHI7CiAgICAgICAgIAogICAgICAgICBbX2JhY2tncm91bmRXaW5kb3cuZ2V0KCkg
b3JkZXJPdXQ6c2VsZl07CiAgICAgICAgIFtfYmFja2dyb3VuZFdpbmRvdy5nZXQoKSBzZXRGcmFt
ZTpOU1plcm9SZWN0IGRpc3BsYXk6WUVTXTsKKworICAgICAgICBbX3dlYlZpZXdQbGFjZWhvbGRl
ci5nZXQoKSBzZXRFeGl0V2FybmluZ1Zpc2libGU6WUVTXTsKICAgICAgICAgTlNFbmFibGVTY3Jl
ZW5VcGRhdGVzKCk7CiAgICAgfSBlbHNlCiAgICAgICAgIFtfc2NhbGVBbmltYXRpb24uZ2V0KCkg
c3RvcEFuaW1hdGlvbl07CkBAIC0zMjgsNyArMzIyLDkgQEAgc3RhdGljIFJldGFpblB0cjxDR0lt
YWdlUmVmPiBjcmVhdGVJbWFnZVdpdGhDb3BpZWREYXRhKENHSW1hZ2VSZWYgc291cmNlSW1hZ2Up
CiAgICAgICAgIHJldHVybjsKICAgICBfaXNGdWxsU2NyZWVuID0gTk87CiAKLSAgICAvLyBTY3Jl
ZW4gdXBkYXRlcyB0byBiZSByZS1lbmFibGVkIGluIF9zdGFydEV4aXRGdWxsU2NyZWVuQW5pbWF0
aW9uV2l0aER1cmF0aW9uOgorICAgIFtfd2ViVmlld1BsYWNlaG9sZGVyLmdldCgpIHNldEV4aXRX
YXJuaW5nVmlzaWJsZTpOT107CisKKyAgICAvLyBTY3JlZW4gdXBkYXRlcyB0byBiZSByZS1lbmFi
bGVkIGluIF9zdGFydEV4aXRGdWxsU2NyZWVuQW5pbWF0aW9uV2l0aER1cmF0aW9uOiBvciBiZWdh
bkV4aXRGdWxsU2NyZWVuV2l0aEluaXRpYWxGcmFtZTpmaW5hbEZyYW1lOgogICAgIE5TRGlzYWJs
ZVNjcmVlblVwZGF0ZXMoKTsKICAgICBbW3NlbGYgd2luZG93XSBzZXRBdXRvZGlzcGxheTpOT107
CiAKQEAgLTM0OSwzMCArMzQ1LDE5IEBAIHN0YXRpYyBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gY3Jl
YXRlSW1hZ2VXaXRoQ29waWVkRGF0YShDR0ltYWdlUmVmIHNvdXJjZUltYWdlKQogICAgIGlmIChf
aXNFbnRlcmluZ0Z1bGxTY3JlZW4pCiAgICAgICAgIFtzZWxmIGZpbmlzaGVkRW50ZXJGdWxsU2Ny
ZWVuQW5pbWF0aW9uOk5PXTsKIAotICAgIFtzZWxmIF91cGRhdGVNZW51QW5kRG9ja0ZvckZ1bGxT
Y3JlZW5dOwotICAgIAotICAgIE5TV2luZG93KiB3ZWJXaW5kb3cgPSBbX3dlYlZpZXdQbGFjZWhv
bGRlci5nZXQoKSB3aW5kb3ddOwotI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQg
Pj0gMTA3MAotICAgIC8vIEluIExpb24sIE5TV2luZG93IHdpbGwgYW5pbWF0ZSBpbnRvIGFuZCBv
dXQgb2Ygb3JkZXJPdXQgb3BlcmF0aW9ucy4gU3VwcHJlc3MgdGhhdAotICAgIC8vIGJlaGF2aW9y
IGhlcmUsIG1ha2luZyBzdXJlIHRvIHJlc2V0IHRoZSBhbmltYXRpb24gYmVoYXZpb3IgYWZ0ZXJ3
YXJkLgotICAgIE5TV2luZG93QW5pbWF0aW9uQmVoYXZpb3IgYW5pbWF0aW9uQmVoYXZpb3IgPSBb
d2ViV2luZG93IGFuaW1hdGlvbkJlaGF2aW9yXTsKLSAgICBbd2ViV2luZG93IHNldEFuaW1hdGlv
bkJlaGF2aW9yOk5TV2luZG93QW5pbWF0aW9uQmVoYXZpb3JOb25lXTsKLSNlbmRpZgotICAgIC8v
IElmIHRoZSB1c2VyIGhhcyBtb3ZlZCB0aGUgZnVsbFNjcmVlbiB3aW5kb3cgaW50byBhIG5ldyBz
cGFjZSwgdGVtcG9yYXJpbHkgY2hhbmdlCi0gICAgLy8gdGhlIGNvbGxlY3Rpb25CZWhhdmlvciBv
ZiB0aGUgd2ViVmlldydzIHdpbmRvdyBzbyB0aGF0IGl0IGlzIHB1bGxlZCBpbnRvIHRoZSBhY3Rp
dmUgc3BhY2U6Ci0gICAgaWYgKCEoW3dlYldpbmRvdyByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVj
dG9yKGlzT25BY3RpdmVTcGFjZSldID8gW3dlYldpbmRvdyBpc09uQWN0aXZlU3BhY2VdIDogWUVT
KSkgewotICAgICAgICBOU1dpbmRvd0NvbGxlY3Rpb25CZWhhdmlvciBiZWhhdmlvciA9IFt3ZWJX
aW5kb3cgY29sbGVjdGlvbkJlaGF2aW9yXTsKLSAgICAgICAgW3dlYldpbmRvdyBzZXRDb2xsZWN0
aW9uQmVoYXZpb3I6TlNXaW5kb3dDb2xsZWN0aW9uQmVoYXZpb3JDYW5Kb2luQWxsU3BhY2VzXTsK
LSAgICAgICAgW3dlYldpbmRvdyBvcmRlcldpbmRvdzpOU1dpbmRvd0JlbG93IHJlbGF0aXZlVG86
W1tzZWxmIHdpbmRvd10gd2luZG93TnVtYmVyXV07Ci0gICAgICAgIFt3ZWJXaW5kb3cgc2V0Q29s
bGVjdGlvbkJlaGF2aW9yOmJlaGF2aW9yXTsKLSAgICB9IGVsc2UKLSAgICAgICAgW3dlYldpbmRv
dyBvcmRlcldpbmRvdzpOU1dpbmRvd0JlbG93IHJlbGF0aXZlVG86W1tzZWxmIHdpbmRvd10gd2lu
ZG93TnVtYmVyXV07Ci0gICAgCi0jaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+
PSAxMDcwCi0gICAgW3dlYldpbmRvdyBzZXRBbmltYXRpb25CZWhhdmlvcjphbmltYXRpb25CZWhh
dmlvcl07Ci0jZW5kaWYKKyAgICBpZiAoIVtbc2VsZiB3aW5kb3ddIGlzT25BY3RpdmVTcGFjZV0p
IHsKKyAgICAgICAgLy8gSWYgdGhlIGZ1bGwgc2NyZWVuIHdpbmRvdyBpcyBub3QgaW4gdGhlIGFj
dGl2ZSBzcGFjZSwgdGhlIE5TV2luZG93IGZ1bGwgc2NyZWVuIGFuaW1hdGlvbiBkZWxlZ2F0ZSBt
ZXRob2RzCisgICAgICAgIC8vIHdpbGwgbmV2ZXIgYmUgY2FsbGVkLiBTbyBjYWxsIGZpbmlzaGVk
RXhpdEZ1bGxTY3JlZW5BbmltYXRpb24gZXhwbGljaXRseS4KKyAgICAgICAgW3NlbGYgZmluaXNo
ZWRFeGl0RnVsbFNjcmVlbkFuaW1hdGlvbjpZRVNdOwogCi0gICAgW3NlbGYgX3N0YXJ0RXhpdEZ1
bGxTY3JlZW5BbmltYXRpb25XaXRoRHVyYXRpb246ZGVmYXVsdEFuaW1hdGlvbkR1cmF0aW9uXTsK
KyAgICAgICAgLy8gQmVjYXVzZSB3ZSBhcmUgYnJlYWtpbmcgdGhlIG5vcm1hbCBhbmltYXRpb24g
cGF0dGVybiwgcmUtZW5hYmxlIHNjcmVlbiB1cGRhdGVzCisgICAgICAgIC8vIGFzIGV4aXRGdWxs
U2NyZWVuIGhhcyBkaXNhYmxlZCB0aGVtLCBidXQgX3N0YXJ0RXhpdEZ1bGxTY3JlZW5BbmltYXRp
b25XaXRoRHVyYXRpb246CisgICAgICAgIC8vIHdpbGwgbmV2ZXIgYmUgY2FsbGVkLgorICAgICAg
ICBOU0VuYWJsZVNjcmVlblVwZGF0ZXMoKTsKKyAgICB9CisKKyAgICBBU1NFUlQoW1tzZWxmIHdp
bmRvd10gcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihleGl0RnVsbFNjcmVlbk1vZGU6KV0p
OworICAgIFtbc2VsZiB3aW5kb3ddIGV4aXRGdWxsU2NyZWVuTW9kZTpzZWxmXTsKIH0KIAogc3Rh
dGljIHZvaWQgY29tcGxldGVGaW5pc2hFeGl0RnVsbFNjcmVlbkFuaW1hdGlvbkFmdGVyUmVwYWlu
dChXS0Vycm9yUmVmLCB2b2lkKik7CkBAIC0zODMsOCArMzY4LDYgQEAgc3RhdGljIHZvaWQgY29t
cGxldGVGaW5pc2hFeGl0RnVsbFNjcmVlbkFuaW1hdGlvbkFmdGVyUmVwYWludChXS0Vycm9yUmVm
LCB2b2lkKikKICAgICAgICAgcmV0dXJuOwogICAgIF9pc0V4aXRpbmdGdWxsU2NyZWVuID0gTk87
CiAKLSAgICBbc2VsZiBfdXBkYXRlTWVudUFuZERvY2tGb3JGdWxsU2NyZWVuXTsKLQogICAgIC8v
IFNjcmVlbiB1cGRhdGVzIHRvIGJlIHJlLWVuYWJsZWQgaW4gY29tcGxldGVGaW5pc2hFeGl0RnVs
bFNjcmVlbkFuaW1hdGlvbkFmdGVyUmVwYWludC4KICAgICBOU0Rpc2FibGVTY3JlZW5VcGRhdGVz
KCk7CiAgICAgW1tfd2ViVmlld1BsYWNlaG9sZGVyLmdldCgpIHdpbmRvd10gc2V0QXV0b2Rpc3Bs
YXk6Tk9dOwpAQCAtNDU1LDM1ICs0MzgsMzEgQEAgc3RhdGljIHZvaWQgY29tcGxldGVGaW5pc2hF
eGl0RnVsbFNjcmVlbkFuaW1hdGlvbkFmdGVyUmVwYWludChXS0Vycm9yUmVmLCB2b2lkKgogfQog
CiAjcHJhZ21hIG1hcmsgLQotI3ByYWdtYSBtYXJrIEludGVybmFsIEludGVyZmFjZQorI3ByYWdt
YSBtYXJrIEN1c3RvbSBOU1dpbmRvdyBGdWxsIFNjcmVlbiBBbmltYXRpb24KIAotLSAodm9pZClf
dXBkYXRlTWVudUFuZERvY2tGb3JGdWxsU2NyZWVuCistIChOU0FycmF5ICopY3VzdG9tV2luZG93
c1RvRW50ZXJGdWxsU2NyZWVuRm9yV2luZG93OihOU1dpbmRvdyAqKXdpbmRvdwogewotICAgIC8v
IE5TQXBwbGljYXRpb25QcmVzZW50YXRpb25PcHRpb25zIGlzIGF2YWlsYWJsZSBvbiA+IDEwLjYg
b25seToKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNjAKLSAgICBO
U0FwcGxpY2F0aW9uUHJlc2VudGF0aW9uT3B0aW9ucyBvcHRpb25zID0gTlNBcHBsaWNhdGlvblBy
ZXNlbnRhdGlvbkRlZmF1bHQ7Ci0gICAgTlNTY3JlZW4qIGZ1bGxTY3JlZW5TY3JlZW4gPSBbW3Nl
bGYgd2luZG93XSBzY3JlZW5dOwotICAgIAotICAgIGlmIChfaXNGdWxsU2NyZWVuKSB7Ci0gICAg
ICAgIC8vIEF1dG8taGlkZSB0aGUgbWVudSBiYXIgaWYgdGhlIGZ1bGxTY3JlZW5TY3JlZW4gY29u
dGFpbnMgdGhlIG1lbnUgYmFyOgotICAgICAgICAvLyBOT1RFOiBpZiB0aGUgZnVsbFNjcmVlblNj
cmVlbiBjb250YWlucyB0aGUgbWVudSBiYXIgYnV0IG5vdCB0aGUgZG9jaywgd2UgbXVzdCBzdGls
bCAKLSAgICAgICAgLy8gYXV0by1oaWRlIHRoZSBkb2NrLCBvciBhbiBleGNlcHRpb24gd2lsbCBi
ZSB0aHJvd24uCi0gICAgICAgIGlmIChbW05TU2NyZWVuIHNjcmVlbnNdIG9iamVjdEF0SW5kZXg6
MF0gPT0gZnVsbFNjcmVlblNjcmVlbikKLSAgICAgICAgICAgIG9wdGlvbnMgfD0gKE5TQXBwbGlj
YXRpb25QcmVzZW50YXRpb25BdXRvSGlkZU1lbnVCYXIgfCBOU0FwcGxpY2F0aW9uUHJlc2VudGF0
aW9uQXV0b0hpZGVEb2NrKTsKLSAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIGN1cnJlbnQgc2NyZWVu
IGNvbnRhaW5zIHRoZSBkb2NrIGJ5IGNvbXBhcmluZyB0aGUgc2NyZWVuJ3MgZnJhbWUgdG8gaXRz
Ci0gICAgICAgIC8vIHZpc2libGVGcmFtZTsgaWYgYSBkb2NrIGlzIHByZXNlbnQsIHRoZSB2aXNp
YmxlRnJhbWUgd2lsbCBkaWZmZXIuIElmIHRoZSBjdXJyZW50IHNjcmVlbgotICAgICAgICAvLyBj
b250YWlucyB0aGUgZG9jaywgaGlkZSBpdC4KLSAgICAgICAgZWxzZSBpZiAoIU5TRXF1YWxSZWN0
cyhbZnVsbFNjcmVlblNjcmVlbiBmcmFtZV0sIFtmdWxsU2NyZWVuU2NyZWVuIHZpc2libGVGcmFt
ZV0pKQotICAgICAgICAgICAgb3B0aW9ucyB8PSBOU0FwcGxpY2F0aW9uUHJlc2VudGF0aW9uQXV0
b0hpZGVEb2NrOwotICAgIH0KLSAgICAKLSAgICBpZiAoW05TQXBwIHJlc3BvbmRzVG9TZWxlY3Rv
cjpAc2VsZWN0b3Ioc2V0UHJlc2VudGF0aW9uT3B0aW9uczopXSkKLSAgICAgICAgW05TQXBwIHNl
dFByZXNlbnRhdGlvbk9wdGlvbnM6b3B0aW9uc107Ci0gICAgZWxzZQotI2VuZGlmCi0gICAgICAg
IFNldFN5c3RlbVVJTW9kZShfaXNGdWxsU2NyZWVuID8ga1VJTW9kZUFsbEhpZGRlbiA6IGtVSU1v
ZGVOb3JtYWwsIDApOworICAgIHJldHVybiBbTlNBcnJheSBhcnJheVdpdGhPYmplY3RzOltzZWxm
IHdpbmRvd10sIF9iYWNrZ3JvdW5kV2luZG93LmdldCgpLCBuaWxdOworfQorCistIChOU0FycmF5
ICopY3VzdG9tV2luZG93c1RvRXhpdEZ1bGxTY3JlZW5Gb3JXaW5kb3c6KE5TV2luZG93ICopd2lu
ZG93Cit7CisgICAgcmV0dXJuIFtOU0FycmF5IGFycmF5V2l0aE9iamVjdHM6W3NlbGYgd2luZG93
XSwgX2JhY2tncm91bmRXaW5kb3cuZ2V0KCksIG5pbF07Cit9CisKKy0gKHZvaWQpd2luZG93OihO
U1dpbmRvdyAqKXdpbmRvdyBzdGFydEN1c3RvbUFuaW1hdGlvblRvRW50ZXJGdWxsU2NyZWVuV2l0
aER1cmF0aW9uOihOU1RpbWVJbnRlcnZhbClkdXJhdGlvbgoreworICAgIFtzZWxmIF9zdGFydEVu
dGVyRnVsbFNjcmVlbkFuaW1hdGlvbldpdGhEdXJhdGlvbjpkdXJhdGlvbl07Cit9CisKKy0gKHZv
aWQpd2luZG93OihOU1dpbmRvdyAqKXdpbmRvdyBzdGFydEN1c3RvbUFuaW1hdGlvblRvRXhpdEZ1
bGxTY3JlZW5XaXRoRHVyYXRpb246KE5TVGltZUludGVydmFsKWR1cmF0aW9uCit7CisgICAgW3Nl
bGYgX3N0YXJ0RXhpdEZ1bGxTY3JlZW5BbmltYXRpb25XaXRoRHVyYXRpb246ZHVyYXRpb25dOwog
fQogCisjcHJhZ21hIG1hcmsgLQorI3ByYWdtYSBtYXJrIEludGVybmFsIEludGVyZmFjZQorCiAt
IChXZWJQYWdlUHJveHkqKV9wYWdlCiB7CiAgICAgcmV0dXJuIHRvSW1wbChbX3dlYlZpZXcgcGFn
ZVJlZl0pOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>170264</attachid>
            <date>2012-10-23 16:21:03 -0700</date>
            <delta_ts>2012-11-14 17:01:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100025-20121023161939.patch</filename>
            <type>text/plain</type>
            <size>42768</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyMjc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDE0MTkzZDk2MDcwZjZi
YTUwY2QyNjQyNDM5YjAwNTliY2Q4OGQxNy4uYTc5MzU1YTEwYTg0MzhjMDUxM2E0MmMxMGZhNTQy
YzNlNGQ5OWUwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDEyLTEwLTIyICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtXSzJdIFtNYWNdIFdlYktp
dCBGdWxsIFNjcmVlbiBBUEkgc2hvdWxkIHVzZSBOU1dpbmRvdyBmdWxsIHNjcmVlbiBBUEkuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDAwMjUKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBzaGFy
ZWQgaW1wbGVtZW50YXRpb24gb2YgYSB3YXJuaW5nIHZpZXcgZm9yIHVzZSBpbiBXZWJLaXQgYW5k
IFdlYktpdDIuCisKKyAgICAgICAgQWRkIGEgbmV3IHNoYXJlZCBjbGFzcyBXZWJDb3JlRnVsbFNj
cmVlbldhcm5pbmdWaWV3IHdoaWNoIHByZXNlbnRzIGEgc3R5bGVkIHdhcm5pbmcgbWVzc2FnZS4K
KyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2ViQ29yZUZ1bGxTY3JlZW5XYXJuaW5nVmlldy5oOiBB
ZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2ViQ29yZUZ1bGxTY3JlZW5XYXJuaW5nVmll
dy5tbTogQWRkZWQuCisgICAgICAgICgtW1dlYkNvcmVGdWxsU2NyZWVuV2FybmluZ1ZpZXcgaW5p
dFdpdGhUaXRsZTpdKTogQ3JlYXRlIHRoZSB2aWV3LgorCisgICAgICAgIEFkZCBhIG5ldyBzaGFy
ZWQgY2xhc3MgV2ViQ29yZUZ1bGxTY3JlZW5QbGFjZWhvbGRlclZpZXcsIHdoaWNoIHByZXNlbnRz
IHRoZSBjb250ZW50cyBvZiB0aGUgCisgICAgICAgIFdlYlZpZXcgcHJpb3IgdG8gZnVsbCBzY3Jl
ZW4gd2l0aCBhIG1lc3NhZ2UgaW5mb3JtaW5nIHRoZSB1c2VyIGhvdyB0byBleGl0IGZyb20gZnVs
bCBzY3JlZW4gbW9kZS4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2ViQ29yZUZ1bGxTY3JlZW5Q
bGFjZWhvbGRlclZpZXcubW06CisgICAgICAgICgtW1dlYkNvcmVGdWxsU2NyZWVuUGxhY2Vob2xk
ZXJWaWV3IGluaXRXaXRoRnJhbWU6XSk6IENyZWF0ZSB0aGUgd2FybmluZyB2aWV3IGFuZCBzZXQg
dXAgdGhlIHBsYWNlaG9sZGVyIGxheWVyLgorICAgICAgICAoLVtXZWJDb3JlRnVsbFNjcmVlblBs
YWNlaG9sZGVyVmlldyBzZXRDb250ZW50czpdKTogUGFzcyBhbG9uZyB0byBjb250ZW50IHZpZXcg
bGF5ZXIuCisgICAgICAgICgtW1dlYkNvcmVGdWxsU2NyZWVuUGxhY2Vob2xkZXJWaWV3IGNvbnRl
bnRzXSk6IERpdHRvLgorICAgICAgICAoLVtXZWJDb3JlRnVsbFNjcmVlblBsYWNlaG9sZGVyVmll
dyBzZXRFeGl0V2FybmluZ1Zpc2libGU6XSk6IFNob3cgb3IgaGlkZSB0aGUgZXhpdCB3YXJuaW5n
LgorICAgICAgICAoLVtXZWJDb3JlRnVsbFNjcmVlblBsYWNlaG9sZGVyVmlldyBtb3VzZURvd246
XSk6IENhbGwgdGhlIHRhcmdldCB3aXRoIGFjdGlvbi4KKworICAgICAgICAgQWRkIGEgbG9jYWxp
emVkIHN0cmluZyBlbnRyeSBmb3IgdGhlICJjbGljayB0byBleGl0IiB0ZXh0OgorICAgICAgICAg
KiBFbmdsaXNoLmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3M6CisgICAgICAgICogcGxhdGZvcm0v
TG9jYWxpemVkU3RyaW5ncy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjbGlja1RvRXhpdEZ1bGxT
Y3JlZW5UZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmg6CisKKyAg
ICAgICAgQWRkIHRoZSBuZXcgZmlsZXMgdG8gdGhlIHByb2plY3QgYW5kIGV4cG9ydHMgbGlzdDoK
KyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisKIDIwMTItMTAtMjMgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNl
ckBhcHBsZS5jb20+CiAKICAgICAgICAgQWxsb3cgdGVzdHMgdG8gcnVuIHdpdGggYSB0aWxlIGNh
Y2hlLCBhbmQgb3B0aW9uYWxseSBkdW1wIHRoZSB0aWxlIGNhY2hlIHZpYSBsYXllclRyZWVBc1Rl
eHQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCmluZGV4IDRjMjY1NzRkOTQzNTcxYzlhZjlmMjFmOTJlYjU5NDk5ZjczZjY3
N2UuLjBjODEyYTdjOTA3MmU0OTMyNWEzMWYwOTNkMTI4YzQxYWE4NzdjOGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwzMCBAQAorMjAxMi0xMC0yMiAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxl
LmNvbT4KKworICAgICAgICBbV0syXSBbTWFjXSBXZWJLaXQgRnVsbCBTY3JlZW4gQVBJIHNob3Vs
ZCB1c2UgTlNXaW5kb3cgZnVsbCBzY3JlZW4gQVBJLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwMDI1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIHRoZSBOU1dpbmRvdyBmdWxsIHNjcmVlbiBBUEkg
d2hlbiB0YWtpbmcgdGhlIFdlYlZpZXcgZnVsbCBzY3JlZW4uIFRvIGZhY2lsaXR5IHRoZSBjYXNl
IHdoZXJlIHRoZSBicm93c2VyIHdpbmRvdyBpcyBhbHJlYWR5CisgICAgICAgIGluIGZ1bGwgc2Ny
ZWVuIG1vZGUsIG5vIGxvbmdlciBoaWRlIHRoZSBicm93c2VyIHdpbmRvdyB3aGVuIGVudGVyaW5n
IGZ1bGwgc2NyZWVuLiBJbnN0ZWFkLCBwcm92aWRlIGEgcGxhY2Vob2xkZXIgdmlldyB3aXRoIAor
ICAgICAgICBpbnN0cnVjdGlvbnMgdG8gY2xpY2sgdGhlIHBsYWNlaG9sZGVyIHRvIGV4aXQgZnVs
bCBzY3JlZW4uCisKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dLRnVsbFNjcmVlbldpbmRvd0Nv
bnRyb2xsZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dLRnVsbFNjcmVlbldpbmRvd0Nv
bnRyb2xsZXIubW06CisgICAgICAgICgtW1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIgaW5p
dF0pOiBTZXQgc2VsZiBhcyB0aGUgd2luZG93J3MgZGVsZWdhdGU7IGVuYWJsZSB3aW5kb3cncyBm
dWxsIHNjcmVlbiBhY3Rpb24uCisgICAgICAgICgtW1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xs
ZXIgYXBwbGljYXRpb25EaWRDaGFuZ2VTY3JlZW5QYXJhbWV0ZXJzOl0pOiBSZW1vdmUgcmVmZXJl
bmNlIHRvIF91cGRhdGVXaW5kb3dBbmREb2NrRm9yRnVsbFNjcmVlbi4KKyAgICAgICAgKC1bV0tG
dWxsU2NyZWVuV2luZG93Q29udHJvbGxlciBlbnRlckZ1bGxTY3JlZW46XSk6ICBEaXR0by4gQ3Jl
YXRlIGEgV0tGdWxsU2NyZWVuUGxhY2Vob2xkZXJWaWV3IGluc3RlYWQgb2YgZ2VuZXJpYyBOU0lt
YWdlVmlldy4KKyAgICAgICAgKC1bV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlciBiZWdhbkVu
dGVyRnVsbFNjcmVlbldpdGhJbml0aWFsRnJhbWU6ZmluYWxGcmFtZTpdKTogRGl0dG8uIENhbGwg
TlNXaW5kb3cgZW50ZXJGdWxsU2NyZWVuOiBBUEkuCisgICAgICAgICgtW1dLRnVsbFNjcmVlbldp
bmRvd0NvbnRyb2xsZXIgZmluaXNoZWRFbnRlckZ1bGxTY3JlZW5BbmltYXRpb246XSk6IFNob3cg
dGhlIHdhcm5pbmcgdmlldy4KKyAgICAgICAgKC1bV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxl
ciBleGl0RnVsbFNjcmVlbl0pOiBIaWRlIHRoZSB3YXJuaW5nIHZpZXcuCisgICAgICAgICgtW1dL
RnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIgYmVnYW5FeGl0RnVsbFNjcmVlbldpdGhJbml0aWFs
RnJhbWU6ZmluYWxGcmFtZTpdKTogQWRkIHNwZWNpYWwgY2FzZSB3aGVyZSB3ZSBhcmUgZXhpdGlu
ZworICAgICAgICAgICAgZnJvbSBmdWxsIHNjcmVlbiBtb2RlIHdoZW4gdGhlIGZ1bGwgc2NyZWVu
IHdpbmRvdyBpcyBub3Qgb24gc2NyZWVuLgorICAgICAgICAoLVtXS0Z1bGxTY3JlZW5XaW5kb3dD
b250cm9sbGVyIGZpbmlzaGVkRXhpdEZ1bGxTY3JlZW5BbmltYXRpb246XSk6IFJlbW92ZSByZWZl
cmVuY2UgdG8gX3VwZGF0ZU1lbnVBbmREb2NrRm9yRnVsbFNjcmVlbi4KKyAgICAgICAgKC1bV0tG
dWxsU2NyZWVuV2luZG93Q29udHJvbGxlciBjdXN0b21XaW5kb3dzVG9FbnRlckZ1bGxTY3JlZW5G
b3JXaW5kb3c6XSk6IEFkZGVkLiBSZXR1cm4gdGhlIGJhY2tncm91bmQgd2luZG93IGFuZCB0aGUg
ZnVsbCBzY3JlZW4gd2luZG93LgorICAgICAgICAoLVtXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9s
bGVyIGN1c3RvbVdpbmRvd3NUb0V4aXRGdWxsU2NyZWVuRm9yV2luZG93Ol0pOiBEaXR0by4KKyAg
ICAgICAgKC1bV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlciB3aW5kb3c6c3RhcnRDdXN0b21B
bmltYXRpb25Ub0VudGVyRnVsbFNjcmVlbldpdGhEdXJhdGlvbjpdKTogQWRkZWQuIENhbGwgdGhy
b3VnaCB0byBfc3RhcnRFbnRlckZ1bGxTY3JlZW5BbmltYXRpb25XaXRoRHVyYXRpb246CisgICAg
ICAgICgtW1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIgd2luZG93OnN0YXJ0Q3VzdG9tQW5p
bWF0aW9uVG9FeGl0RnVsbFNjcmVlbldpdGhEdXJhdGlvbjpdKTogQWRkZWQuIENhbGwgdGhyb3Vn
aCB0byBfc3RhcnRFeGl0RnVsbFNjcmVlbkFuaW1hdGlvbldpdGhEdXJhdGlvbjoKKwogMjAxMi0x
MC0yMyAgTm8nYW0gUm9zZW50aGFsICA8bm9hbS5yb3NlbnRoYWxAbm9raWEuY29tPgogCiAgICAg
ICAgIENvb3JkaW5hdGVkIEdyYXBoaWNzOiBFbmFibGUgdGhyZWFkZWQvSVBDIGFuaW1hdGlvbnMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0VuZ2xpc2gubHByb2ovTG9jYWxpemFibGUuc3Ry
aW5ncyBiL1NvdXJjZS9XZWJDb3JlL0VuZ2xpc2gubHByb2ovTG9jYWxpemFibGUuc3RyaW5ncwpp
bmRleCA0YzQzMTUwYTcxOWNhNzY4ZDY3YTVkYzcyZTgyNTk0NDhhNGUyODUxLi5mMGY2YzNhZjg1
OTYyODhiYWE3MDRjOGQ5NGZiZGY2MWRhNjdhZGRjIDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmRl
bHRhIDE3OAp6Y21aM3RnWmFgZjxfJnN4TD5UbEx2PXxmXmQ+SysxaWgoZVpBKU8oMGEpR2tFWVo1
fmRMcTA8fVAlSVY1UVVKMHQKejhTKXJYeit4YT8yMmVaP0M9TDxAQGx6Uis3X3ghOTUrRTspcF9D
eTkybyl3ZmMhKjJ1MFkkV2NfSFojTUYqcE43CmZHWn5WQkRpd2UjXkN2cUA2Si1SY1FzbD1hQmd0
d0YpWDQ8XnpmZEh3CgpkZWx0YSA5ClFjbWNiI2krU0ErPF8mc3gwMm9qTnZqNn05CgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmV4cC5pbgppbmRleCAzNTE2M2U0NDkxZGJiOTkzMzZiNmQ5NmVkMjA4YmM0MzliZWJiY2Jk
Li5kOWU0NmU2YTkwOGExM2RmYWQ3NmQ0NDg0YzFjNTA1MTEzZDA3OWE4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LmV4cC5pbgpAQCAtMTU3Nyw2ICsxNTc3LDggQEAgX3drU2lnbmFsQ0ZSZWFkU3RyZWFtSGFzQnl0
ZXMKIC5vYmpjX2NsYXNzX25hbWVfRE9NU3R5bGVTaGVldAogLm9iamNfY2xhc3NfbmFtZV9ET01T
dHlsZVNoZWV0TGlzdAogLm9iamNfY2xhc3NfbmFtZV9ET01UcmVlV2Fsa2VyCisub2JqY19jbGFz
c19uYW1lX1dlYkNvcmVGdWxsU2NyZWVuUGxhY2Vob2xkZXJWaWV3Cisub2JqY19jbGFzc19uYW1l
X1dlYkNvcmVGdWxsU2NyZWVuV2FybmluZ1ZpZXcKIC5vYmpjX2NsYXNzX25hbWVfV2ViQ29yZUZ1
bGxTY3JlZW5XaW5kb3cKIC5vYmpjX2NsYXNzX25hbWVfV2ViSFRNTENvbnZlcnRlcgogLm9iamNf
Y2xhc3NfbmFtZV9XZWJXaW5kb3dGYWRlQW5pbWF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNmMxNTg1NjZmYWNjNmIwY2M0
N2M0ZDNiNTk0NzViNTczMTRmZGM5Yy4uMzVkMDI4ZDI4ODc1OTI1OWFmZDdhZDk4OTVlMGUzMzJh
MzBlOTNmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtNTg5Myw2ICs1ODkzLDEwIEBACiAJCUNEQjg1OUY3MTYwRDQ4QTQwMEU1
QjA3RiAvKiBNZWRpYUtleUV2ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IENEQjg1OUY0MTYwRDQ4OTkwMEU1QjA3RiAvKiBNZWRpYUtleUV2ZW50
LmNwcCAqLzsgfTsKIAkJQ0RCODU5RkExNjBENDk0OTAwRTVCMDdGIC8qIEpTTWVkaWFLZXlFdmVu
dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREI4
NTlGODE2MEQ0OTNFMDBFNUIwN0YgLyogSlNNZWRpYUtleUV2ZW50LmNwcCAqLzsgfTsKIAkJQ0RC
ODU5RkIxNjBENDk0RjAwRTVCMDdGIC8qIEpTTWVkaWFLZXlFcnJvci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREI4NTlGMDE2MEQ0MkREMDBFNUIw
N0YgLyogSlNNZWRpYUtleUVycm9yLmNwcCAqLzsgfTsKKwkJQ0RDNjlERDYxNjMyMDI2QzAwN0Mz
OERGIC8qIFdlYkNvcmVGdWxsU2NyZWVuV2FybmluZ1ZpZXcuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQzY5REQ0MTYzMjAyNkMwMDdDMzhERiAvKiBX
ZWJDb3JlRnVsbFNjcmVlbldhcm5pbmdWaWV3LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQ0RDNjlERDcxNjMyMDI2QzAwN0MzOERGIC8qIFdlYkNv
cmVGdWxsU2NyZWVuV2FybmluZ1ZpZXcubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDREM2OURENTE2MzIwMjZDMDA3QzM4REYgLyogV2ViQ29yZUZ1bGxT
Y3JlZW5XYXJuaW5nVmlldy5tbSAqLzsgfTsKKwkJQ0RDNjlEREExNjM3MUZENDAwN0MzOERGIC8q
IFdlYkNvcmVGdWxsU2NyZWVuUGxhY2Vob2xkZXJWaWV3LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREM2OUREODE2MzcxRkQzMDA3QzM4REYgLyogV2Vi
Q29yZUZ1bGxTY3JlZW5QbGFjZWhvbGRlclZpZXcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQlDREM2OUREQjE2MzcxRkQ0MDA3QzM4REYgLyogV2Vi
Q29yZUZ1bGxTY3JlZW5QbGFjZWhvbGRlclZpZXcubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREM2OUREOTE2MzcxRkQzMDA3QzM4REYgLyogV2ViQ29y
ZUZ1bGxTY3JlZW5QbGFjZWhvbGRlclZpZXcubW0gKi87IH07CiAJCUNERDUyNUQ3MTQ1QjZERDAw
MDhEMjA0RCAvKiBKU0hUTUxNZWRpYUVsZW1lbnRDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RGNjVDQ0MxNDVCNkFGRTAwQzRDN0FBIC8q
IEpTSFRNTE1lZGlhRWxlbWVudEN1c3RvbS5jcHAgKi87IH07CiAJCUNERUE3NjMwMTQ2MDhBNTMw
MDhCMzFGMSAvKiBQbGF0Zm9ybUNsb2NrQ0EuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFQTc2MkUxNDYwODRERTAwOEIzMUYxIC8qIFBsYXRmb3Jt
Q2xvY2tDQS5jcHAgKi87IH07CiAJCUNERUE3NjM0MTQ2MEI1NkYwMDhCMzFGMSAvKiBDbG9ja0dl
bmVyaWMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Q0RFQTc2MzIxNDYwQUUyOTAwOEIzMUYxIC8qIENsb2NrR2VuZXJpYy5jcHAgKi87IH07CkBAIC04
NjkxLDYgKzg2OTUsOCBAQAogCQk1MDNEMENBODE0QjVCMDg3MDBGMzJGNTcgLyogQ3VzdG9tRmls
dGVyUHJvZ3JhbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBDdXN0b21GaWx0
ZXJQcm9ncmFtLmg7IHBhdGggPSBmaWx0ZXJzL0N1c3RvbUZpbHRlclByb2dyYW0uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTAzRDBDQTkxNEI1QjA4NzAwRjMyRjU3IC8qIEN1c3Rv
bUZpbHRlclByb2dyYW1DbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
Q3VzdG9tRmlsdGVyUHJvZ3JhbUNsaWVudC5oOyBwYXRoID0gZmlsdGVycy9DdXN0b21GaWx0ZXJQ
cm9ncmFtQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUwM0QwQ0FEMTRC
NUIwQkEwMEYzMkY1NyAvKiBTdHlsZUN1c3RvbUZpbHRlclByb2dyYW0uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtLmg7IHBhdGggPSBz
dHlsZS9TdHlsZUN1c3RvbUZpbHRlclByb2dyYW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNTA4MUUzREYzQ0ZDODBDMTZFRjhCNDhCIC8qIENhY2hlZFJlc291cmNlUmVxdWVzdC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2FjaGVkUmVzb3VyY2VS
ZXF1ZXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTA4MUUzRTEzRDAyODBD
MTZFRjhCNDhCIC8qIENhY2hlZFJlc291cmNlUmVxdWVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTUwOENDQTREMTNDRjEwNkIwMDMxNTFGMyAvKiBSZW5kZXJGbG93VGhyZWFk
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlckZsb3dUaHJlYWQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTA4Q0NBNEUxM0NGMTA2QjAwMzE1MUYzIC8q
IFJlbmRlckZsb3dUaHJlYWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gUmVuZGVyRmxvd1RocmVhZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUw
OTg3QzI0MTU3RDY3NkQwMEJEQTgzNSAvKiBDdXN0b21GaWx0ZXJHbG9iYWxDb250ZXh0LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEN1c3RvbUZpbHRlckdsb2JhbENv
bnRleHQuY3BwOyBwYXRoID0gZmlsdGVycy9DdXN0b21GaWx0ZXJHbG9iYWxDb250ZXh0LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEyOTY1LDggKzEyOTcxLDYgQEAKIAkJQkNC
MTZDMEYwOTc5QzNCRDAwNDY3NzQxIC8qIENhY2hlZFhTTFN0eWxlU2hlZXQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhY2hlZFhTTFN0eWxlU2hlZXQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNCMTZDMTAwOTc5QzNCRDAwNDY3NzQxIC8qIENhY2hlZFJl
c291cmNlTG9hZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBD
YWNoZWRSZXNvdXJjZUxvYWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJD
QjE2QzExMDk3OUMzQkQwMDQ2Nzc0MSAvKiBDYWNoZWRSZXNvdXJjZUxvYWRlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTA4MUUzREYzQ0ZDODBDMTZFRjhCNDhCIC8qIENhY2hl
ZFJlc291cmNlUmVxdWVzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJNTA4MUUzRTEzRDAyODBDMTZFRjhCNDhCIC8qIENhY2hlZFJlc291cmNlUmVxdWVzdC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDQjc3MzVFMEMxNzg1M0QwMDEzMkJBNCAv
KiBKU05vZGVGaWx0ZXJDb25kaXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTTm9kZUZpbHRlckNvbmRpdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUJDQjc3MzVGMEMxNzg1M0QwMDEzMkJBNCAvKiBKU05vZGVGaWx0ZXJDb25kaXRp
b24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTm9kZUZpbHRlckNvbmRp
dGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0I3NzM2MDBDMTc4NTNEMDAx
MzJCQTQgLyogSlNOb2RlRmlsdGVyQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU05vZGVGaWx0ZXJDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMTMyNjYsNiArMTMyNzAsMTAgQEAKIAkJQ0RCODU5RjgxNjBENDkzRTAwRTVC
MDdGIC8qIEpTTWVkaWFLZXlFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU01lZGlhS2V5RXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlDREI4NTlGOTE2MEQ0OTNFMDBFNUIwN0YgLyogSlNNZWRpYUtleUV2ZW50LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTWVkaWFLZXlFdmVudC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlDREJEOTNCQTEzMzNCRDRCMDAyNTcwRTMgLyogZnVsbHNjcmVlblF1
aWNrVGltZS5jc3MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LmNzczsgcGF0aCA9IGZ1bGxzY3JlZW5RdWlja1Rp
bWUuY3NzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREM2OURENDE2MzIwMjZDMDA3
QzM4REYgLyogV2ViQ29yZUZ1bGxTY3JlZW5XYXJuaW5nVmlldy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXZWJDb3JlRnVsbFNjcmVlbldhcm5pbmdWaWV3Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQzY5REQ1MTYzMjAyNkMwMDdDMzhERiAvKiBXZWJDb3Jl
RnVsbFNjcmVlbldhcm5pbmdWaWV3Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gV2ViQ29yZUZ1bGxTY3JlZW5XYXJuaW5nVmlldy5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQ0RDNjlERDgxNjM3MUZEMzAwN0MzOERGIC8qIFdlYkNvcmVGdWxsU2Ny
ZWVuUGxhY2Vob2xkZXJWaWV3LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdl
YkNvcmVGdWxsU2NyZWVuUGxhY2Vob2xkZXJWaWV3Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUNEQzY5REQ5MTYzNzFGRDMwMDdDMzhERiAvKiBXZWJDb3JlRnVsbFNjcmVlblBsYWNl
aG9sZGVyVmlldy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdl
YkNvcmVGdWxsU2NyZWVuUGxhY2Vob2xkZXJWaWV3Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlDRENFNUNEMDE0NjMzQkM5MDBENDdDQ0EgLyogRXZlbnRUYXJnZXRGYWN0b3J5Lmlu
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEV2ZW50VGFyZ2V0RmFjdG9yeS5pbjsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RFQTc2MkMxNDYwODIyNDAwOEIzMUYxIC8qIENsb2NrLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENsb2NrLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUNERUE3NjJFMTQ2MDg0REUwMDhCMzFGMSAvKiBQbGF0Zm9ybUNsb2Nr
Q0EuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGxhdGZvcm1DbG9j
a0NBLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1NzYwLDYgKzE1NzY4LDEw
IEBACiAJCQkJQkNFNjU5RTUwRUE5MkZCMjAwN0U0NTMzIC8qIFRoZW1lTWFjLmggKi8sCiAJCQkJ
QkNFNjU5RTgwRUE5MkZGQTAwN0U0NTMzIC8qIFRoZW1lTWFjLm1tICovLAogCQkJCTUxREY2RDdG
MEI5MkExOEUwMEMyREM4NSAvKiBUaHJlYWRDaGVjay5tbSAqLywKKwkJCQlDREM2OUREODE2Mzcx
RkQzMDA3QzM4REYgLyogV2ViQ29yZUZ1bGxTY3JlZW5QbGFjZWhvbGRlclZpZXcuaCAqLywKKwkJ
CQlDREM2OUREOTE2MzcxRkQzMDA3QzM4REYgLyogV2ViQ29yZUZ1bGxTY3JlZW5QbGFjZWhvbGRl
clZpZXcubW0gKi8sCisJCQkJQ0RDNjlERDQxNjMyMDI2QzAwN0MzOERGIC8qIFdlYkNvcmVGdWxs
U2NyZWVuV2FybmluZ1ZpZXcuaCAqLywKKwkJCQlDREM2OURENTE2MzIwMjZDMDA3QzM4REYgLyog
V2ViQ29yZUZ1bGxTY3JlZW5XYXJuaW5nVmlldy5tbSAqLywKIAkJCQlDRDEyN0RFQTE0RjMwOTc5
MDBFODQ3NzkgLyogV2ViQ29yZUZ1bGxTY3JlZW5XaW5kb3cuaCAqLywKIAkJCQlDRDEyN0RFQjE0
RjMwOTc5MDBFODQ3NzkgLyogV2ViQ29yZUZ1bGxTY3JlZW5XaW5kb3cubW0gKi8sCiAJCQkJMzcx
OTQxOTUxNTY2QjM3MjAwQTI3NkQ4IC8qIFdlYkNvcmVOU0NlbGxFeHRyYXMuaCAqLywKQEAgLTI1
NDg4LDYgKzI1NTAwLDcgQEAKIAkJCQlGRDU4MUZCNTE1MjBGOTNCMDAzQTdBNzUgLyogV2F2ZVRh
YmxlLmggaW4gSGVhZGVycyAqLywKIAkJCQkyOUE4MTI0OTBGQkI5Q0E5MDA1MTAyOTMgLyogV2Vi
QWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRjE5OUE4
MDgyNDVFNTkwMDFFOUFCQyAvKiBXZWJDb3JlRnJhbWVWaWV3LmggaW4gSGVhZGVycyAqLywKKwkJ
CQlDREM2OURENjE2MzIwMjZDMDA3QzM4REYgLyogV2ViQ29yZUZ1bGxTY3JlZW5XYXJuaW5nVmll
dy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0QxMjdERUUxNEYzMDk4NDAwRTg0Nzc5IC8qIFdlYkNv
cmVGdWxsU2NyZWVuV2luZG93LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzUzRDkxMTExNDMxMEND
MDAwRDgxN0UgLyogV2ViQ29yZUpTQ2xpZW50RGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNG
MTk5QkIwODI0NUU1OTAwMUU5QUJDIC8qIFdlYkNvcmVLZXlib2FyZFVJTW9kZS5oIGluIEhlYWRl
cnMgKi8sCkBAIC0yNTY0OSw2ICsyNTY2Miw3IEBACiAJCQkJN0U1RDdBNzcxNjFEM0Y4RjAwODk2
QzM0IC8qIE9FU0VsZW1lbnRJbmRleFVpbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTdFNDZGNkZC
MTYyN0EyQ0EwMDA2MjIyMyAvKiBKU09FU0VsZW1lbnRJbmRleFVpbnQuaCBpbiBIZWFkZXJzICov
LAogCQkJCUU0NzEyN0NCMTYzNDM4QUUwMEVENkY1QSAvKiBTdHlsZUludmFsaWRhdGlvbkFuYWx5
c2lzLmggaW4gSGVhZGVycyAqLywKKwkJCQlDREM2OUREQTE2MzcxRkQ0MDA3QzM4REYgLyogV2Vi
Q29yZUZ1bGxTY3JlZW5QbGFjZWhvbGRlclZpZXcuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJ
CXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjg2MTUs
NiArMjg2MjksNyBAQAogCQkJCUZEN0YyOTk2MTNENEMwQ0IwMEFEOTUzNSAvKiBXYXZlU2hhcGVy
UHJvY2Vzc29yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZENTgxRkI0MTUyMEY5M0IwMDNBN0E3
NSAvKiBXYXZlVGFibGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMjlBODEyNEEwRkJCOUNBOTAw
NTEwMjkzIC8qIFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLm1tIGluIFNvdXJjZXMgKi8s
CisJCQkJQ0RDNjlERDcxNjMyMDI2QzAwN0MzOERGIC8qIFdlYkNvcmVGdWxsU2NyZWVuV2Fybmlu
Z1ZpZXcubW0gaW4gU291cmNlcyAqLywKIAkJCQlDRDEyN0RFRDE0RjMwOTdEMDBFODQ3NzkgLyog
V2ViQ29yZUZ1bGxTY3JlZW5XaW5kb3cubW0gaW4gU291cmNlcyAqLywKIAkJCQlGM0JGQzlEMzE1
QzE3N0VDMDA0MjQ0RTUgLyogV2ViQ29yZU1lbW9yeUluc3RydW1lbnRhdGlvbi5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkzNzE5NDE5NjE1NjZCMzcyMDBBMjc2RDggLyogV2ViQ29yZU5TQ2VsbEV4
dHJhcy5tIGluIFNvdXJjZXMgKi8sCkBAIC0yODc2MCw2ICsyODc3NSw3IEBACiAJCQkJN0U1RDdB
NzYxNjFEM0Y4RjAwODk2QzM0IC8qIE9FU0VsZW1lbnRJbmRleFVpbnQuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJN0U0NkY2RkExNjI3QTJDQTAwMDYyMjIzIC8qIEpTT0VTRWxlbWVudEluZGV4VWlu
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFNDcxMjdDQTE2MzQzOEExMDBFRDZGNUEgLyogU3R5
bGVJbnZhbGlkYXRpb25BbmFseXNpcy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDREM2OUREQjE2
MzcxRkQ0MDA3QzM4REYgLyogV2ViQ29yZUZ1bGxTY3JlZW5QbGFjZWhvbGRlclZpZXcubW0gaW4g
U291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5n
ID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvY2FsaXpl
ZFN0cmluZ3MuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5j
cHAKaW5kZXggYWJmMWJjYTVlODU0MTBiYTg3ZDVjYWI4MjUwMGQ5NjlmMTA5MjZhNy4uNjM4YzA1
NWEyNjY5ZWQwYTFmY2NkZWQ1MTBmNjY1ZGFkNzE2ODhlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5jcHAKQEAgLTk4NSw0ICs5ODUsOSBAQCBTdHJpbmcg
dmFsaWRhdGlvbk1lc3NhZ2VTdGVwTWlzbWF0Y2hUZXh0KGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0
cmluZyYpCiAgICAgcmV0dXJuIFdFQl9VSV9TVFJJTkcoInN0ZXAgbWlzbWF0Y2giLCAiVmFsaWRh
dGlvbiBtZXNzYWdlIGZvciBpbnB1dCBmb3JtIGNvbnRyb2xzIHdpdGggdmFsdWUgbm90IHJlc3Bl
Y3RpbmcgdGhlIHN0ZXAgYXR0cmlidXRlIik7CiB9CiAKK1N0cmluZyBjbGlja1RvRXhpdEZ1bGxT
Y3JlZW5UZXh0KCkKK3sKKyAgICByZXR1cm4gV0VCX1VJX1NUUklORygiQ2xpY2sgdG8gZXhpdCBm
dWxsIHNjcmVlbiBtb2RlIiwgIk1lc3NhZ2UgdG8gZGlzcGxheSBpbiBicm93c2VyIHdpbmRvdyB3
aGVuIGluIHdlYmtpdCBmdWxsIHNjcmVlbiBtb2RlLiIpOworfQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJp
bmdzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmgKaW5kZXgg
OGM1NmZlMWQ1Y2ZjMjQ3OTk2YzkwODI2NGMzZjk3MTI0MDEzNTQ1Yy4uZTNmMzMwYTQ1ODgyYTJh
ZWVkNDI1ZTA0NjFmMjI3MmE3MTYyZThkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vTG9jYWxpemVkU3RyaW5ncy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xv
Y2FsaXplZFN0cmluZ3MuaApAQCAtMjU3LDYgKzI1Nyw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICBTdHJpbmcgdW5hY2NlcHRhYmxlVExTQ2VydGlmaWNhdGUoKTsKICNlbmRpZgogCisgICAg
U3RyaW5nIGNsaWNrVG9FeGl0RnVsbFNjcmVlblRleHQoKTsKKwogI2lmICFQTEFURk9STShDSFJP
TUlVTSkKICNkZWZpbmUgV0VCX1VJX1NUUklORyhzdHJpbmcsIGRlc2NyaXB0aW9uKSBXZWJDb3Jl
Ojpsb2NhbGl6ZWRTdHJpbmcoc3RyaW5nKQogI2RlZmluZSBXRUJfVUlfU1RSSU5HX0tFWShzdHJp
bmcsIGtleSwgZGVzY3JpcHRpb24pIFdlYkNvcmU6OmxvY2FsaXplZFN0cmluZyhrZXkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZUZ1bGxTY3JlZW5QbGFj
ZWhvbGRlclZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlRnVsbFNj
cmVlblBsYWNlaG9sZGVyVmlldy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdiMjQzYjBhMmYyNGMyMDU3MzdhYTM5
NzhkMWE4YzZhZTRkYzQ0YzMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvV2ViQ29yZUZ1bGxTY3JlZW5QbGFjZWhvbGRlclZpZXcuaApAQCAtMCwwICsxLDQy
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJDb3JlRnVsbFNjcmVlblBsYWNlaG9sZGVyVmll
d19oCisjZGVmaW5lIFdlYkNvcmVGdWxsU2NyZWVuUGxhY2Vob2xkZXJWaWV3X2gKKworI2ltcG9y
dCA8d3RmL1JldGFpblB0ci5oPgorCitAaW50ZXJmYWNlIFdlYkNvcmVGdWxsU2NyZWVuUGxhY2Vo
b2xkZXJWaWV3IDogTlNWaWV3IHsKKyAgICBSZXRhaW5QdHI8TlNWaWV3PiBfZXhpdFdhcm5pbmc7
CisgICAgTlNPYmplY3QqIF90YXJnZXQ7CisgICAgU0VMIF9hY3Rpb247Cit9CitAcHJvcGVydHko
cmV0YWluKSBpZCBjb250ZW50czsKK0Bwcm9wZXJ0eShhc3NpZ24pIE5TT2JqZWN0KiB0YXJnZXQ7
CitAcHJvcGVydHkoYXNzaWduKSBTRUwgYWN0aW9uOworLSAodm9pZClzZXRFeGl0V2FybmluZ1Zp
c2libGU6KEJPT0wpdmlzaWJsZTsKK0BlbmQKKworI2VuZGlmIC8vIFdlYkNvcmVGdWxsU2NyZWVu
UGxhY2Vob2xkZXJWaWV3X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9XZWJDb3JlRnVsbFNjcmVlblBsYWNlaG9sZGVyVmlldy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9XZWJDb3JlRnVsbFNjcmVlblBsYWNlaG9sZGVyVmlldy5tbQpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42OTIxMDI0OTVkMmFiZjFlZjdkZjUxMmU1ZDQyMTA3MmQzYzA0ZTc3Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVGdWxsU2NyZWVuUGxhY2Vo
b2xkZXJWaWV3Lm1tCkBAIC0wLDAgKzEsOTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiV2ViQ29yZUZ1bGxTY3JlZW5QbGFjZWhvbGRlclZpZXcuaCIKKwor
I2luY2x1ZGUgIkxvY2FsaXplZFN0cmluZ3MuaCIKKyNpbmNsdWRlICJXZWJDb3JlRnVsbFNjcmVl
bldhcm5pbmdWaWV3LmgiCisjaW5jbHVkZSA8UXVhcnR6Q29yZS9Db3JlSW1hZ2UuaD4KKyNpbmNs
dWRlIDx3dGYvVW51c2VkUGFyYW0uaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
KwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK0BpbXBsZW1lbnRhdGlvbiBXZWJDb3JlRnVs
bFNjcmVlblBsYWNlaG9sZGVyVmlldworLSAoaWQpaW5pdFdpdGhGcmFtZTooTlNSZWN0KWZyYW1l
UmVjdAoreworICAgIHNlbGYgPSBbc3VwZXIgaW5pdFdpdGhGcmFtZTpmcmFtZVJlY3RdOworICAg
IGlmICghc2VsZikKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIFtzZWxmIHNldExheWVyOltD
QUxheWVyIGxheWVyXV07CisgICAgW3NlbGYgc2V0TGF5ZXJDb250ZW50c1JlZHJhd1BvbGljeTpO
U1ZpZXdMYXllckNvbnRlbnRzUmVkcmF3TmV2ZXJdOworICAgIFtzZWxmIHNldFdhbnRzTGF5ZXI6
WUVTXTsKKworICAgIF9leGl0V2FybmluZyA9IGFkb3B0TlMoW1tXZWJDb3JlRnVsbFNjcmVlbldh
cm5pbmdWaWV3IGFsbG9jXSBpbml0V2l0aFRpdGxlOmNsaWNrVG9FeGl0RnVsbFNjcmVlblRleHQo
KV0pOworICAgIE5TUmVjdCB3YXJuaW5nRnJhbWUgPSBbX2V4aXRXYXJuaW5nLmdldCgpIGZyYW1l
XTsKKyAgICB3YXJuaW5nRnJhbWUub3JpZ2luID0gTlNNYWtlUG9pbnQoCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIChmcmFtZVJlY3Quc2l6ZS53aWR0aCAtIHdhcm5pbmdG
cmFtZS5zaXplLndpZHRoKSAvIDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIChmcmFtZVJlY3Quc2l6ZS5oZWlnaHQgLSB3YXJuaW5nRnJhbWUuc2l6ZS5oZWlnaHQpIC8g
Mik7CisgICAgW19leGl0V2FybmluZy5nZXQoKSBzZXRGcmFtZTp3YXJuaW5nRnJhbWVdOworICAg
IFtfZXhpdFdhcm5pbmcuZ2V0KCkgc2V0SGlkZGVuOllFU107CisgICAgW3NlbGYgYWRkU3Vidmll
dzpfZXhpdFdhcm5pbmcuZ2V0KCldOworCisgICAgcmV0dXJuIHNlbGY7Cit9CisKK0BzeW50aGVz
aXplIHRhcmdldCA9IF90YXJnZXQ7CitAc3ludGhlc2l6ZSBhY3Rpb24gPSBfYWN0aW9uOworCitA
ZHluYW1pYyBjb250ZW50czsKKy0gKHZvaWQpc2V0Q29udGVudHM6KGlkKWNvbnRlbnRzCit7Cisg
ICAgW1tzZWxmIGxheWVyXSBzZXRDb250ZW50czpjb250ZW50c107Cit9CisKKy0gKGlkKWNvbnRl
bnRzCit7CisgICAgcmV0dXJuIFtbc2VsZiBsYXllcl0gY29udGVudHNdOworfQorCistICh2b2lk
KXNldEV4aXRXYXJuaW5nVmlzaWJsZTooQk9PTCl2aXNpYmxlCit7CisgICAgW19leGl0V2Fybmlu
Zy5nZXQoKSBzZXRIaWRkZW46IXZpc2libGVdOworICAgIGlmICh2aXNpYmxlKSB7CisgICAgICAg
IENJRmlsdGVyKiBmaWx0ZXIgPSBbQ0lGaWx0ZXIgZmlsdGVyV2l0aE5hbWU6QCJDSUZhbHNlQ29s
b3IiIGtleXNBbmRWYWx1ZXM6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQCJpbnB1dENv
bG9yMCIsIFtDSUNvbG9yIGNvbG9yV2l0aFJlZDowIGdyZWVuOjAgYmx1ZTowXSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBAImlucHV0Q29sb3IxIiwgW0NJQ29sb3IgY29sb3JXaXRoUmVk
Oi45IGdyZWVuOi45IGJsdWU6LjldLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pbF07
CisgICAgICAgIFtbc2VsZiBsYXllcl0gc2V0Q29tcG9zaXRpbmdGaWx0ZXI6ZmlsdGVyXTsKKyAg
ICB9IGVsc2UKKyAgICAgICAgW1tzZWxmIGxheWVyXSBzZXRDb21wb3NpdGluZ0ZpbHRlcjpuaWxd
OworfQorCistICh2b2lkKW1vdXNlRG93bjooTlNFdmVudCAqKXRoZUV2ZW50Cit7CisgICAgVU5V
U0VEX1BBUkFNKHRoZUV2ZW50KTsKKworICAgIGlmICghX3RhcmdldCB8fCAhX2FjdGlvbikKKyAg
ICAgICAgcmV0dXJuOworICAgIFtfdGFyZ2V0IHBlcmZvcm1TZWxlY3RvcjpfYWN0aW9uXTsKK30K
KworQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVG
dWxsU2NyZWVuV2FybmluZ1ZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJD
b3JlRnVsbFNjcmVlbldhcm5pbmdWaWV3LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjZlYTlhZDc4NGVhZTJkZTA5
NWQxZTMwZWRkN2MwYzU0ZmE2Y2NjZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9XZWJDb3JlRnVsbFNjcmVlbldhcm5pbmdWaWV3LmgKQEAgLTAsMCArMSw0
MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViQ29yZUZ1bGxTY3JlZW5XYXJuaW5nVmlld19o
CisjZGVmaW5lIFdlYkNvcmVGdWxsU2NyZWVuV2FybmluZ1ZpZXdfaAorCisjaWYgRU5BQkxFKEZV
TExTQ1JFRU5fQVBJKQorCisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCitAaW50ZXJmYWNl
ICBXZWJDb3JlRnVsbFNjcmVlbldhcm5pbmdWaWV3IDogTlNCb3ggeworICAgIFJldGFpblB0cjxO
U1RleHRGaWVsZD4gX3RleHRGaWVsZDsKK30KKy0gKGlkKWluaXRXaXRoVGl0bGU6KE5TU3RyaW5n
Kil0aXRsZTsKK0BlbmQKKworI2VuZGlmCisKKyNlbmRpZiAvLyBXZWJDb3JlRnVsbFNjcmVlbldh
cm5pbmdWaWV3X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJD
b3JlRnVsbFNjcmVlbldhcm5pbmdWaWV3Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1dlYkNvcmVGdWxsU2NyZWVuV2FybmluZ1ZpZXcubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2VkOThjMTg5MWU2
NDVjMDVmYjQxZjUyMWNlOGE2OTZjYWQ2ZGNkMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlRnVsbFNjcmVlbldhcm5pbmdWaWV3Lm1tCkBAIC0w
LDAgKzEsMTA3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IldlYkNvcmVGdWxsU2NyZWVuV2FybmluZ1ZpZXcuaCIKKyNpbmNsdWRlICJMb2NhbGl6ZWRTdHJp
bmdzLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK3N0YXRpYyBjb25zdCBD
R0Zsb2F0IFdhcm5pbmdWaWV3VGV4dFdoaXRlID0gMC45Oworc3RhdGljIGNvbnN0IENHRmxvYXQg
V2FybmluZ1ZpZXdUZXh0QWxwaGEgPSAxOworc3RhdGljIGNvbnN0IENHRmxvYXQgV2FybmluZ1Zp
ZXdUZXh0U2l6ZSA9IDQ4Oworc3RhdGljIGNvbnN0IENHRmxvYXQgV2FybmluZ1ZpZXdQYWRkaW5n
ID0gMjA7CitzdGF0aWMgY29uc3QgQ0dGbG9hdCBXYXJuaW5nVmlld0Nvcm5lclJhZGl1cyA9IDEw
Oworc3RhdGljIGNvbnN0IENHRmxvYXQgV2FybmluZ1ZpZXdCb3JkZXJXaGl0ZSA9IDAuOTsKK3N0
YXRpYyBjb25zdCBDR0Zsb2F0IFdhcm5pbmdWaWV3Qm9yZGVyQWxwaGEgPSAwLjI7CitzdGF0aWMg
Y29uc3QgQ0dGbG9hdCBXYXJuaW5nVmlld0JhY2tncm91bmRXaGl0ZSA9IDAuMTsKK3N0YXRpYyBj
b25zdCBDR0Zsb2F0IFdhcm5pbmdWaWV3QmFja2dyb3VuZEFscGhhID0gMC45Oworc3RhdGljIGNv
bnN0IENHRmxvYXQgV2FybmluZ1ZpZXdTaGFkb3dXaGl0ZSA9IDAuMTsKK3N0YXRpYyBjb25zdCBD
R0Zsb2F0IFdhcm5pbmdWaWV3U2hhZG93QWxwaGEgPSAxOworc3RhdGljIGNvbnN0IGZsb2F0IFdh
cm5pbmdWaWV3U2hhZG93T3BhY2l0eSA9IDAuMjU7CitzdGF0aWMgY29uc3QgQ0dTaXplIFdhcm5p
bmdWaWV3U2hhZG93T2Zmc2V0ID0gezAsIC0yfTsKK3N0YXRpYyBjb25zdCBDR0Zsb2F0IFdhcm5p
bmdWaWV3U2hhZG93UmFkaXVzID0gNTsKK3N0YXRpYyBjb25zdCBOU1RpbWVJbnRlcnZhbCBXYXJu
aW5nVmlld0hpZGVEZWxheSA9IDMuMDsKK3N0YXRpYyBjb25zdCBOU1RpbWVJbnRlcnZhbCBXYXJu
aW5nVmlld0ZhZGVEdXJhdGlvbiA9IDAuNTsKKworQGltcGxlbWVudGF0aW9uIFdlYkNvcmVGdWxs
U2NyZWVuV2FybmluZ1ZpZXcKKworLSAoaWQpaW5pdFdpdGhUaXRsZTooTlNTdHJpbmcqKXRpdGxl
Cit7CisgICAgc2VsZiA9IFtzdXBlciBpbml0V2l0aEZyYW1lOk5TWmVyb1JlY3RdOworICAgIGlm
ICghc2VsZikKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIFtzZWxmIHNldEF1dG9yZXNpemlu
Z01hc2s6KE5TVmlld01pblhNYXJnaW4gfCBOU1ZpZXdNYXhYTWFyZ2luIHwgTlNWaWV3TWluWU1h
cmdpbiB8IE5TVmlld01heFlNYXJnaW4pXTsKKyAgICBbc2VsZiBzZXRCb3hUeXBlOk5TQm94Q3Vz
dG9tXTsKKyAgICBbc2VsZiBzZXRUaXRsZVBvc2l0aW9uOk5TTm9UaXRsZV07CisKKyAgICBfdGV4
dEZpZWxkID0gYWRvcHROUyhbW05TVGV4dEZpZWxkIGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TWmVy
b1JlY3RdKTsKKyAgICBbX3RleHRGaWVsZC5nZXQoKSBzZXRFZGl0YWJsZTpOT107CisgICAgW190
ZXh0RmllbGQuZ2V0KCkgc2V0U2VsZWN0YWJsZTpOT107CisgICAgW190ZXh0RmllbGQuZ2V0KCkg
c2V0Qm9yZGVyZWQ6Tk9dOworICAgIFtfdGV4dEZpZWxkLmdldCgpIHNldERyYXdzQmFja2dyb3Vu
ZDpOT107CisKKyAgICBSZXRhaW5QdHI8TlNGb250PiB0ZXh0Rm9udCA9IFtOU0ZvbnQgYm9sZFN5
c3RlbUZvbnRPZlNpemU6V2FybmluZ1ZpZXdUZXh0U2l6ZV07CisgICAgUmV0YWluUHRyPE5TQ29s
b3I+IHRleHRDb2xvciA9IFtOU0NvbG9yIGNvbG9yV2l0aENhbGlicmF0ZWRXaGl0ZTpXYXJuaW5n
Vmlld1RleHRXaGl0ZSBhbHBoYTpXYXJuaW5nVmlld1RleHRBbHBoYV07CisgICAgUmV0YWluUHRy
PE5TRGljdGlvbmFyeT4gYXR0cmlidXRlcyA9IGFkb3B0TlMoW1tOU0RpY3Rpb25hcnkgYWxsb2Nd
IGluaXRXaXRoT2JqZWN0c0FuZEtleXM6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHRleHRGb250LmdldCgpLCBOU0ZvbnRBdHRyaWJ1dGVOYW1lLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0Q29s
b3IuZ2V0KCksIE5TRm9yZWdyb3VuZENvbG9yQXR0cmlidXRlTmFtZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlsXSk7CisgICAgUmV0YWluUHRy
PE5TQXR0cmlidXRlZFN0cmluZz4gdGV4dCA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcg
YWxsb2NdIGluaXRXaXRoU3RyaW5nOnRpdGxlIGF0dHJpYnV0ZXM6YXR0cmlidXRlcy5nZXQoKV0p
OworICAgIFtfdGV4dEZpZWxkLmdldCgpIHNldEF0dHJpYnV0ZWRTdHJpbmdWYWx1ZTp0ZXh0Lmdl
dCgpXTsKKyAgICBbX3RleHRGaWVsZC5nZXQoKSBzaXplVG9GaXRdOworICAgIE5TUmVjdCB0ZXh0
RmllbGRGcmFtZSA9IFtfdGV4dEZpZWxkLmdldCgpIGZyYW1lXTsKKyAgICBOU1NpemUgZnJhbWVT
aXplID0gdGV4dEZpZWxkRnJhbWUuc2l6ZTsKKyAgICBmcmFtZVNpemUud2lkdGggKz0gV2Fybmlu
Z1ZpZXdQYWRkaW5nICogMjsKKyAgICBmcmFtZVNpemUuaGVpZ2h0ICs9IFdhcm5pbmdWaWV3UGFk
ZGluZyAqIDI7CisgICAgW3NlbGYgc2V0RnJhbWVTaXplOmZyYW1lU2l6ZV07CisKKyAgICB0ZXh0
RmllbGRGcmFtZS5vcmlnaW4gPSBOU01ha2VQb2ludCgKKyAgICAgICAgKGZyYW1lU2l6ZS53aWR0
aCAtIHRleHRGaWVsZEZyYW1lLnNpemUud2lkdGgpIC8gMiwKKyAgICAgICAgKGZyYW1lU2l6ZS5o
ZWlnaHQgLSB0ZXh0RmllbGRGcmFtZS5zaXplLmhlaWdodCkgLyAyKTsKKworICAgIC8vIE9mZnNl
dCB0aGUgb3JpZ2luIGJ5IHRoZSBmb250J3MgZGVzY2VuZGVyLCB0byBjZW50ZXIgdGhlIHRleHQg
ZmllbGQgYWJvdXQgdGhlIGJhc2VsaW5lOgorICAgIHRleHRGaWVsZEZyYW1lLm9yaWdpbi55ICs9
IFtbX3RleHRGaWVsZC5nZXQoKSBmb250XSBkZXNjZW5kZXJdOworCisgICAgW190ZXh0RmllbGQu
Z2V0KCkgc2V0RnJhbWU6TlNJbnRlZ3JhbFJlY3QodGV4dEZpZWxkRnJhbWUpXTsKKyAgICBbc2Vs
ZiBhZGRTdWJ2aWV3Ol90ZXh0RmllbGQuZ2V0KCldOworCisgICAgUmV0YWluUHRyPE5TQ29sb3I+
IGJhY2tncm91bmRDb2xvciA9IFtOU0NvbG9yIGNvbG9yV2l0aENhbGlicmF0ZWRXaGl0ZTpXYXJu
aW5nVmlld0JhY2tncm91bmRXaGl0ZSBhbHBoYTpXYXJuaW5nVmlld0JhY2tncm91bmRBbHBoYV07
CisgICAgW3NlbGYgc2V0RmlsbENvbG9yOmJhY2tncm91bmRDb2xvci5nZXQoKV07CisgICAgW3Nl
bGYgc2V0Q29ybmVyUmFkaXVzOldhcm5pbmdWaWV3Q29ybmVyUmFkaXVzXTsKKworICAgIFJldGFp
blB0cjxOU0NvbG9yPiBib3JkZXJDb2xvciA9IFtOU0NvbG9yIGNvbG9yV2l0aENhbGlicmF0ZWRX
aGl0ZTpXYXJuaW5nVmlld0JvcmRlcldoaXRlIGFscGhhOldhcm5pbmdWaWV3Qm9yZGVyQWxwaGFd
OworICAgIFtzZWxmIHNldEJvcmRlckNvbG9yOmJvcmRlckNvbG9yLmdldCgpXTsKKworICAgIFJl
dGFpblB0cjxOU1NoYWRvdz4gc2hhZG93ID0gYWRvcHROUyhbW05TU2hhZG93IGFsbG9jXSBpbml0
XSk7CisgICAgUmV0YWluUHRyPE5TQ29sb3I+IHNoYWRvd0NvbG9yID0gW05TQ29sb3IgY29sb3JX
aXRoQ2FsaWJyYXRlZFdoaXRlOldhcm5pbmdWaWV3U2hhZG93V2hpdGUgYWxwaGE6V2FybmluZ1Zp
ZXdTaGFkb3dBbHBoYV07CisgICAgW3NoYWRvdy5nZXQoKSBzZXRTaGFkb3dDb2xvcjpzaGFkb3dD
b2xvci5nZXQoKV07CisgICAgW3NoYWRvdy5nZXQoKSBzZXRTaGFkb3dPZmZzZXQ6V2FybmluZ1Zp
ZXdTaGFkb3dPZmZzZXRdOworICAgIFtzaGFkb3cuZ2V0KCkgc2V0U2hhZG93Qmx1clJhZGl1czpX
YXJuaW5nVmlld1NoYWRvd1JhZGl1c107CisgICAgW3NlbGYgc2V0U2hhZG93OnNoYWRvdy5nZXQo
KV07CisKKyAgICByZXR1cm4gc2VsZjsKK30KK0BlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9tYWMvV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL21hYy9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLmgKaW5k
ZXggOWNlODhhZTVhOTZiYmRiZjlkYWY5YzY3MDM5MTA3YWY5Mjg4ZTk4Yy4uZTQ3ODlhZTNhNzNm
OTIzNGIyN2JjN2UwNjdiNDYyNDk4NTAwODNjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL21hYy9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLmgKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL21hYy9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLmgKQEAg
LTM4LDEzICszOCwxNCBAQCBjbGFzcyBJbnRSZWN0OwogfQogCiBAY2xhc3MgV0tWaWV3OworQGNs
YXNzIFdlYkNvcmVGdWxsU2NyZWVuUGxhY2Vob2xkZXJWaWV3OwogQGNsYXNzIFdlYldpbmRvd1Nj
YWxlQW5pbWF0aW9uOwogQGNsYXNzIFdlYldpbmRvd0ZhZGVBbmltYXRpb247CiAKLUBpbnRlcmZh
Y2UgV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlciA6IE5TV2luZG93Q29udHJvbGxlciB7CitA
aW50ZXJmYWNlIFdLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIgOiBOU1dpbmRvd0NvbnRyb2xs
ZXI8TlNXaW5kb3dEZWxlZ2F0ZT4gewogQHByaXZhdGUKICAgICBXS1ZpZXcgKl93ZWJWaWV3Owot
ICAgIFJldGFpblB0cjxOU0ltYWdlVmlldz4gX3dlYlZpZXdQbGFjZWhvbGRlcjsKKyAgICBSZXRh
aW5QdHI8V2ViQ29yZUZ1bGxTY3JlZW5QbGFjZWhvbGRlclZpZXc+IF93ZWJWaWV3UGxhY2Vob2xk
ZXI7CiAgICAgUmV0YWluUHRyPFdlYldpbmRvd1NjYWxlQW5pbWF0aW9uPiBfc2NhbGVBbmltYXRp
b247CiAgICAgUmV0YWluUHRyPFdlYldpbmRvd0ZhZGVBbmltYXRpb24+IF9mYWRlQW5pbWF0aW9u
OwogICAgIFJldGFpblB0cjxOU1dpbmRvdz4gX2JhY2tncm91bmRXaW5kb3c7CkBAIC01Niw2ICs1
Nyw3IEBAIGNsYXNzIEludFJlY3Q7CiAgICAgQk9PTCBfaXNFeGl0aW5nRnVsbFNjcmVlbjsKICAg
ICBCT09MIF9pc0Z1bGxTY3JlZW47CiAgICAgQk9PTCBfaXNQbGF5aW5nOworICAgIE5TVGltZUlu
dGVydmFsIF9hbmltYXRpb25EdXJhdGlvbjsKIH0KIAogLSAoV0tWaWV3Kil3ZWJWaWV3OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XS0Z1bGxTY3JlZW5XaW5kb3dD
b250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XS0Z1bGxTY3JlZW5X
aW5kb3dDb250cm9sbGVyLm1tCmluZGV4IGViODIxMzRlZjFhMGU1N2Y2Yjc1ZTY2MDg3YWY3ZjU1
NzM2MDE4YzcuLmU4YzM5MzQ2MDY1NWE2NDM1ODUwYWI0ODVlNmIyYmI3NmQyMTcxMDMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV0tGdWxsU2NyZWVuV2luZG93Q29u
dHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dLRnVsbFNjcmVl
bldpbmRvd0NvbnRyb2xsZXIubW0KQEAgLTM5LDYgKzM5LDggQEAKICNpbXBvcnQgPFdlYkNvcmUv
RGlzcGxheVNsZWVwRGlzYWJsZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvRmxvYXRSZWN0Lmg+CiAj
aW1wb3J0IDxXZWJDb3JlL0ludFJlY3QuaD4KKyNpbXBvcnQgPFdlYkNvcmUvTG9jYWxpemVkU3Ry
aW5ncy5oPgorI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlRnVsbFNjcmVlblBsYWNlaG9sZGVyVmll
dy5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlRnVsbFNjcmVlbldpbmRvdy5oPgogI2ltcG9y
dCA8V2ViQ29yZS9XZWJXaW5kb3dBbmltYXRpb24uaD4KICNpbXBvcnQgPFdlYktpdC9XZWJOU1dp
bmRvd0V4dHJhcy5oPgpAQCAtNTMsOCArNTUsMTIgQEAgc3RhdGljIFJldGFpblB0cjxOU1dpbmRv
dz4gY3JlYXRlQmFja2dyb3VuZEZ1bGxzY3JlZW5XaW5kb3coTlNSZWN0IGZyYW1lKTsKIHN0YXRp
YyBjb25zdCBDRlRpbWVJbnRlcnZhbCBkZWZhdWx0QW5pbWF0aW9uRHVyYXRpb24gPSAwLjU7CiBz
dGF0aWMgY29uc3QgTlNUaW1lSW50ZXJ2YWwgRGVmYXVsdFdhdGNoZG9nVGltZXJJbnRlcnZhbCA9
IDE7CiAKK0BpbnRlcmZhY2UgTlNXaW5kb3coTW9yZVNwZWNpZmljRnVsbFNjcmVlbkFjdGlvbnMp
CistICh2b2lkKWV4aXRGdWxsU2NyZWVuTW9kZTooaWQpc2VuZGVyOworLSAodm9pZCllbnRlckZ1
bGxTY3JlZW5Nb2RlOihpZClzZW5kZXI7CitAZW5kCisKIEBpbnRlcmZhY2UgV0tGdWxsU2NyZWVu
V2luZG93Q29udHJvbGxlcihQcml2YXRlKTxOU0FuaW1hdGlvbkRlbGVnYXRlPgotLSAodm9pZClf
dXBkYXRlTWVudUFuZERvY2tGb3JGdWxsU2NyZWVuOwogLSAodm9pZClfcmVwbGFjZVZpZXc6KE5T
VmlldyopdmlldyB3aXRoOihOU1ZpZXcqKW90aGVyVmlldzsKIC0gKFdlYlBhZ2VQcm94eSopX3Bh
Z2U7CiAtIChXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5KilfbWFuYWdlcjsKQEAgLTkyLDYgKzk4
LDggQEAgc3RhdGljIE5TUmVjdCBjb252ZXJ0UmVjdFRvU2NyZWVuKE5TV2luZG93ICp3aW5kb3cs
IE5TUmVjdCByZWN0KQogICAgIFt3aW5kb3cgcmVsZWFzZV07CiAgICAgaWYgKCFzZWxmKQogICAg
ICAgICByZXR1cm4gbmlsOworICAgIFt3aW5kb3cgc2V0RGVsZWdhdGU6c2VsZl07CisgICAgW3dp
bmRvdyBzZXRDb2xsZWN0aW9uQmVoYXZpb3I6KFt3aW5kb3cgY29sbGVjdGlvbkJlaGF2aW9yXSB8
IE5TV2luZG93Q29sbGVjdGlvbkJlaGF2aW9yRnVsbFNjcmVlblByaW1hcnkpXTsKICAgICBbc2Vs
ZiB3aW5kb3dEaWRMb2FkXTsKICAgICAKICAgICByZXR1cm4gc2VsZjsKQEAgLTE3NCw3ICsxODIs
NiBAQCBzdGF0aWMgTlNSZWN0IGNvbnZlcnRSZWN0VG9TY3JlZW4oTlNXaW5kb3cgKndpbmRvdywg
TlNSZWN0IHJlY3QpCiAgICAgLy8gdGhlIERvY2sncyBzaXplIG9yIGxvY2F0aW9uLCBvciB0aGV5
IG1heSBoYXZlIGNoYW5nZWQgdGhlIGZ1bGxTY3JlZW4gc2NyZWVuJ3MgZGltZW5zaW9ucy4gCiAg
ICAgLy8gVXBkYXRlIG91ciBwcmVzZW50YXRpb24gcGFyYW1ldGVycywgYW5kIGVuc3VyZSB0aGF0
IHRoZSBmdWxsIHNjcmVlbiB3aW5kb3cgb2NjdXBpZXMgdGhlIAogICAgIC8vIGVudGlyZSBzY3Jl
ZW46Ci0gICAgW3NlbGYgX3VwZGF0ZU1lbnVBbmREb2NrRm9yRnVsbFNjcmVlbl07CiAgICAgTlNX
aW5kb3cqIHdpbmRvdyA9IFtzZWxmIHdpbmRvd107CiAgICAgTlNSZWN0IHNjcmVlbkZyYW1lID0g
W1t3aW5kb3cgc2NyZWVuXSBmcmFtZV07CiAgICAgW3dpbmRvdyBzZXRGcmFtZTpzY3JlZW5GcmFt
ZSBkaXNwbGF5OllFU107CkBAIC0yMTIsOCArMjE5LDYgQEAgc3RhdGljIFJldGFpblB0cjxDR0lt
YWdlUmVmPiBjcmVhdGVJbWFnZVdpdGhDb3BpZWREYXRhKENHSW1hZ2VSZWYgc291cmNlSW1hZ2Up
CiAgICAgICAgIHJldHVybjsKICAgICBfaXNGdWxsU2NyZWVuID0gWUVTOwogCi0gICAgW3NlbGYg
X3VwZGF0ZU1lbnVBbmREb2NrRm9yRnVsbFNjcmVlbl07ICAgCi0KICAgICBpZiAoIXNjcmVlbikK
ICAgICAgICAgc2NyZWVuID0gW05TU2NyZWVuIG1haW5TY3JlZW5dOwogICAgIE5TUmVjdCBzY3Jl
ZW5GcmFtZSA9IFtzY3JlZW4gZnJhbWVdOwpAQCAtMjQ2LDExICsyNTEsMTEgQEAgc3RhdGljIFJl
dGFpblB0cjxDR0ltYWdlUmVmPiBjcmVhdGVJbWFnZVdpdGhDb3BpZWREYXRhKENHSW1hZ2VSZWYg
c291cmNlSW1hZ2UpCiAKICAgICAvLyBTd2FwIHRoZSB3ZWJWaWV3IHBsYWNlaG9sZGVyIGludG8g
cGxhY2UuCiAgICAgaWYgKCFfd2ViVmlld1BsYWNlaG9sZGVyKSB7Ci0gICAgICAgIF93ZWJWaWV3
UGxhY2Vob2xkZXIuYWRvcHROUyhbW05TSW1hZ2VWaWV3IGFsbG9jXSBpbml0XSk7Ci0gICAgICAg
IFtfd2ViVmlld1BsYWNlaG9sZGVyLmdldCgpIHNldExheWVyOltDQUxheWVyIGxheWVyXV07Ci0g
ICAgICAgIFtfd2ViVmlld1BsYWNlaG9sZGVyLmdldCgpIHNldFdhbnRzTGF5ZXI6WUVTXTsKKyAg
ICAgICAgX3dlYlZpZXdQbGFjZWhvbGRlci5hZG9wdE5TKFtbV2ViQ29yZUZ1bGxTY3JlZW5QbGFj
ZWhvbGRlclZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6W193ZWJWaWV3IGZyYW1lXV0pOworICAg
ICAgICBbX3dlYlZpZXdQbGFjZWhvbGRlci5nZXQoKSBzZXRUYXJnZXQ6c2VsZl07CisgICAgICAg
IFtfd2ViVmlld1BsYWNlaG9sZGVyLmdldCgpIHNldEFjdGlvbjpAc2VsZWN0b3IoY2FuY2VsT3Bl
cmF0aW9uOildOwogICAgIH0KLSAgICBbW193ZWJWaWV3UGxhY2Vob2xkZXIuZ2V0KCkgbGF5ZXJd
IHNldENvbnRlbnRzOihpZCl3ZWJWaWV3Q29udGVudHMuZ2V0KCldOworICAgIFtfd2ViVmlld1Bs
YWNlaG9sZGVyLmdldCgpIHNldENvbnRlbnRzOihpZCl3ZWJWaWV3Q29udGVudHMuZ2V0KCldOwog
ICAgIFtzZWxmIF9yZXBsYWNlVmlldzpfd2ViVmlldyB3aXRoOl93ZWJWaWV3UGxhY2Vob2xkZXIu
Z2V0KCldOwogICAgIAogICAgIC8vIFRoZW4gaW5zZXJ0IHRoZSBXZWJWaWV3IGludG8gdGhlIGZ1
bGwgc2NyZWVuIHdpbmRvdwpAQCAtMjczLDkgKzI3OCw4IEBAIHN0YXRpYyBSZXRhaW5QdHI8Q0dJ
bWFnZVJlZj4gY3JlYXRlSW1hZ2VXaXRoQ29waWVkRGF0YShDR0ltYWdlUmVmIHNvdXJjZUltYWdl
KQogICAgIF9pbml0aWFsRnJhbWUgPSBpbml0aWFsRnJhbWU7CiAgICAgX2ZpbmFsRnJhbWUgPSBm
aW5hbEZyYW1lOwogCi0gICAgW3NlbGYgX3VwZGF0ZU1lbnVBbmREb2NrRm9yRnVsbFNjcmVlbl07
ICAgCi0KLSAgICBbc2VsZiBfc3RhcnRFbnRlckZ1bGxTY3JlZW5BbmltYXRpb25XaXRoRHVyYXRp
b246ZGVmYXVsdEFuaW1hdGlvbkR1cmF0aW9uXTsKKyAgICBBU1NFUlQoW1tzZWxmIHdpbmRvd10g
cmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihlbnRlckZ1bGxTY3JlZW5Nb2RlOildKTsKKyAg
ICBbW3NlbGYgd2luZG93XSBlbnRlckZ1bGxTY3JlZW5Nb2RlOnNlbGZdOwogfQogCiAtICh2b2lk
KWZpbmlzaGVkRW50ZXJGdWxsU2NyZWVuQW5pbWF0aW9uOihib29sKWNvbXBsZXRlZApAQCAtMjk0
LDI0ICsyOTgsMTQgQEAgc3RhdGljIFJldGFpblB0cjxDR0ltYWdlUmVmPiBjcmVhdGVJbWFnZVdp
dGhDb3BpZWREYXRhKENHSW1hZ2VSZWYgc291cmNlSW1hZ2UpCiAgICAgICAgIHdpbmRvd0JvdW5k
cy5vcmlnaW4gPSBOU1plcm9Qb2ludDsKICAgICAgICAgV0tXaW5kb3dTZXRDbGlwUmVjdChbc2Vs
ZiB3aW5kb3ddLCB3aW5kb3dCb3VuZHMpOwogCi0gICAgICAgIE5TV2luZG93ICp3ZWJXaW5kb3cg
PSBbX3dlYlZpZXdQbGFjZWhvbGRlci5nZXQoKSB3aW5kb3ddOwotI2lmIF9fTUFDX09TX1hfVkVS
U0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA3MAotICAgICAgICAvLyBJbiBMaW9uLCBOU1dpbmRvdyB3
aWxsIGFuaW1hdGUgaW50byBhbmQgb3V0IG9mIG9yZGVyT3V0IG9wZXJhdGlvbnMuIFN1cHByZXNz
IHRoYXQKLSAgICAgICAgLy8gYmVoYXZpb3IgaGVyZSwgbWFraW5nIHN1cmUgdG8gcmVzZXQgdGhl
IGFuaW1hdGlvbiBiZWhhdmlvciBhZnRlcndhcmQuCi0gICAgICAgIE5TV2luZG93QW5pbWF0aW9u
QmVoYXZpb3IgYW5pbWF0aW9uQmVoYXZpb3IgPSBbd2ViV2luZG93IGFuaW1hdGlvbkJlaGF2aW9y
XTsKLSAgICAgICAgW3dlYldpbmRvdyBzZXRBbmltYXRpb25CZWhhdmlvcjpOU1dpbmRvd0FuaW1h
dGlvbkJlaGF2aW9yTm9uZV07Ci0jZW5kaWYKLSAgICAgICAgW3dlYldpbmRvdyBvcmRlck91dDpz
ZWxmXTsKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNzAKLSAgICAg
ICAgW3dlYldpbmRvdyBzZXRBbmltYXRpb25CZWhhdmlvcjphbmltYXRpb25CZWhhdmlvcl07Ci0j
ZW5kaWYKLQogICAgICAgICBbX2ZhZGVBbmltYXRpb24uZ2V0KCkgc3RvcEFuaW1hdGlvbl07CiAg
ICAgICAgIFtfZmFkZUFuaW1hdGlvbi5nZXQoKSBzZXRXaW5kb3c6bmlsXTsKICAgICAgICAgX2Zh
ZGVBbmltYXRpb24gPSBudWxscHRyOwogICAgICAgICAKICAgICAgICAgW19iYWNrZ3JvdW5kV2lu
ZG93LmdldCgpIG9yZGVyT3V0OnNlbGZdOwogICAgICAgICBbX2JhY2tncm91bmRXaW5kb3cuZ2V0
KCkgc2V0RnJhbWU6TlNaZXJvUmVjdCBkaXNwbGF5OllFU107CisKKyAgICAgICAgW193ZWJWaWV3
UGxhY2Vob2xkZXIuZ2V0KCkgc2V0RXhpdFdhcm5pbmdWaXNpYmxlOllFU107CiAgICAgICAgIE5T
RW5hYmxlU2NyZWVuVXBkYXRlcygpOwogICAgIH0gZWxzZQogICAgICAgICBbX3NjYWxlQW5pbWF0
aW9uLmdldCgpIHN0b3BBbmltYXRpb25dOwpAQCAtMzI4LDcgKzMyMiw5IEBAIHN0YXRpYyBSZXRh
aW5QdHI8Q0dJbWFnZVJlZj4gY3JlYXRlSW1hZ2VXaXRoQ29waWVkRGF0YShDR0ltYWdlUmVmIHNv
dXJjZUltYWdlKQogICAgICAgICByZXR1cm47CiAgICAgX2lzRnVsbFNjcmVlbiA9IE5POwogCi0g
ICAgLy8gU2NyZWVuIHVwZGF0ZXMgdG8gYmUgcmUtZW5hYmxlZCBpbiBfc3RhcnRFeGl0RnVsbFNj
cmVlbkFuaW1hdGlvbldpdGhEdXJhdGlvbjoKKyAgICBbX3dlYlZpZXdQbGFjZWhvbGRlci5nZXQo
KSBzZXRFeGl0V2FybmluZ1Zpc2libGU6Tk9dOworCisgICAgLy8gU2NyZWVuIHVwZGF0ZXMgdG8g
YmUgcmUtZW5hYmxlZCBpbiBfc3RhcnRFeGl0RnVsbFNjcmVlbkFuaW1hdGlvbldpdGhEdXJhdGlv
bjogb3IgYmVnYW5FeGl0RnVsbFNjcmVlbldpdGhJbml0aWFsRnJhbWU6ZmluYWxGcmFtZToKICAg
ICBOU0Rpc2FibGVTY3JlZW5VcGRhdGVzKCk7CiAgICAgW1tzZWxmIHdpbmRvd10gc2V0QXV0b2Rp
c3BsYXk6Tk9dOwogCkBAIC0zNDksMzAgKzM0NSwxOSBAQCBzdGF0aWMgUmV0YWluUHRyPENHSW1h
Z2VSZWY+IGNyZWF0ZUltYWdlV2l0aENvcGllZERhdGEoQ0dJbWFnZVJlZiBzb3VyY2VJbWFnZSkK
ICAgICBpZiAoX2lzRW50ZXJpbmdGdWxsU2NyZWVuKQogICAgICAgICBbc2VsZiBmaW5pc2hlZEVu
dGVyRnVsbFNjcmVlbkFuaW1hdGlvbjpOT107CiAKLSAgICBbc2VsZiBfdXBkYXRlTWVudUFuZERv
Y2tGb3JGdWxsU2NyZWVuXTsKLSAgICAKLSAgICBOU1dpbmRvdyogd2ViV2luZG93ID0gW193ZWJW
aWV3UGxhY2Vob2xkZXIuZ2V0KCkgd2luZG93XTsKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlO
X1JFUVVJUkVEID49IDEwNzAKLSAgICAvLyBJbiBMaW9uLCBOU1dpbmRvdyB3aWxsIGFuaW1hdGUg
aW50byBhbmQgb3V0IG9mIG9yZGVyT3V0IG9wZXJhdGlvbnMuIFN1cHByZXNzIHRoYXQKLSAgICAv
LyBiZWhhdmlvciBoZXJlLCBtYWtpbmcgc3VyZSB0byByZXNldCB0aGUgYW5pbWF0aW9uIGJlaGF2
aW9yIGFmdGVyd2FyZC4KLSAgICBOU1dpbmRvd0FuaW1hdGlvbkJlaGF2aW9yIGFuaW1hdGlvbkJl
aGF2aW9yID0gW3dlYldpbmRvdyBhbmltYXRpb25CZWhhdmlvcl07Ci0gICAgW3dlYldpbmRvdyBz
ZXRBbmltYXRpb25CZWhhdmlvcjpOU1dpbmRvd0FuaW1hdGlvbkJlaGF2aW9yTm9uZV07Ci0jZW5k
aWYKLSAgICAvLyBJZiB0aGUgdXNlciBoYXMgbW92ZWQgdGhlIGZ1bGxTY3JlZW4gd2luZG93IGlu
dG8gYSBuZXcgc3BhY2UsIHRlbXBvcmFyaWx5IGNoYW5nZQotICAgIC8vIHRoZSBjb2xsZWN0aW9u
QmVoYXZpb3Igb2YgdGhlIHdlYlZpZXcncyB3aW5kb3cgc28gdGhhdCBpdCBpcyBwdWxsZWQgaW50
byB0aGUgYWN0aXZlIHNwYWNlOgotICAgIGlmICghKFt3ZWJXaW5kb3cgcmVzcG9uZHNUb1NlbGVj
dG9yOkBzZWxlY3Rvcihpc09uQWN0aXZlU3BhY2UpXSA/IFt3ZWJXaW5kb3cgaXNPbkFjdGl2ZVNw
YWNlXSA6IFlFUykpIHsKLSAgICAgICAgTlNXaW5kb3dDb2xsZWN0aW9uQmVoYXZpb3IgYmVoYXZp
b3IgPSBbd2ViV2luZG93IGNvbGxlY3Rpb25CZWhhdmlvcl07Ci0gICAgICAgIFt3ZWJXaW5kb3cg
c2V0Q29sbGVjdGlvbkJlaGF2aW9yOk5TV2luZG93Q29sbGVjdGlvbkJlaGF2aW9yQ2FuSm9pbkFs
bFNwYWNlc107Ci0gICAgICAgIFt3ZWJXaW5kb3cgb3JkZXJXaW5kb3c6TlNXaW5kb3dCZWxvdyBy
ZWxhdGl2ZVRvOltbc2VsZiB3aW5kb3ddIHdpbmRvd051bWJlcl1dOwotICAgICAgICBbd2ViV2lu
ZG93IHNldENvbGxlY3Rpb25CZWhhdmlvcjpiZWhhdmlvcl07Ci0gICAgfSBlbHNlCi0gICAgICAg
IFt3ZWJXaW5kb3cgb3JkZXJXaW5kb3c6TlNXaW5kb3dCZWxvdyByZWxhdGl2ZVRvOltbc2VsZiB3
aW5kb3ddIHdpbmRvd051bWJlcl1dOwotICAgIAotI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5f
UkVRVUlSRUQgPj0gMTA3MAotICAgIFt3ZWJXaW5kb3cgc2V0QW5pbWF0aW9uQmVoYXZpb3I6YW5p
bWF0aW9uQmVoYXZpb3JdOwotI2VuZGlmCisgICAgaWYgKCFbW3NlbGYgd2luZG93XSBpc09uQWN0
aXZlU3BhY2VdKSB7CisgICAgICAgIC8vIElmIHRoZSBmdWxsIHNjcmVlbiB3aW5kb3cgaXMgbm90
IGluIHRoZSBhY3RpdmUgc3BhY2UsIHRoZSBOU1dpbmRvdyBmdWxsIHNjcmVlbiBhbmltYXRpb24g
ZGVsZWdhdGUgbWV0aG9kcworICAgICAgICAvLyB3aWxsIG5ldmVyIGJlIGNhbGxlZC4gU28gY2Fs
bCBmaW5pc2hlZEV4aXRGdWxsU2NyZWVuQW5pbWF0aW9uIGV4cGxpY2l0bHkuCisgICAgICAgIFtz
ZWxmIGZpbmlzaGVkRXhpdEZ1bGxTY3JlZW5BbmltYXRpb246WUVTXTsKIAotICAgIFtzZWxmIF9z
dGFydEV4aXRGdWxsU2NyZWVuQW5pbWF0aW9uV2l0aER1cmF0aW9uOmRlZmF1bHRBbmltYXRpb25E
dXJhdGlvbl07CisgICAgICAgIC8vIEJlY2F1c2Ugd2UgYXJlIGJyZWFraW5nIHRoZSBub3JtYWwg
YW5pbWF0aW9uIHBhdHRlcm4sIHJlLWVuYWJsZSBzY3JlZW4gdXBkYXRlcworICAgICAgICAvLyBh
cyBleGl0RnVsbFNjcmVlbiBoYXMgZGlzYWJsZWQgdGhlbSwgYnV0IF9zdGFydEV4aXRGdWxsU2Ny
ZWVuQW5pbWF0aW9uV2l0aER1cmF0aW9uOgorICAgICAgICAvLyB3aWxsIG5ldmVyIGJlIGNhbGxl
ZC4KKyAgICAgICAgTlNFbmFibGVTY3JlZW5VcGRhdGVzKCk7CisgICAgfQorCisgICAgQVNTRVJU
KFtbc2VsZiB3aW5kb3ddIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoZXhpdEZ1bGxTY3Jl
ZW5Nb2RlOildKTsKKyAgICBbW3NlbGYgd2luZG93XSBleGl0RnVsbFNjcmVlbk1vZGU6c2VsZl07
CiB9CiAKIHN0YXRpYyB2b2lkIGNvbXBsZXRlRmluaXNoRXhpdEZ1bGxTY3JlZW5BbmltYXRpb25B
ZnRlclJlcGFpbnQoV0tFcnJvclJlZiwgdm9pZCopOwpAQCAtMzgzLDggKzM2OCw2IEBAIHN0YXRp
YyB2b2lkIGNvbXBsZXRlRmluaXNoRXhpdEZ1bGxTY3JlZW5BbmltYXRpb25BZnRlclJlcGFpbnQo
V0tFcnJvclJlZiwgdm9pZCopCiAgICAgICAgIHJldHVybjsKICAgICBfaXNFeGl0aW5nRnVsbFNj
cmVlbiA9IE5POwogCi0gICAgW3NlbGYgX3VwZGF0ZU1lbnVBbmREb2NrRm9yRnVsbFNjcmVlbl07
Ci0KICAgICAvLyBTY3JlZW4gdXBkYXRlcyB0byBiZSByZS1lbmFibGVkIGluIGNvbXBsZXRlRmlu
aXNoRXhpdEZ1bGxTY3JlZW5BbmltYXRpb25BZnRlclJlcGFpbnQuCiAgICAgTlNEaXNhYmxlU2Ny
ZWVuVXBkYXRlcygpOwogICAgIFtbX3dlYlZpZXdQbGFjZWhvbGRlci5nZXQoKSB3aW5kb3ddIHNl
dEF1dG9kaXNwbGF5Ok5PXTsKQEAgLTQ1NSwzNSArNDM4LDMxIEBAIHN0YXRpYyB2b2lkIGNvbXBs
ZXRlRmluaXNoRXhpdEZ1bGxTY3JlZW5BbmltYXRpb25BZnRlclJlcGFpbnQoV0tFcnJvclJlZiwg
dm9pZCoKIH0KIAogI3ByYWdtYSBtYXJrIC0KLSNwcmFnbWEgbWFyayBJbnRlcm5hbCBJbnRlcmZh
Y2UKKyNwcmFnbWEgbWFyayBDdXN0b20gTlNXaW5kb3cgRnVsbCBTY3JlZW4gQW5pbWF0aW9uCiAK
LS0gKHZvaWQpX3VwZGF0ZU1lbnVBbmREb2NrRm9yRnVsbFNjcmVlbgorLSAoTlNBcnJheSAqKWN1
c3RvbVdpbmRvd3NUb0VudGVyRnVsbFNjcmVlbkZvcldpbmRvdzooTlNXaW5kb3cgKil3aW5kb3cK
IHsKLSAgICAvLyBOU0FwcGxpY2F0aW9uUHJlc2VudGF0aW9uT3B0aW9ucyBpcyBhdmFpbGFibGUg
b24gPiAxMC42IG9ubHk6Ci0jaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAx
MDYwCi0gICAgTlNBcHBsaWNhdGlvblByZXNlbnRhdGlvbk9wdGlvbnMgb3B0aW9ucyA9IE5TQXBw
bGljYXRpb25QcmVzZW50YXRpb25EZWZhdWx0OwotICAgIE5TU2NyZWVuKiBmdWxsU2NyZWVuU2Ny
ZWVuID0gW1tzZWxmIHdpbmRvd10gc2NyZWVuXTsKLSAgICAKLSAgICBpZiAoX2lzRnVsbFNjcmVl
bikgewotICAgICAgICAvLyBBdXRvLWhpZGUgdGhlIG1lbnUgYmFyIGlmIHRoZSBmdWxsU2NyZWVu
U2NyZWVuIGNvbnRhaW5zIHRoZSBtZW51IGJhcjoKLSAgICAgICAgLy8gTk9URTogaWYgdGhlIGZ1
bGxTY3JlZW5TY3JlZW4gY29udGFpbnMgdGhlIG1lbnUgYmFyIGJ1dCBub3QgdGhlIGRvY2ssIHdl
IG11c3Qgc3RpbGwgCi0gICAgICAgIC8vIGF1dG8taGlkZSB0aGUgZG9jaywgb3IgYW4gZXhjZXB0
aW9uIHdpbGwgYmUgdGhyb3duLgotICAgICAgICBpZiAoW1tOU1NjcmVlbiBzY3JlZW5zXSBvYmpl
Y3RBdEluZGV4OjBdID09IGZ1bGxTY3JlZW5TY3JlZW4pCi0gICAgICAgICAgICBvcHRpb25zIHw9
IChOU0FwcGxpY2F0aW9uUHJlc2VudGF0aW9uQXV0b0hpZGVNZW51QmFyIHwgTlNBcHBsaWNhdGlv
blByZXNlbnRhdGlvbkF1dG9IaWRlRG9jayk7Ci0gICAgICAgIC8vIENoZWNrIGlmIHRoZSBjdXJy
ZW50IHNjcmVlbiBjb250YWlucyB0aGUgZG9jayBieSBjb21wYXJpbmcgdGhlIHNjcmVlbidzIGZy
YW1lIHRvIGl0cwotICAgICAgICAvLyB2aXNpYmxlRnJhbWU7IGlmIGEgZG9jayBpcyBwcmVzZW50
LCB0aGUgdmlzaWJsZUZyYW1lIHdpbGwgZGlmZmVyLiBJZiB0aGUgY3VycmVudCBzY3JlZW4KLSAg
ICAgICAgLy8gY29udGFpbnMgdGhlIGRvY2ssIGhpZGUgaXQuCi0gICAgICAgIGVsc2UgaWYgKCFO
U0VxdWFsUmVjdHMoW2Z1bGxTY3JlZW5TY3JlZW4gZnJhbWVdLCBbZnVsbFNjcmVlblNjcmVlbiB2
aXNpYmxlRnJhbWVdKSkKLSAgICAgICAgICAgIG9wdGlvbnMgfD0gTlNBcHBsaWNhdGlvblByZXNl
bnRhdGlvbkF1dG9IaWRlRG9jazsKLSAgICB9Ci0gICAgCi0gICAgaWYgKFtOU0FwcCByZXNwb25k
c1RvU2VsZWN0b3I6QHNlbGVjdG9yKHNldFByZXNlbnRhdGlvbk9wdGlvbnM6KV0pCi0gICAgICAg
IFtOU0FwcCBzZXRQcmVzZW50YXRpb25PcHRpb25zOm9wdGlvbnNdOwotICAgIGVsc2UKLSNlbmRp
ZgotICAgICAgICBTZXRTeXN0ZW1VSU1vZGUoX2lzRnVsbFNjcmVlbiA/IGtVSU1vZGVBbGxIaWRk
ZW4gOiBrVUlNb2RlTm9ybWFsLCAwKTsKKyAgICByZXR1cm4gW05TQXJyYXkgYXJyYXlXaXRoT2Jq
ZWN0czpbc2VsZiB3aW5kb3ddLCBfYmFja2dyb3VuZFdpbmRvdy5nZXQoKSwgbmlsXTsKK30KKwor
LSAoTlNBcnJheSAqKWN1c3RvbVdpbmRvd3NUb0V4aXRGdWxsU2NyZWVuRm9yV2luZG93OihOU1dp
bmRvdyAqKXdpbmRvdworeworICAgIHJldHVybiBbTlNBcnJheSBhcnJheVdpdGhPYmplY3RzOltz
ZWxmIHdpbmRvd10sIF9iYWNrZ3JvdW5kV2luZG93LmdldCgpLCBuaWxdOworfQorCistICh2b2lk
KXdpbmRvdzooTlNXaW5kb3cgKil3aW5kb3cgc3RhcnRDdXN0b21BbmltYXRpb25Ub0VudGVyRnVs
bFNjcmVlbldpdGhEdXJhdGlvbjooTlNUaW1lSW50ZXJ2YWwpZHVyYXRpb24KK3sKKyAgICBbc2Vs
ZiBfc3RhcnRFbnRlckZ1bGxTY3JlZW5BbmltYXRpb25XaXRoRHVyYXRpb246ZHVyYXRpb25dOwor
fQorCistICh2b2lkKXdpbmRvdzooTlNXaW5kb3cgKil3aW5kb3cgc3RhcnRDdXN0b21BbmltYXRp
b25Ub0V4aXRGdWxsU2NyZWVuV2l0aER1cmF0aW9uOihOU1RpbWVJbnRlcnZhbClkdXJhdGlvbgor
eworICAgIFtzZWxmIF9zdGFydEV4aXRGdWxsU2NyZWVuQW5pbWF0aW9uV2l0aER1cmF0aW9uOmR1
cmF0aW9uXTsKIH0KIAorI3ByYWdtYSBtYXJrIC0KKyNwcmFnbWEgbWFyayBJbnRlcm5hbCBJbnRl
cmZhY2UKKwogLSAoV2ViUGFnZVByb3h5KilfcGFnZQogewogICAgIHJldHVybiB0b0ltcGwoW193
ZWJWaWV3IHBhZ2VSZWZdKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>174294</attachid>
            <date>2012-11-14 17:01:31 -0800</date>
            <delta_ts>2012-11-16 11:39:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100025-20121114165930.patch</filename>
            <type>text/plain</type>
            <size>14545</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM0NjU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMTk3MTg1NDliM2FkODg1
ZTQ3MDZmZWNlMzNlYzIyZDMzMjA1MmU4NS4uNWMzOTAxYmE0OGU4ODI4MzE2NDRhMjg2ODBmMGIx
MzEzMGQwNGNmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTEwLTIyICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtXSzJdIFtNYWNdIFdlYktp
dCBGdWxsIFNjcmVlbiBBUEkgc2hvdWxkIHVzZSBOU1dpbmRvdyBmdWxsIHNjcmVlbiBBUEkuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDAwMjUKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgdGhlIE5T
V2luZG93IGZ1bGwgc2NyZWVuIEFQSSB3aGVuIHRha2luZyB0aGUgV2ViVmlldyBmdWxsIHNjcmVl
bi4gVG8gZmFjaWxpdHkgdGhlIGNhc2Ugd2hlcmUgdGhlIGJyb3dzZXIgd2luZG93IGlzIGFscmVh
ZHkKKyAgICAgICAgaW4gZnVsbCBzY3JlZW4gbW9kZSwgbm8gbG9uZ2VyIGhpZGUgdGhlIGJyb3dz
ZXIgd2luZG93IHdoZW4gZW50ZXJpbmcgZnVsbCBzY3JlZW4uIEluc3RlYWQsIHByb3ZpZGUgYSBw
bGFjZWhvbGRlciB2aWV3IHdpdGggCisgICAgICAgIGluc3RydWN0aW9ucyB0byBjbGljayB0aGUg
cGxhY2Vob2xkZXIgdG8gZXhpdCBmdWxsIHNjcmVlbi4KKworICAgICAgICAqIFVJUHJvY2Vzcy9t
YWMvV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9t
YWMvV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5tbToKKyAgICAgICAgKC1bV0tGdWxsU2Ny
ZWVuV2luZG93Q29udHJvbGxlciBpbml0XSk6IFNldCBzZWxmIGFzIHRoZSB3aW5kb3cncyBkZWxl
Z2F0ZTsgZW5hYmxlIHdpbmRvdydzIGZ1bGwgc2NyZWVuIGFjdGlvbi4KKyAgICAgICAgKC1bV0tG
dWxsU2NyZWVuV2luZG93Q29udHJvbGxlciBhcHBsaWNhdGlvbkRpZENoYW5nZVNjcmVlblBhcmFt
ZXRlcnM6XSk6IFJlbW92ZSByZWZlcmVuY2UgdG8gX3VwZGF0ZVdpbmRvd0FuZERvY2tGb3JGdWxs
U2NyZWVuLgorICAgICAgICAoLVtXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyIGVudGVyRnVs
bFNjcmVlbjpdKTogIERpdHRvLiBDcmVhdGUgYSBXS0Z1bGxTY3JlZW5QbGFjZWhvbGRlclZpZXcg
aW5zdGVhZCBvZiBnZW5lcmljIE5TSW1hZ2VWaWV3LgorICAgICAgICAoLVtXS0Z1bGxTY3JlZW5X
aW5kb3dDb250cm9sbGVyIGJlZ2FuRW50ZXJGdWxsU2NyZWVuV2l0aEluaXRpYWxGcmFtZTpmaW5h
bEZyYW1lOl0pOiBEaXR0by4gQ2FsbCBOU1dpbmRvdyBlbnRlckZ1bGxTY3JlZW46IEFQSS4KKyAg
ICAgICAgKC1bV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlciBmaW5pc2hlZEVudGVyRnVsbFNj
cmVlbkFuaW1hdGlvbjpdKTogU2hvdyB0aGUgd2FybmluZyB2aWV3LgorICAgICAgICAoLVtXS0Z1
bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyIGV4aXRGdWxsU2NyZWVuXSk6IEhpZGUgdGhlIHdhcm5p
bmcgdmlldy4KKyAgICAgICAgKC1bV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlciBiZWdhbkV4
aXRGdWxsU2NyZWVuV2l0aEluaXRpYWxGcmFtZTpmaW5hbEZyYW1lOl0pOiBBZGQgc3BlY2lhbCBj
YXNlIHdoZXJlIHdlIGFyZSBleGl0aW5nCisgICAgICAgICAgICBmcm9tIGZ1bGwgc2NyZWVuIG1v
ZGUgd2hlbiB0aGUgZnVsbCBzY3JlZW4gd2luZG93IGlzIG5vdCBvbiBzY3JlZW4uCisgICAgICAg
ICgtW1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIgZmluaXNoZWRFeGl0RnVsbFNjcmVlbkFu
aW1hdGlvbjpdKTogUmVtb3ZlIHJlZmVyZW5jZSB0byBfdXBkYXRlTWVudUFuZERvY2tGb3JGdWxs
U2NyZWVuLgorICAgICAgICAoLVtXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyIGN1c3RvbVdp
bmRvd3NUb0VudGVyRnVsbFNjcmVlbkZvcldpbmRvdzpdKTogQWRkZWQuIFJldHVybiB0aGUgYmFj
a2dyb3VuZCB3aW5kb3cgYW5kIHRoZSBmdWxsIHNjcmVlbiB3aW5kb3cuCisgICAgICAgICgtW1dL
RnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIgY3VzdG9tV2luZG93c1RvRXhpdEZ1bGxTY3JlZW5G
b3JXaW5kb3c6XSk6IERpdHRvLgorICAgICAgICAoLVtXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9s
bGVyIHdpbmRvdzpzdGFydEN1c3RvbUFuaW1hdGlvblRvRW50ZXJGdWxsU2NyZWVuV2l0aER1cmF0
aW9uOl0pOiBBZGRlZC4gQ2FsbCB0aHJvdWdoIHRvIF9zdGFydEVudGVyRnVsbFNjcmVlbkFuaW1h
dGlvbldpdGhEdXJhdGlvbjoKKyAgICAgICAgKC1bV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxl
ciB3aW5kb3c6c3RhcnRDdXN0b21BbmltYXRpb25Ub0V4aXRGdWxsU2NyZWVuV2l0aER1cmF0aW9u
Ol0pOiBBZGRlZC4gQ2FsbCB0aHJvdWdoIHRvIF9zdGFydEV4aXRGdWxsU2NyZWVuQW5pbWF0aW9u
V2l0aER1cmF0aW9uOgorCiAyMDEyLTExLTE0ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBh
cHBsZS5jb20+CiAKICAgICAgICAgTW9yZSBzdGVwcyB0b3dhcmRzIGFjdHVhbGx5IGhvc3Rpbmcg
bGF5ZXJzIGluIHRoZSBVSSBwcm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvbWFjL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9tYWMvV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5oCmluZGV4IDljZTg4
YWU1YTk2YmJkYmY5ZGFmOWM2NzAzOTEwN2FmOTI4OGU5OGMuLmU0Nzg5YWUzYTczZjkyMzRiMjdi
YzdlMDY3YjQ2MjQ5ODUwMDgzYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9tYWMvV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9tYWMvV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5oCkBAIC0zOCwxMyAr
MzgsMTQgQEAgY2xhc3MgSW50UmVjdDsKIH0KIAogQGNsYXNzIFdLVmlldzsKK0BjbGFzcyBXZWJD
b3JlRnVsbFNjcmVlblBsYWNlaG9sZGVyVmlldzsKIEBjbGFzcyBXZWJXaW5kb3dTY2FsZUFuaW1h
dGlvbjsKIEBjbGFzcyBXZWJXaW5kb3dGYWRlQW5pbWF0aW9uOwogCi1AaW50ZXJmYWNlIFdLRnVs
bFNjcmVlbldpbmRvd0NvbnRyb2xsZXIgOiBOU1dpbmRvd0NvbnRyb2xsZXIgeworQGludGVyZmFj
ZSBXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyIDogTlNXaW5kb3dDb250cm9sbGVyPE5TV2lu
ZG93RGVsZWdhdGU+IHsKIEBwcml2YXRlCiAgICAgV0tWaWV3ICpfd2ViVmlldzsKLSAgICBSZXRh
aW5QdHI8TlNJbWFnZVZpZXc+IF93ZWJWaWV3UGxhY2Vob2xkZXI7CisgICAgUmV0YWluUHRyPFdl
YkNvcmVGdWxsU2NyZWVuUGxhY2Vob2xkZXJWaWV3PiBfd2ViVmlld1BsYWNlaG9sZGVyOwogICAg
IFJldGFpblB0cjxXZWJXaW5kb3dTY2FsZUFuaW1hdGlvbj4gX3NjYWxlQW5pbWF0aW9uOwogICAg
IFJldGFpblB0cjxXZWJXaW5kb3dGYWRlQW5pbWF0aW9uPiBfZmFkZUFuaW1hdGlvbjsKICAgICBS
ZXRhaW5QdHI8TlNXaW5kb3c+IF9iYWNrZ3JvdW5kV2luZG93OwpAQCAtNTYsNiArNTcsNyBAQCBj
bGFzcyBJbnRSZWN0OwogICAgIEJPT0wgX2lzRXhpdGluZ0Z1bGxTY3JlZW47CiAgICAgQk9PTCBf
aXNGdWxsU2NyZWVuOwogICAgIEJPT0wgX2lzUGxheWluZzsKKyAgICBOU1RpbWVJbnRlcnZhbCBf
YW5pbWF0aW9uRHVyYXRpb247CiB9CiAKIC0gKFdLVmlldyopd2ViVmlldzsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxl
ci5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV0tGdWxsU2NyZWVuV2luZG93Q29u
dHJvbGxlci5tbQppbmRleCAyMzhhNjc1MTY1ZWQ4YzI5ODM5NDg5M2E1MWJiYWJiNjFkYTI3NDI1
Li4yYjFkMWMyODMyYzIwYjFjYjI4ZTNkYWJlZGUzMTZmZWVkNDUyOGU0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIu
bW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XS0Z1bGxTY3JlZW5XaW5kb3dD
b250cm9sbGVyLm1tCkBAIC0zOSw2ICszOSw4IEBACiAjaW1wb3J0IDxXZWJDb3JlL0Rpc3BsYXlT
bGVlcERpc2FibGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0Zsb2F0UmVjdC5oPgogI2ltcG9ydCA8
V2ViQ29yZS9JbnRSZWN0Lmg+CisjaW1wb3J0IDxXZWJDb3JlL0xvY2FsaXplZFN0cmluZ3MuaD4K
KyNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZUZ1bGxTY3JlZW5QbGFjZWhvbGRlclZpZXcuaD4KICNp
bXBvcnQgPFdlYkNvcmUvV2ViQ29yZUZ1bGxTY3JlZW5XaW5kb3cuaD4KICNpbXBvcnQgPFdlYkNv
cmUvV2ViV2luZG93QW5pbWF0aW9uLmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViTlNXaW5kb3dFeHRy
YXMuaD4KQEAgLTUzLDggKzU1LDEyIEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNXaW5kb3c+IGNyZWF0
ZUJhY2tncm91bmRGdWxsc2NyZWVuV2luZG93KE5TUmVjdCBmcmFtZSk7CiBzdGF0aWMgY29uc3Qg
Q0ZUaW1lSW50ZXJ2YWwgZGVmYXVsdEFuaW1hdGlvbkR1cmF0aW9uID0gMC41Owogc3RhdGljIGNv
bnN0IE5TVGltZUludGVydmFsIERlZmF1bHRXYXRjaGRvZ1RpbWVySW50ZXJ2YWwgPSAxOwogCitA
aW50ZXJmYWNlIE5TV2luZG93KE1vcmVTcGVjaWZpY0Z1bGxTY3JlZW5BY3Rpb25zKQorLSAodm9p
ZClleGl0RnVsbFNjcmVlbk1vZGU6KGlkKXNlbmRlcjsKKy0gKHZvaWQpZW50ZXJGdWxsU2NyZWVu
TW9kZTooaWQpc2VuZGVyOworQGVuZAorCiBAaW50ZXJmYWNlIFdLRnVsbFNjcmVlbldpbmRvd0Nv
bnRyb2xsZXIoUHJpdmF0ZSk8TlNBbmltYXRpb25EZWxlZ2F0ZT4KLS0gKHZvaWQpX3VwZGF0ZU1l
bnVBbmREb2NrRm9yRnVsbFNjcmVlbjsKIC0gKHZvaWQpX3JlcGxhY2VWaWV3OihOU1ZpZXcqKXZp
ZXcgd2l0aDooTlNWaWV3KilvdGhlclZpZXc7CiAtIChXZWJQYWdlUHJveHkqKV9wYWdlOwogLSAo
V2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eSopX21hbmFnZXI7CkBAIC05Miw2ICs5OCw4IEBAIHN0
YXRpYyBOU1JlY3QgY29udmVydFJlY3RUb1NjcmVlbihOU1dpbmRvdyAqd2luZG93LCBOU1JlY3Qg
cmVjdCkKICAgICBbd2luZG93IHJlbGVhc2VdOwogICAgIGlmICghc2VsZikKICAgICAgICAgcmV0
dXJuIG5pbDsKKyAgICBbd2luZG93IHNldERlbGVnYXRlOnNlbGZdOworICAgIFt3aW5kb3cgc2V0
Q29sbGVjdGlvbkJlaGF2aW9yOihbd2luZG93IGNvbGxlY3Rpb25CZWhhdmlvcl0gfCBOU1dpbmRv
d0NvbGxlY3Rpb25CZWhhdmlvckZ1bGxTY3JlZW5QcmltYXJ5KV07CiAgICAgW3NlbGYgd2luZG93
RGlkTG9hZF07CiAgICAgCiAgICAgcmV0dXJuIHNlbGY7CkBAIC0xNzQsNyArMTgyLDYgQEAgc3Rh
dGljIE5TUmVjdCBjb252ZXJ0UmVjdFRvU2NyZWVuKE5TV2luZG93ICp3aW5kb3csIE5TUmVjdCBy
ZWN0KQogICAgIC8vIHRoZSBEb2NrJ3Mgc2l6ZSBvciBsb2NhdGlvbiwgb3IgdGhleSBtYXkgaGF2
ZSBjaGFuZ2VkIHRoZSBmdWxsU2NyZWVuIHNjcmVlbidzIGRpbWVuc2lvbnMuIAogICAgIC8vIFVw
ZGF0ZSBvdXIgcHJlc2VudGF0aW9uIHBhcmFtZXRlcnMsIGFuZCBlbnN1cmUgdGhhdCB0aGUgZnVs
bCBzY3JlZW4gd2luZG93IG9jY3VwaWVzIHRoZSAKICAgICAvLyBlbnRpcmUgc2NyZWVuOgotICAg
IFtzZWxmIF91cGRhdGVNZW51QW5kRG9ja0ZvckZ1bGxTY3JlZW5dOwogICAgIE5TV2luZG93KiB3
aW5kb3cgPSBbc2VsZiB3aW5kb3ddOwogICAgIE5TUmVjdCBzY3JlZW5GcmFtZSA9IFtbd2luZG93
IHNjcmVlbl0gZnJhbWVdOwogICAgIFt3aW5kb3cgc2V0RnJhbWU6c2NyZWVuRnJhbWUgZGlzcGxh
eTpZRVNdOwpAQCAtMjEyLDggKzIxOSw2IEBAIHN0YXRpYyBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4g
Y3JlYXRlSW1hZ2VXaXRoQ29waWVkRGF0YShDR0ltYWdlUmVmIHNvdXJjZUltYWdlKQogICAgICAg
ICByZXR1cm47CiAgICAgX2lzRnVsbFNjcmVlbiA9IFlFUzsKIAotICAgIFtzZWxmIF91cGRhdGVN
ZW51QW5kRG9ja0ZvckZ1bGxTY3JlZW5dOyAgIAotCiAgICAgaWYgKCFzY3JlZW4pCiAgICAgICAg
IHNjcmVlbiA9IFtOU1NjcmVlbiBtYWluU2NyZWVuXTsKICAgICBOU1JlY3Qgc2NyZWVuRnJhbWUg
PSBbc2NyZWVuIGZyYW1lXTsKQEAgLTI0NiwxMSArMjUxLDExIEBAIHN0YXRpYyBSZXRhaW5QdHI8
Q0dJbWFnZVJlZj4gY3JlYXRlSW1hZ2VXaXRoQ29waWVkRGF0YShDR0ltYWdlUmVmIHNvdXJjZUlt
YWdlKQogCiAgICAgLy8gU3dhcCB0aGUgd2ViVmlldyBwbGFjZWhvbGRlciBpbnRvIHBsYWNlLgog
ICAgIGlmICghX3dlYlZpZXdQbGFjZWhvbGRlcikgewotICAgICAgICBfd2ViVmlld1BsYWNlaG9s
ZGVyLmFkb3B0TlMoW1tOU0ltYWdlVmlldyBhbGxvY10gaW5pdF0pOwotICAgICAgICBbX3dlYlZp
ZXdQbGFjZWhvbGRlci5nZXQoKSBzZXRMYXllcjpbQ0FMYXllciBsYXllcl1dOwotICAgICAgICBb
X3dlYlZpZXdQbGFjZWhvbGRlci5nZXQoKSBzZXRXYW50c0xheWVyOllFU107CisgICAgICAgIF93
ZWJWaWV3UGxhY2Vob2xkZXIuYWRvcHROUyhbW1dlYkNvcmVGdWxsU2NyZWVuUGxhY2Vob2xkZXJW
aWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOltfd2ViVmlldyBmcmFtZV1dKTsKKyAgICAgICAgW193
ZWJWaWV3UGxhY2Vob2xkZXIuZ2V0KCkgc2V0VGFyZ2V0OnNlbGZdOworICAgICAgICBbX3dlYlZp
ZXdQbGFjZWhvbGRlci5nZXQoKSBzZXRBY3Rpb246QHNlbGVjdG9yKGNhbmNlbE9wZXJhdGlvbjop
XTsKICAgICB9Ci0gICAgW1tfd2ViVmlld1BsYWNlaG9sZGVyLmdldCgpIGxheWVyXSBzZXRDb250
ZW50czooaWQpd2ViVmlld0NvbnRlbnRzLmdldCgpXTsKKyAgICBbX3dlYlZpZXdQbGFjZWhvbGRl
ci5nZXQoKSBzZXRDb250ZW50czooaWQpd2ViVmlld0NvbnRlbnRzLmdldCgpXTsKICAgICBbc2Vs
ZiBfcmVwbGFjZVZpZXc6X3dlYlZpZXcgd2l0aDpfd2ViVmlld1BsYWNlaG9sZGVyLmdldCgpXTsK
ICAgICAKICAgICAvLyBUaGVuIGluc2VydCB0aGUgV2ViVmlldyBpbnRvIHRoZSBmdWxsIHNjcmVl
biB3aW5kb3cKQEAgLTI3Myw5ICsyNzgsOCBAQCBzdGF0aWMgUmV0YWluUHRyPENHSW1hZ2VSZWY+
IGNyZWF0ZUltYWdlV2l0aENvcGllZERhdGEoQ0dJbWFnZVJlZiBzb3VyY2VJbWFnZSkKICAgICBf
aW5pdGlhbEZyYW1lID0gaW5pdGlhbEZyYW1lOwogICAgIF9maW5hbEZyYW1lID0gZmluYWxGcmFt
ZTsKIAotICAgIFtzZWxmIF91cGRhdGVNZW51QW5kRG9ja0ZvckZ1bGxTY3JlZW5dOyAgIAotCi0g
ICAgW3NlbGYgX3N0YXJ0RW50ZXJGdWxsU2NyZWVuQW5pbWF0aW9uV2l0aER1cmF0aW9uOmRlZmF1
bHRBbmltYXRpb25EdXJhdGlvbl07CisgICAgQVNTRVJUKFtbc2VsZiB3aW5kb3ddIHJlc3BvbmRz
VG9TZWxlY3RvcjpAc2VsZWN0b3IoZW50ZXJGdWxsU2NyZWVuTW9kZTopXSk7CisgICAgW1tzZWxm
IHdpbmRvd10gZW50ZXJGdWxsU2NyZWVuTW9kZTpzZWxmXTsKIH0KIAogLSAodm9pZClmaW5pc2hl
ZEVudGVyRnVsbFNjcmVlbkFuaW1hdGlvbjooYm9vbCljb21wbGV0ZWQKQEAgLTI5NCwyNCArMjk4
LDE0IEBAIHN0YXRpYyBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gY3JlYXRlSW1hZ2VXaXRoQ29waWVk
RGF0YShDR0ltYWdlUmVmIHNvdXJjZUltYWdlKQogICAgICAgICB3aW5kb3dCb3VuZHMub3JpZ2lu
ID0gTlNaZXJvUG9pbnQ7CiAgICAgICAgIFdLV2luZG93U2V0Q2xpcFJlY3QoW3NlbGYgd2luZG93
XSwgd2luZG93Qm91bmRzKTsKIAotICAgICAgICBOU1dpbmRvdyAqd2ViV2luZG93ID0gW193ZWJW
aWV3UGxhY2Vob2xkZXIuZ2V0KCkgd2luZG93XTsKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlO
X1JFUVVJUkVEID49IDEwNzAKLSAgICAgICAgLy8gSW4gTGlvbiwgTlNXaW5kb3cgd2lsbCBhbmlt
YXRlIGludG8gYW5kIG91dCBvZiBvcmRlck91dCBvcGVyYXRpb25zLiBTdXBwcmVzcyB0aGF0Ci0g
ICAgICAgIC8vIGJlaGF2aW9yIGhlcmUsIG1ha2luZyBzdXJlIHRvIHJlc2V0IHRoZSBhbmltYXRp
b24gYmVoYXZpb3IgYWZ0ZXJ3YXJkLgotICAgICAgICBOU1dpbmRvd0FuaW1hdGlvbkJlaGF2aW9y
IGFuaW1hdGlvbkJlaGF2aW9yID0gW3dlYldpbmRvdyBhbmltYXRpb25CZWhhdmlvcl07Ci0gICAg
ICAgIFt3ZWJXaW5kb3cgc2V0QW5pbWF0aW9uQmVoYXZpb3I6TlNXaW5kb3dBbmltYXRpb25CZWhh
dmlvck5vbmVdOwotI2VuZGlmCi0gICAgICAgIFt3ZWJXaW5kb3cgb3JkZXJPdXQ6c2VsZl07Ci0j
aWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDcwCi0gICAgICAgIFt3ZWJX
aW5kb3cgc2V0QW5pbWF0aW9uQmVoYXZpb3I6YW5pbWF0aW9uQmVoYXZpb3JdOwotI2VuZGlmCi0K
ICAgICAgICAgW19mYWRlQW5pbWF0aW9uLmdldCgpIHN0b3BBbmltYXRpb25dOwogICAgICAgICBb
X2ZhZGVBbmltYXRpb24uZ2V0KCkgc2V0V2luZG93Om5pbF07CiAgICAgICAgIF9mYWRlQW5pbWF0
aW9uID0gbnVsbHB0cjsKICAgICAgICAgCiAgICAgICAgIFtfYmFja2dyb3VuZFdpbmRvdy5nZXQo
KSBvcmRlck91dDpzZWxmXTsKICAgICAgICAgW19iYWNrZ3JvdW5kV2luZG93LmdldCgpIHNldEZy
YW1lOk5TWmVyb1JlY3QgZGlzcGxheTpZRVNdOworCisgICAgICAgIFtfd2ViVmlld1BsYWNlaG9s
ZGVyLmdldCgpIHNldEV4aXRXYXJuaW5nVmlzaWJsZTpZRVNdOwogICAgICAgICBOU0VuYWJsZVNj
cmVlblVwZGF0ZXMoKTsKICAgICB9IGVsc2UKICAgICAgICAgW19zY2FsZUFuaW1hdGlvbi5nZXQo
KSBzdG9wQW5pbWF0aW9uXTsKQEAgLTMyOCw3ICszMjIsOSBAQCBzdGF0aWMgUmV0YWluUHRyPENH
SW1hZ2VSZWY+IGNyZWF0ZUltYWdlV2l0aENvcGllZERhdGEoQ0dJbWFnZVJlZiBzb3VyY2VJbWFn
ZSkKICAgICAgICAgcmV0dXJuOwogICAgIF9pc0Z1bGxTY3JlZW4gPSBOTzsKIAotICAgIC8vIFNj
cmVlbiB1cGRhdGVzIHRvIGJlIHJlLWVuYWJsZWQgaW4gX3N0YXJ0RXhpdEZ1bGxTY3JlZW5Bbmlt
YXRpb25XaXRoRHVyYXRpb246CisgICAgW193ZWJWaWV3UGxhY2Vob2xkZXIuZ2V0KCkgc2V0RXhp
dFdhcm5pbmdWaXNpYmxlOk5PXTsKKworICAgIC8vIFNjcmVlbiB1cGRhdGVzIHRvIGJlIHJlLWVu
YWJsZWQgaW4gX3N0YXJ0RXhpdEZ1bGxTY3JlZW5BbmltYXRpb25XaXRoRHVyYXRpb246IG9yIGJl
Z2FuRXhpdEZ1bGxTY3JlZW5XaXRoSW5pdGlhbEZyYW1lOmZpbmFsRnJhbWU6CiAgICAgTlNEaXNh
YmxlU2NyZWVuVXBkYXRlcygpOwogICAgIFtbc2VsZiB3aW5kb3ddIHNldEF1dG9kaXNwbGF5Ok5P
XTsKIApAQCAtMzQ5LDMwICszNDUsMTkgQEAgc3RhdGljIFJldGFpblB0cjxDR0ltYWdlUmVmPiBj
cmVhdGVJbWFnZVdpdGhDb3BpZWREYXRhKENHSW1hZ2VSZWYgc291cmNlSW1hZ2UpCiAgICAgaWYg
KF9pc0VudGVyaW5nRnVsbFNjcmVlbikKICAgICAgICAgW3NlbGYgZmluaXNoZWRFbnRlckZ1bGxT
Y3JlZW5BbmltYXRpb246Tk9dOwogCi0gICAgW3NlbGYgX3VwZGF0ZU1lbnVBbmREb2NrRm9yRnVs
bFNjcmVlbl07Ci0gICAgCi0gICAgTlNXaW5kb3cqIHdlYldpbmRvdyA9IFtfd2ViVmlld1BsYWNl
aG9sZGVyLmdldCgpIHdpbmRvd107Ci0jaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJF
RCA+PSAxMDcwCi0gICAgLy8gSW4gTGlvbiwgTlNXaW5kb3cgd2lsbCBhbmltYXRlIGludG8gYW5k
IG91dCBvZiBvcmRlck91dCBvcGVyYXRpb25zLiBTdXBwcmVzcyB0aGF0Ci0gICAgLy8gYmVoYXZp
b3IgaGVyZSwgbWFraW5nIHN1cmUgdG8gcmVzZXQgdGhlIGFuaW1hdGlvbiBiZWhhdmlvciBhZnRl
cndhcmQuCi0gICAgTlNXaW5kb3dBbmltYXRpb25CZWhhdmlvciBhbmltYXRpb25CZWhhdmlvciA9
IFt3ZWJXaW5kb3cgYW5pbWF0aW9uQmVoYXZpb3JdOwotICAgIFt3ZWJXaW5kb3cgc2V0QW5pbWF0
aW9uQmVoYXZpb3I6TlNXaW5kb3dBbmltYXRpb25CZWhhdmlvck5vbmVdOwotI2VuZGlmCi0gICAg
Ly8gSWYgdGhlIHVzZXIgaGFzIG1vdmVkIHRoZSBmdWxsU2NyZWVuIHdpbmRvdyBpbnRvIGEgbmV3
IHNwYWNlLCB0ZW1wb3JhcmlseSBjaGFuZ2UKLSAgICAvLyB0aGUgY29sbGVjdGlvbkJlaGF2aW9y
IG9mIHRoZSB3ZWJWaWV3J3Mgd2luZG93IHNvIHRoYXQgaXQgaXMgcHVsbGVkIGludG8gdGhlIGFj
dGl2ZSBzcGFjZToKLSAgICBpZiAoIShbd2ViV2luZG93IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2Vs
ZWN0b3IoaXNPbkFjdGl2ZVNwYWNlKV0gPyBbd2ViV2luZG93IGlzT25BY3RpdmVTcGFjZV0gOiBZ
RVMpKSB7Ci0gICAgICAgIE5TV2luZG93Q29sbGVjdGlvbkJlaGF2aW9yIGJlaGF2aW9yID0gW3dl
YldpbmRvdyBjb2xsZWN0aW9uQmVoYXZpb3JdOwotICAgICAgICBbd2ViV2luZG93IHNldENvbGxl
Y3Rpb25CZWhhdmlvcjpOU1dpbmRvd0NvbGxlY3Rpb25CZWhhdmlvckNhbkpvaW5BbGxTcGFjZXNd
OwotICAgICAgICBbd2ViV2luZG93IG9yZGVyV2luZG93Ok5TV2luZG93QmVsb3cgcmVsYXRpdmVU
bzpbW3NlbGYgd2luZG93XSB3aW5kb3dOdW1iZXJdXTsKLSAgICAgICAgW3dlYldpbmRvdyBzZXRD
b2xsZWN0aW9uQmVoYXZpb3I6YmVoYXZpb3JdOwotICAgIH0gZWxzZQotICAgICAgICBbd2ViV2lu
ZG93IG9yZGVyV2luZG93Ok5TV2luZG93QmVsb3cgcmVsYXRpdmVUbzpbW3NlbGYgd2luZG93XSB3
aW5kb3dOdW1iZXJdXTsKLSAgICAKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVE
ID49IDEwNzAKLSAgICBbd2ViV2luZG93IHNldEFuaW1hdGlvbkJlaGF2aW9yOmFuaW1hdGlvbkJl
aGF2aW9yXTsKLSNlbmRpZgorICAgIGlmICghW1tzZWxmIHdpbmRvd10gaXNPbkFjdGl2ZVNwYWNl
XSkgeworICAgICAgICAvLyBJZiB0aGUgZnVsbCBzY3JlZW4gd2luZG93IGlzIG5vdCBpbiB0aGUg
YWN0aXZlIHNwYWNlLCB0aGUgTlNXaW5kb3cgZnVsbCBzY3JlZW4gYW5pbWF0aW9uIGRlbGVnYXRl
IG1ldGhvZHMKKyAgICAgICAgLy8gd2lsbCBuZXZlciBiZSBjYWxsZWQuIFNvIGNhbGwgZmluaXNo
ZWRFeGl0RnVsbFNjcmVlbkFuaW1hdGlvbiBleHBsaWNpdGx5LgorICAgICAgICBbc2VsZiBmaW5p
c2hlZEV4aXRGdWxsU2NyZWVuQW5pbWF0aW9uOllFU107CiAKLSAgICBbc2VsZiBfc3RhcnRFeGl0
RnVsbFNjcmVlbkFuaW1hdGlvbldpdGhEdXJhdGlvbjpkZWZhdWx0QW5pbWF0aW9uRHVyYXRpb25d
OworICAgICAgICAvLyBCZWNhdXNlIHdlIGFyZSBicmVha2luZyB0aGUgbm9ybWFsIGFuaW1hdGlv
biBwYXR0ZXJuLCByZS1lbmFibGUgc2NyZWVuIHVwZGF0ZXMKKyAgICAgICAgLy8gYXMgZXhpdEZ1
bGxTY3JlZW4gaGFzIGRpc2FibGVkIHRoZW0sIGJ1dCBfc3RhcnRFeGl0RnVsbFNjcmVlbkFuaW1h
dGlvbldpdGhEdXJhdGlvbjoKKyAgICAgICAgLy8gd2lsbCBuZXZlciBiZSBjYWxsZWQuCisgICAg
ICAgIE5TRW5hYmxlU2NyZWVuVXBkYXRlcygpOworICAgIH0KKworICAgIEFTU0VSVChbW3NlbGYg
d2luZG93XSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGV4aXRGdWxsU2NyZWVuTW9kZTop
XSk7CisgICAgW1tzZWxmIHdpbmRvd10gZXhpdEZ1bGxTY3JlZW5Nb2RlOnNlbGZdOwogfQogCiBz
dGF0aWMgdm9pZCBjb21wbGV0ZUZpbmlzaEV4aXRGdWxsU2NyZWVuQW5pbWF0aW9uQWZ0ZXJSZXBh
aW50KFdLRXJyb3JSZWYsIHZvaWQqKTsKQEAgLTM4Myw4ICszNjgsNiBAQCBzdGF0aWMgdm9pZCBj
b21wbGV0ZUZpbmlzaEV4aXRGdWxsU2NyZWVuQW5pbWF0aW9uQWZ0ZXJSZXBhaW50KFdLRXJyb3JS
ZWYsIHZvaWQqKQogICAgICAgICByZXR1cm47CiAgICAgX2lzRXhpdGluZ0Z1bGxTY3JlZW4gPSBO
TzsKIAotICAgIFtzZWxmIF91cGRhdGVNZW51QW5kRG9ja0ZvckZ1bGxTY3JlZW5dOwotCiAgICAg
Ly8gU2NyZWVuIHVwZGF0ZXMgdG8gYmUgcmUtZW5hYmxlZCBpbiBjb21wbGV0ZUZpbmlzaEV4aXRG
dWxsU2NyZWVuQW5pbWF0aW9uQWZ0ZXJSZXBhaW50LgogICAgIE5TRGlzYWJsZVNjcmVlblVwZGF0
ZXMoKTsKICAgICBbW193ZWJWaWV3UGxhY2Vob2xkZXIuZ2V0KCkgd2luZG93XSBzZXRBdXRvZGlz
cGxheTpOT107CkBAIC00NTUsMzUgKzQzOCwzMSBAQCBzdGF0aWMgdm9pZCBjb21wbGV0ZUZpbmlz
aEV4aXRGdWxsU2NyZWVuQW5pbWF0aW9uQWZ0ZXJSZXBhaW50KFdLRXJyb3JSZWYsIHZvaWQqCiB9
CiAKICNwcmFnbWEgbWFyayAtCi0jcHJhZ21hIG1hcmsgSW50ZXJuYWwgSW50ZXJmYWNlCisjcHJh
Z21hIG1hcmsgQ3VzdG9tIE5TV2luZG93IEZ1bGwgU2NyZWVuIEFuaW1hdGlvbgogCi0tICh2b2lk
KV91cGRhdGVNZW51QW5kRG9ja0ZvckZ1bGxTY3JlZW4KKy0gKE5TQXJyYXkgKiljdXN0b21XaW5k
b3dzVG9FbnRlckZ1bGxTY3JlZW5Gb3JXaW5kb3c6KE5TV2luZG93ICopd2luZG93CiB7Ci0gICAg
Ly8gTlNBcHBsaWNhdGlvblByZXNlbnRhdGlvbk9wdGlvbnMgaXMgYXZhaWxhYmxlIG9uID4gMTAu
NiBvbmx5OgotI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA2MAotICAg
IE5TQXBwbGljYXRpb25QcmVzZW50YXRpb25PcHRpb25zIG9wdGlvbnMgPSBOU0FwcGxpY2F0aW9u
UHJlc2VudGF0aW9uRGVmYXVsdDsKLSAgICBOU1NjcmVlbiogZnVsbFNjcmVlblNjcmVlbiA9IFtb
c2VsZiB3aW5kb3ddIHNjcmVlbl07Ci0gICAgCi0gICAgaWYgKF9pc0Z1bGxTY3JlZW4pIHsKLSAg
ICAgICAgLy8gQXV0by1oaWRlIHRoZSBtZW51IGJhciBpZiB0aGUgZnVsbFNjcmVlblNjcmVlbiBj
b250YWlucyB0aGUgbWVudSBiYXI6Ci0gICAgICAgIC8vIE5PVEU6IGlmIHRoZSBmdWxsU2NyZWVu
U2NyZWVuIGNvbnRhaW5zIHRoZSBtZW51IGJhciBidXQgbm90IHRoZSBkb2NrLCB3ZSBtdXN0IHN0
aWxsIAotICAgICAgICAvLyBhdXRvLWhpZGUgdGhlIGRvY2ssIG9yIGFuIGV4Y2VwdGlvbiB3aWxs
IGJlIHRocm93bi4KLSAgICAgICAgaWYgKFtbTlNTY3JlZW4gc2NyZWVuc10gb2JqZWN0QXRJbmRl
eDowXSA9PSBmdWxsU2NyZWVuU2NyZWVuKQotICAgICAgICAgICAgb3B0aW9ucyB8PSAoTlNBcHBs
aWNhdGlvblByZXNlbnRhdGlvbkF1dG9IaWRlTWVudUJhciB8IE5TQXBwbGljYXRpb25QcmVzZW50
YXRpb25BdXRvSGlkZURvY2spOwotICAgICAgICAvLyBDaGVjayBpZiB0aGUgY3VycmVudCBzY3Jl
ZW4gY29udGFpbnMgdGhlIGRvY2sgYnkgY29tcGFyaW5nIHRoZSBzY3JlZW4ncyBmcmFtZSB0byBp
dHMKLSAgICAgICAgLy8gdmlzaWJsZUZyYW1lOyBpZiBhIGRvY2sgaXMgcHJlc2VudCwgdGhlIHZp
c2libGVGcmFtZSB3aWxsIGRpZmZlci4gSWYgdGhlIGN1cnJlbnQgc2NyZWVuCi0gICAgICAgIC8v
IGNvbnRhaW5zIHRoZSBkb2NrLCBoaWRlIGl0LgotICAgICAgICBlbHNlIGlmICghTlNFcXVhbFJl
Y3RzKFtmdWxsU2NyZWVuU2NyZWVuIGZyYW1lXSwgW2Z1bGxTY3JlZW5TY3JlZW4gdmlzaWJsZUZy
YW1lXSkpCi0gICAgICAgICAgICBvcHRpb25zIHw9IE5TQXBwbGljYXRpb25QcmVzZW50YXRpb25B
dXRvSGlkZURvY2s7Ci0gICAgfQotICAgIAotICAgIGlmIChbTlNBcHAgcmVzcG9uZHNUb1NlbGVj
dG9yOkBzZWxlY3RvcihzZXRQcmVzZW50YXRpb25PcHRpb25zOildKQotICAgICAgICBbTlNBcHAg
c2V0UHJlc2VudGF0aW9uT3B0aW9uczpvcHRpb25zXTsKLSAgICBlbHNlCi0jZW5kaWYKLSAgICAg
ICAgU2V0U3lzdGVtVUlNb2RlKF9pc0Z1bGxTY3JlZW4gPyBrVUlNb2RlQWxsSGlkZGVuIDoga1VJ
TW9kZU5vcm1hbCwgMCk7CisgICAgcmV0dXJuIFtOU0FycmF5IGFycmF5V2l0aE9iamVjdHM6W3Nl
bGYgd2luZG93XSwgX2JhY2tncm91bmRXaW5kb3cuZ2V0KCksIG5pbF07Cit9CisKKy0gKE5TQXJy
YXkgKiljdXN0b21XaW5kb3dzVG9FeGl0RnVsbFNjcmVlbkZvcldpbmRvdzooTlNXaW5kb3cgKil3
aW5kb3cKK3sKKyAgICByZXR1cm4gW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czpbc2VsZiB3aW5k
b3ddLCBfYmFja2dyb3VuZFdpbmRvdy5nZXQoKSwgbmlsXTsKK30KKworLSAodm9pZCl3aW5kb3c6
KE5TV2luZG93ICopd2luZG93IHN0YXJ0Q3VzdG9tQW5pbWF0aW9uVG9FbnRlckZ1bGxTY3JlZW5X
aXRoRHVyYXRpb246KE5TVGltZUludGVydmFsKWR1cmF0aW9uCit7CisgICAgW3NlbGYgX3N0YXJ0
RW50ZXJGdWxsU2NyZWVuQW5pbWF0aW9uV2l0aER1cmF0aW9uOmR1cmF0aW9uXTsKK30KKworLSAo
dm9pZCl3aW5kb3c6KE5TV2luZG93ICopd2luZG93IHN0YXJ0Q3VzdG9tQW5pbWF0aW9uVG9FeGl0
RnVsbFNjcmVlbldpdGhEdXJhdGlvbjooTlNUaW1lSW50ZXJ2YWwpZHVyYXRpb24KK3sKKyAgICBb
c2VsZiBfc3RhcnRFeGl0RnVsbFNjcmVlbkFuaW1hdGlvbldpdGhEdXJhdGlvbjpkdXJhdGlvbl07
CiB9CiAKKyNwcmFnbWEgbWFyayAtCisjcHJhZ21hIG1hcmsgSW50ZXJuYWwgSW50ZXJmYWNlCisK
IC0gKFdlYlBhZ2VQcm94eSopX3BhZ2UKIHsKICAgICByZXR1cm4gdG9JbXBsKFtfd2ViVmlldyBw
YWdlUmVmXSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>174730</attachid>
            <date>2012-11-16 11:39:46 -0800</date>
            <delta_ts>2012-11-16 11:41:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100025-20121116113742.patch</filename>
            <type>text/plain</type>
            <size>14546</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM0OTczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZTVmYTBiMTRhNjEwMWQ3
NDNmNmE2OWVjMWJiNzQ4NzUzNGE0MjcxOC4uMGIwZjU0ZWNiN2YwYTY5NzZlMTU1YTJiYmEyODIz
YTRkZmJjMDgxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTEwLTIyICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtXSzJdIFtNYWNdIFdlYktp
dCBGdWxsIFNjcmVlbiBBUEkgc2hvdWxkIHVzZSBOU1dpbmRvdyBmdWxsIHNjcmVlbiBBUEkuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDAwMjUKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgdGhlIE5T
V2luZG93IGZ1bGwgc2NyZWVuIEFQSSB3aGVuIHRha2luZyB0aGUgV2ViVmlldyBmdWxsIHNjcmVl
bi4gVG8gZmFjaWxpdHkgdGhlIGNhc2Ugd2hlcmUgdGhlIGJyb3dzZXIgd2luZG93IGlzIGFscmVh
ZHkKKyAgICAgICAgaW4gZnVsbCBzY3JlZW4gbW9kZSwgbm8gbG9uZ2VyIGhpZGUgdGhlIGJyb3dz
ZXIgd2luZG93IHdoZW4gZW50ZXJpbmcgZnVsbCBzY3JlZW4uIEluc3RlYWQsIHByb3ZpZGUgYSBw
bGFjZWhvbGRlciB2aWV3IHdpdGggCisgICAgICAgIGluc3RydWN0aW9ucyB0byBjbGljayB0aGUg
cGxhY2Vob2xkZXIgdG8gZXhpdCBmdWxsIHNjcmVlbi4KKworICAgICAgICAqIFVJUHJvY2Vzcy9t
YWMvV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9t
YWMvV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5tbToKKyAgICAgICAgKC1bV0tGdWxsU2Ny
ZWVuV2luZG93Q29udHJvbGxlciBpbml0XSk6IFNldCBzZWxmIGFzIHRoZSB3aW5kb3cncyBkZWxl
Z2F0ZTsgZW5hYmxlIHdpbmRvdydzIGZ1bGwgc2NyZWVuIGFjdGlvbi4KKyAgICAgICAgKC1bV0tG
dWxsU2NyZWVuV2luZG93Q29udHJvbGxlciBhcHBsaWNhdGlvbkRpZENoYW5nZVNjcmVlblBhcmFt
ZXRlcnM6XSk6IFJlbW92ZSByZWZlcmVuY2UgdG8gX3VwZGF0ZVdpbmRvd0FuZERvY2tGb3JGdWxs
U2NyZWVuLgorICAgICAgICAoLVtXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyIGVudGVyRnVs
bFNjcmVlbjpdKTogIERpdHRvLiBDcmVhdGUgYSBXS0Z1bGxTY3JlZW5QbGFjZWhvbGRlclZpZXcg
aW5zdGVhZCBvZiBnZW5lcmljIE5TSW1hZ2VWaWV3LgorICAgICAgICAoLVtXS0Z1bGxTY3JlZW5X
aW5kb3dDb250cm9sbGVyIGJlZ2FuRW50ZXJGdWxsU2NyZWVuV2l0aEluaXRpYWxGcmFtZTpmaW5h
bEZyYW1lOl0pOiBEaXR0by4gQ2FsbCBOU1dpbmRvdyBlbnRlckZ1bGxTY3JlZW46IEFQSS4KKyAg
ICAgICAgKC1bV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlciBmaW5pc2hlZEVudGVyRnVsbFNj
cmVlbkFuaW1hdGlvbjpdKTogU2hvdyB0aGUgd2FybmluZyB2aWV3LgorICAgICAgICAoLVtXS0Z1
bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyIGV4aXRGdWxsU2NyZWVuXSk6IEhpZGUgdGhlIHdhcm5p
bmcgdmlldy4KKyAgICAgICAgKC1bV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlciBiZWdhbkV4
aXRGdWxsU2NyZWVuV2l0aEluaXRpYWxGcmFtZTpmaW5hbEZyYW1lOl0pOiBBZGQgc3BlY2lhbCBj
YXNlIHdoZXJlIHdlIGFyZSBleGl0aW5nCisgICAgICAgICAgICBmcm9tIGZ1bGwgc2NyZWVuIG1v
ZGUgd2hlbiB0aGUgZnVsbCBzY3JlZW4gd2luZG93IGlzIG5vdCBvbiBzY3JlZW4uCisgICAgICAg
ICgtW1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIgZmluaXNoZWRFeGl0RnVsbFNjcmVlbkFu
aW1hdGlvbjpdKTogUmVtb3ZlIHJlZmVyZW5jZSB0byBfdXBkYXRlTWVudUFuZERvY2tGb3JGdWxs
U2NyZWVuLgorICAgICAgICAoLVtXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyIGN1c3RvbVdp
bmRvd3NUb0VudGVyRnVsbFNjcmVlbkZvcldpbmRvdzpdKTogQWRkZWQuIFJldHVybiB0aGUgYmFj
a2dyb3VuZCB3aW5kb3cgYW5kIHRoZSBmdWxsIHNjcmVlbiB3aW5kb3cuCisgICAgICAgICgtW1dL
RnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIgY3VzdG9tV2luZG93c1RvRXhpdEZ1bGxTY3JlZW5G
b3JXaW5kb3c6XSk6IERpdHRvLgorICAgICAgICAoLVtXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9s
bGVyIHdpbmRvdzpzdGFydEN1c3RvbUFuaW1hdGlvblRvRW50ZXJGdWxsU2NyZWVuV2l0aER1cmF0
aW9uOl0pOiBBZGRlZC4gQ2FsbCB0aHJvdWdoIHRvIF9zdGFydEVudGVyRnVsbFNjcmVlbkFuaW1h
dGlvbldpdGhEdXJhdGlvbjoKKyAgICAgICAgKC1bV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxl
ciB3aW5kb3c6c3RhcnRDdXN0b21BbmltYXRpb25Ub0V4aXRGdWxsU2NyZWVuV2l0aER1cmF0aW9u
Ol0pOiBBZGRlZC4gQ2FsbCB0aHJvdWdoIHRvIF9zdGFydEV4aXRGdWxsU2NyZWVuQW5pbWF0aW9u
V2l0aER1cmF0aW9uOgorCiAyMDEyLTExLTE1ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBw
bGUuY29tPgogCiAgICAgICAgIFByaXZhdGUgQnJvd3NpbmcgaXMgYSBwZXItcGFnZSBzZXR0aW5n
IHRoYXQgc2V0cyBhIGdsb2JhbCB2YWx1ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL21hYy9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvbWFjL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIuaAppbmRleCA5Y2U4
OGFlNWE5NmJiZGJmOWRhZjljNjcwMzkxMDdhZjkyODhlOThjLi5lNDc4OWFlM2E3M2Y5MjM0YjI3
YmM3ZTA2N2I0NjI0OTg1MDA4M2MyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvbWFjL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvbWFjL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIuaApAQCAtMzgsMTMg
KzM4LDE0IEBAIGNsYXNzIEludFJlY3Q7CiB9CiAKIEBjbGFzcyBXS1ZpZXc7CitAY2xhc3MgV2Vi
Q29yZUZ1bGxTY3JlZW5QbGFjZWhvbGRlclZpZXc7CiBAY2xhc3MgV2ViV2luZG93U2NhbGVBbmlt
YXRpb247CiBAY2xhc3MgV2ViV2luZG93RmFkZUFuaW1hdGlvbjsKIAotQGludGVyZmFjZSBXS0Z1
bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyIDogTlNXaW5kb3dDb250cm9sbGVyIHsKK0BpbnRlcmZh
Y2UgV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlciA6IE5TV2luZG93Q29udHJvbGxlcjxOU1dp
bmRvd0RlbGVnYXRlPiB7CiBAcHJpdmF0ZQogICAgIFdLVmlldyAqX3dlYlZpZXc7Ci0gICAgUmV0
YWluUHRyPE5TSW1hZ2VWaWV3PiBfd2ViVmlld1BsYWNlaG9sZGVyOworICAgIFJldGFpblB0cjxX
ZWJDb3JlRnVsbFNjcmVlblBsYWNlaG9sZGVyVmlldz4gX3dlYlZpZXdQbGFjZWhvbGRlcjsKICAg
ICBSZXRhaW5QdHI8V2ViV2luZG93U2NhbGVBbmltYXRpb24+IF9zY2FsZUFuaW1hdGlvbjsKICAg
ICBSZXRhaW5QdHI8V2ViV2luZG93RmFkZUFuaW1hdGlvbj4gX2ZhZGVBbmltYXRpb247CiAgICAg
UmV0YWluUHRyPE5TV2luZG93PiBfYmFja2dyb3VuZFdpbmRvdzsKQEAgLTU2LDYgKzU3LDcgQEAg
Y2xhc3MgSW50UmVjdDsKICAgICBCT09MIF9pc0V4aXRpbmdGdWxsU2NyZWVuOwogICAgIEJPT0wg
X2lzRnVsbFNjcmVlbjsKICAgICBCT09MIF9pc1BsYXlpbmc7CisgICAgTlNUaW1lSW50ZXJ2YWwg
X2FuaW1hdGlvbkR1cmF0aW9uOwogfQogCiAtIChXS1ZpZXcqKXdlYlZpZXc7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xs
ZXIubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dLRnVsbFNjcmVlbldpbmRvd0Nv
bnRyb2xsZXIubW0KaW5kZXggMjM4YTY3NTE2NWVkOGMyOTgzOTQ4OTNhNTFiYmFiYjYxZGEyNzQy
NS4uMmIxZDFjMjgzMmMyMGIxY2IyOGUzZGFiZWRlMzE2ZmVlZDQ1MjhlNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVy
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV0tGdWxsU2NyZWVuV2luZG93
Q29udHJvbGxlci5tbQpAQCAtMzksNiArMzksOCBAQAogI2ltcG9ydCA8V2ViQ29yZS9EaXNwbGF5
U2xlZXBEaXNhYmxlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9GbG9hdFJlY3QuaD4KICNpbXBvcnQg
PFdlYkNvcmUvSW50UmVjdC5oPgorI2ltcG9ydCA8V2ViQ29yZS9Mb2NhbGl6ZWRTdHJpbmdzLmg+
CisjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVGdWxsU2NyZWVuUGxhY2Vob2xkZXJWaWV3Lmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVGdWxsU2NyZWVuV2luZG93Lmg+CiAjaW1wb3J0IDxXZWJD
b3JlL1dlYldpbmRvd0FuaW1hdGlvbi5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYk5TV2luZG93RXh0
cmFzLmg+CkBAIC01Myw4ICs1NSwxMiBAQCBzdGF0aWMgUmV0YWluUHRyPE5TV2luZG93PiBjcmVh
dGVCYWNrZ3JvdW5kRnVsbHNjcmVlbldpbmRvdyhOU1JlY3QgZnJhbWUpOwogc3RhdGljIGNvbnN0
IENGVGltZUludGVydmFsIGRlZmF1bHRBbmltYXRpb25EdXJhdGlvbiA9IDAuNTsKIHN0YXRpYyBj
b25zdCBOU1RpbWVJbnRlcnZhbCBEZWZhdWx0V2F0Y2hkb2dUaW1lckludGVydmFsID0gMTsKIAor
QGludGVyZmFjZSBOU1dpbmRvdyhNb3JlU3BlY2lmaWNGdWxsU2NyZWVuQWN0aW9ucykKKy0gKHZv
aWQpZXhpdEZ1bGxTY3JlZW5Nb2RlOihpZClzZW5kZXI7CistICh2b2lkKWVudGVyRnVsbFNjcmVl
bk1vZGU6KGlkKXNlbmRlcjsKK0BlbmQKKwogQGludGVyZmFjZSBXS0Z1bGxTY3JlZW5XaW5kb3dD
b250cm9sbGVyKFByaXZhdGUpPE5TQW5pbWF0aW9uRGVsZWdhdGU+Ci0tICh2b2lkKV91cGRhdGVN
ZW51QW5kRG9ja0ZvckZ1bGxTY3JlZW47CiAtICh2b2lkKV9yZXBsYWNlVmlldzooTlNWaWV3Kil2
aWV3IHdpdGg6KE5TVmlldyopb3RoZXJWaWV3OwogLSAoV2ViUGFnZVByb3h5KilfcGFnZTsKIC0g
KFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHkqKV9tYW5hZ2VyOwpAQCAtOTIsNiArOTgsOCBAQCBz
dGF0aWMgTlNSZWN0IGNvbnZlcnRSZWN0VG9TY3JlZW4oTlNXaW5kb3cgKndpbmRvdywgTlNSZWN0
IHJlY3QpCiAgICAgW3dpbmRvdyByZWxlYXNlXTsKICAgICBpZiAoIXNlbGYpCiAgICAgICAgIHJl
dHVybiBuaWw7CisgICAgW3dpbmRvdyBzZXREZWxlZ2F0ZTpzZWxmXTsKKyAgICBbd2luZG93IHNl
dENvbGxlY3Rpb25CZWhhdmlvcjooW3dpbmRvdyBjb2xsZWN0aW9uQmVoYXZpb3JdIHwgTlNXaW5k
b3dDb2xsZWN0aW9uQmVoYXZpb3JGdWxsU2NyZWVuUHJpbWFyeSldOwogICAgIFtzZWxmIHdpbmRv
d0RpZExvYWRdOwogICAgIAogICAgIHJldHVybiBzZWxmOwpAQCAtMTc0LDcgKzE4Miw2IEBAIHN0
YXRpYyBOU1JlY3QgY29udmVydFJlY3RUb1NjcmVlbihOU1dpbmRvdyAqd2luZG93LCBOU1JlY3Qg
cmVjdCkKICAgICAvLyB0aGUgRG9jaydzIHNpemUgb3IgbG9jYXRpb24sIG9yIHRoZXkgbWF5IGhh
dmUgY2hhbmdlZCB0aGUgZnVsbFNjcmVlbiBzY3JlZW4ncyBkaW1lbnNpb25zLiAKICAgICAvLyBV
cGRhdGUgb3VyIHByZXNlbnRhdGlvbiBwYXJhbWV0ZXJzLCBhbmQgZW5zdXJlIHRoYXQgdGhlIGZ1
bGwgc2NyZWVuIHdpbmRvdyBvY2N1cGllcyB0aGUgCiAgICAgLy8gZW50aXJlIHNjcmVlbjoKLSAg
ICBbc2VsZiBfdXBkYXRlTWVudUFuZERvY2tGb3JGdWxsU2NyZWVuXTsKICAgICBOU1dpbmRvdyog
d2luZG93ID0gW3NlbGYgd2luZG93XTsKICAgICBOU1JlY3Qgc2NyZWVuRnJhbWUgPSBbW3dpbmRv
dyBzY3JlZW5dIGZyYW1lXTsKICAgICBbd2luZG93IHNldEZyYW1lOnNjcmVlbkZyYW1lIGRpc3Bs
YXk6WUVTXTsKQEAgLTIxMiw4ICsyMTksNiBAQCBzdGF0aWMgUmV0YWluUHRyPENHSW1hZ2VSZWY+
IGNyZWF0ZUltYWdlV2l0aENvcGllZERhdGEoQ0dJbWFnZVJlZiBzb3VyY2VJbWFnZSkKICAgICAg
ICAgcmV0dXJuOwogICAgIF9pc0Z1bGxTY3JlZW4gPSBZRVM7CiAKLSAgICBbc2VsZiBfdXBkYXRl
TWVudUFuZERvY2tGb3JGdWxsU2NyZWVuXTsgICAKLQogICAgIGlmICghc2NyZWVuKQogICAgICAg
ICBzY3JlZW4gPSBbTlNTY3JlZW4gbWFpblNjcmVlbl07CiAgICAgTlNSZWN0IHNjcmVlbkZyYW1l
ID0gW3NjcmVlbiBmcmFtZV07CkBAIC0yNDYsMTEgKzI1MSwxMSBAQCBzdGF0aWMgUmV0YWluUHRy
PENHSW1hZ2VSZWY+IGNyZWF0ZUltYWdlV2l0aENvcGllZERhdGEoQ0dJbWFnZVJlZiBzb3VyY2VJ
bWFnZSkKIAogICAgIC8vIFN3YXAgdGhlIHdlYlZpZXcgcGxhY2Vob2xkZXIgaW50byBwbGFjZS4K
ICAgICBpZiAoIV93ZWJWaWV3UGxhY2Vob2xkZXIpIHsKLSAgICAgICAgX3dlYlZpZXdQbGFjZWhv
bGRlci5hZG9wdE5TKFtbTlNJbWFnZVZpZXcgYWxsb2NdIGluaXRdKTsKLSAgICAgICAgW193ZWJW
aWV3UGxhY2Vob2xkZXIuZ2V0KCkgc2V0TGF5ZXI6W0NBTGF5ZXIgbGF5ZXJdXTsKLSAgICAgICAg
W193ZWJWaWV3UGxhY2Vob2xkZXIuZ2V0KCkgc2V0V2FudHNMYXllcjpZRVNdOworICAgICAgICBf
d2ViVmlld1BsYWNlaG9sZGVyLmFkb3B0TlMoW1tXZWJDb3JlRnVsbFNjcmVlblBsYWNlaG9sZGVy
VmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpbX3dlYlZpZXcgZnJhbWVdXSk7CisgICAgICAgIFtf
d2ViVmlld1BsYWNlaG9sZGVyLmdldCgpIHNldFRhcmdldDpzZWxmXTsKKyAgICAgICAgW193ZWJW
aWV3UGxhY2Vob2xkZXIuZ2V0KCkgc2V0QWN0aW9uOkBzZWxlY3RvcihjYW5jZWxPcGVyYXRpb246
KV07CiAgICAgfQotICAgIFtbX3dlYlZpZXdQbGFjZWhvbGRlci5nZXQoKSBsYXllcl0gc2V0Q29u
dGVudHM6KGlkKXdlYlZpZXdDb250ZW50cy5nZXQoKV07CisgICAgW193ZWJWaWV3UGxhY2Vob2xk
ZXIuZ2V0KCkgc2V0Q29udGVudHM6KGlkKXdlYlZpZXdDb250ZW50cy5nZXQoKV07CiAgICAgW3Nl
bGYgX3JlcGxhY2VWaWV3Ol93ZWJWaWV3IHdpdGg6X3dlYlZpZXdQbGFjZWhvbGRlci5nZXQoKV07
CiAgICAgCiAgICAgLy8gVGhlbiBpbnNlcnQgdGhlIFdlYlZpZXcgaW50byB0aGUgZnVsbCBzY3Jl
ZW4gd2luZG93CkBAIC0yNzMsOSArMjc4LDggQEAgc3RhdGljIFJldGFpblB0cjxDR0ltYWdlUmVm
PiBjcmVhdGVJbWFnZVdpdGhDb3BpZWREYXRhKENHSW1hZ2VSZWYgc291cmNlSW1hZ2UpCiAgICAg
X2luaXRpYWxGcmFtZSA9IGluaXRpYWxGcmFtZTsKICAgICBfZmluYWxGcmFtZSA9IGZpbmFsRnJh
bWU7CiAKLSAgICBbc2VsZiBfdXBkYXRlTWVudUFuZERvY2tGb3JGdWxsU2NyZWVuXTsgICAKLQot
ICAgIFtzZWxmIF9zdGFydEVudGVyRnVsbFNjcmVlbkFuaW1hdGlvbldpdGhEdXJhdGlvbjpkZWZh
dWx0QW5pbWF0aW9uRHVyYXRpb25dOworICAgIEFTU0VSVChbW3NlbGYgd2luZG93XSByZXNwb25k
c1RvU2VsZWN0b3I6QHNlbGVjdG9yKGVudGVyRnVsbFNjcmVlbk1vZGU6KV0pOworICAgIFtbc2Vs
ZiB3aW5kb3ddIGVudGVyRnVsbFNjcmVlbk1vZGU6c2VsZl07CiB9CiAKIC0gKHZvaWQpZmluaXNo
ZWRFbnRlckZ1bGxTY3JlZW5BbmltYXRpb246KGJvb2wpY29tcGxldGVkCkBAIC0yOTQsMjQgKzI5
OCwxNCBAQCBzdGF0aWMgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGNyZWF0ZUltYWdlV2l0aENvcGll
ZERhdGEoQ0dJbWFnZVJlZiBzb3VyY2VJbWFnZSkKICAgICAgICAgd2luZG93Qm91bmRzLm9yaWdp
biA9IE5TWmVyb1BvaW50OwogICAgICAgICBXS1dpbmRvd1NldENsaXBSZWN0KFtzZWxmIHdpbmRv
d10sIHdpbmRvd0JvdW5kcyk7CiAKLSAgICAgICAgTlNXaW5kb3cgKndlYldpbmRvdyA9IFtfd2Vi
Vmlld1BsYWNlaG9sZGVyLmdldCgpIHdpbmRvd107Ci0jaWYgX19NQUNfT1NfWF9WRVJTSU9OX01J
Tl9SRVFVSVJFRCA+PSAxMDcwCi0gICAgICAgIC8vIEluIExpb24sIE5TV2luZG93IHdpbGwgYW5p
bWF0ZSBpbnRvIGFuZCBvdXQgb2Ygb3JkZXJPdXQgb3BlcmF0aW9ucy4gU3VwcHJlc3MgdGhhdAot
ICAgICAgICAvLyBiZWhhdmlvciBoZXJlLCBtYWtpbmcgc3VyZSB0byByZXNldCB0aGUgYW5pbWF0
aW9uIGJlaGF2aW9yIGFmdGVyd2FyZC4KLSAgICAgICAgTlNXaW5kb3dBbmltYXRpb25CZWhhdmlv
ciBhbmltYXRpb25CZWhhdmlvciA9IFt3ZWJXaW5kb3cgYW5pbWF0aW9uQmVoYXZpb3JdOwotICAg
ICAgICBbd2ViV2luZG93IHNldEFuaW1hdGlvbkJlaGF2aW9yOk5TV2luZG93QW5pbWF0aW9uQmVo
YXZpb3JOb25lXTsKLSNlbmRpZgotICAgICAgICBbd2ViV2luZG93IG9yZGVyT3V0OnNlbGZdOwot
I2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA3MAotICAgICAgICBbd2Vi
V2luZG93IHNldEFuaW1hdGlvbkJlaGF2aW9yOmFuaW1hdGlvbkJlaGF2aW9yXTsKLSNlbmRpZgot
CiAgICAgICAgIFtfZmFkZUFuaW1hdGlvbi5nZXQoKSBzdG9wQW5pbWF0aW9uXTsKICAgICAgICAg
W19mYWRlQW5pbWF0aW9uLmdldCgpIHNldFdpbmRvdzpuaWxdOwogICAgICAgICBfZmFkZUFuaW1h
dGlvbiA9IG51bGxwdHI7CiAgICAgICAgIAogICAgICAgICBbX2JhY2tncm91bmRXaW5kb3cuZ2V0
KCkgb3JkZXJPdXQ6c2VsZl07CiAgICAgICAgIFtfYmFja2dyb3VuZFdpbmRvdy5nZXQoKSBzZXRG
cmFtZTpOU1plcm9SZWN0IGRpc3BsYXk6WUVTXTsKKworICAgICAgICBbX3dlYlZpZXdQbGFjZWhv
bGRlci5nZXQoKSBzZXRFeGl0V2FybmluZ1Zpc2libGU6WUVTXTsKICAgICAgICAgTlNFbmFibGVT
Y3JlZW5VcGRhdGVzKCk7CiAgICAgfSBlbHNlCiAgICAgICAgIFtfc2NhbGVBbmltYXRpb24uZ2V0
KCkgc3RvcEFuaW1hdGlvbl07CkBAIC0zMjgsNyArMzIyLDkgQEAgc3RhdGljIFJldGFpblB0cjxD
R0ltYWdlUmVmPiBjcmVhdGVJbWFnZVdpdGhDb3BpZWREYXRhKENHSW1hZ2VSZWYgc291cmNlSW1h
Z2UpCiAgICAgICAgIHJldHVybjsKICAgICBfaXNGdWxsU2NyZWVuID0gTk87CiAKLSAgICAvLyBT
Y3JlZW4gdXBkYXRlcyB0byBiZSByZS1lbmFibGVkIGluIF9zdGFydEV4aXRGdWxsU2NyZWVuQW5p
bWF0aW9uV2l0aER1cmF0aW9uOgorICAgIFtfd2ViVmlld1BsYWNlaG9sZGVyLmdldCgpIHNldEV4
aXRXYXJuaW5nVmlzaWJsZTpOT107CisKKyAgICAvLyBTY3JlZW4gdXBkYXRlcyB0byBiZSByZS1l
bmFibGVkIGluIF9zdGFydEV4aXRGdWxsU2NyZWVuQW5pbWF0aW9uV2l0aER1cmF0aW9uOiBvciBi
ZWdhbkV4aXRGdWxsU2NyZWVuV2l0aEluaXRpYWxGcmFtZTpmaW5hbEZyYW1lOgogICAgIE5TRGlz
YWJsZVNjcmVlblVwZGF0ZXMoKTsKICAgICBbW3NlbGYgd2luZG93XSBzZXRBdXRvZGlzcGxheTpO
T107CiAKQEAgLTM0OSwzMCArMzQ1LDE5IEBAIHN0YXRpYyBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4g
Y3JlYXRlSW1hZ2VXaXRoQ29waWVkRGF0YShDR0ltYWdlUmVmIHNvdXJjZUltYWdlKQogICAgIGlm
IChfaXNFbnRlcmluZ0Z1bGxTY3JlZW4pCiAgICAgICAgIFtzZWxmIGZpbmlzaGVkRW50ZXJGdWxs
U2NyZWVuQW5pbWF0aW9uOk5PXTsKIAotICAgIFtzZWxmIF91cGRhdGVNZW51QW5kRG9ja0ZvckZ1
bGxTY3JlZW5dOwotICAgIAotICAgIE5TV2luZG93KiB3ZWJXaW5kb3cgPSBbX3dlYlZpZXdQbGFj
ZWhvbGRlci5nZXQoKSB3aW5kb3ddOwotI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlS
RUQgPj0gMTA3MAotICAgIC8vIEluIExpb24sIE5TV2luZG93IHdpbGwgYW5pbWF0ZSBpbnRvIGFu
ZCBvdXQgb2Ygb3JkZXJPdXQgb3BlcmF0aW9ucy4gU3VwcHJlc3MgdGhhdAotICAgIC8vIGJlaGF2
aW9yIGhlcmUsIG1ha2luZyBzdXJlIHRvIHJlc2V0IHRoZSBhbmltYXRpb24gYmVoYXZpb3IgYWZ0
ZXJ3YXJkLgotICAgIE5TV2luZG93QW5pbWF0aW9uQmVoYXZpb3IgYW5pbWF0aW9uQmVoYXZpb3Ig
PSBbd2ViV2luZG93IGFuaW1hdGlvbkJlaGF2aW9yXTsKLSAgICBbd2ViV2luZG93IHNldEFuaW1h
dGlvbkJlaGF2aW9yOk5TV2luZG93QW5pbWF0aW9uQmVoYXZpb3JOb25lXTsKLSNlbmRpZgotICAg
IC8vIElmIHRoZSB1c2VyIGhhcyBtb3ZlZCB0aGUgZnVsbFNjcmVlbiB3aW5kb3cgaW50byBhIG5l
dyBzcGFjZSwgdGVtcG9yYXJpbHkgY2hhbmdlCi0gICAgLy8gdGhlIGNvbGxlY3Rpb25CZWhhdmlv
ciBvZiB0aGUgd2ViVmlldydzIHdpbmRvdyBzbyB0aGF0IGl0IGlzIHB1bGxlZCBpbnRvIHRoZSBh
Y3RpdmUgc3BhY2U6Ci0gICAgaWYgKCEoW3dlYldpbmRvdyByZXNwb25kc1RvU2VsZWN0b3I6QHNl
bGVjdG9yKGlzT25BY3RpdmVTcGFjZSldID8gW3dlYldpbmRvdyBpc09uQWN0aXZlU3BhY2VdIDog
WUVTKSkgewotICAgICAgICBOU1dpbmRvd0NvbGxlY3Rpb25CZWhhdmlvciBiZWhhdmlvciA9IFt3
ZWJXaW5kb3cgY29sbGVjdGlvbkJlaGF2aW9yXTsKLSAgICAgICAgW3dlYldpbmRvdyBzZXRDb2xs
ZWN0aW9uQmVoYXZpb3I6TlNXaW5kb3dDb2xsZWN0aW9uQmVoYXZpb3JDYW5Kb2luQWxsU3BhY2Vz
XTsKLSAgICAgICAgW3dlYldpbmRvdyBvcmRlcldpbmRvdzpOU1dpbmRvd0JlbG93IHJlbGF0aXZl
VG86W1tzZWxmIHdpbmRvd10gd2luZG93TnVtYmVyXV07Ci0gICAgICAgIFt3ZWJXaW5kb3cgc2V0
Q29sbGVjdGlvbkJlaGF2aW9yOmJlaGF2aW9yXTsKLSAgICB9IGVsc2UKLSAgICAgICAgW3dlYldp
bmRvdyBvcmRlcldpbmRvdzpOU1dpbmRvd0JlbG93IHJlbGF0aXZlVG86W1tzZWxmIHdpbmRvd10g
d2luZG93TnVtYmVyXV07Ci0gICAgCi0jaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJF
RCA+PSAxMDcwCi0gICAgW3dlYldpbmRvdyBzZXRBbmltYXRpb25CZWhhdmlvcjphbmltYXRpb25C
ZWhhdmlvcl07Ci0jZW5kaWYKKyAgICBpZiAoIVtbc2VsZiB3aW5kb3ddIGlzT25BY3RpdmVTcGFj
ZV0pIHsKKyAgICAgICAgLy8gSWYgdGhlIGZ1bGwgc2NyZWVuIHdpbmRvdyBpcyBub3QgaW4gdGhl
IGFjdGl2ZSBzcGFjZSwgdGhlIE5TV2luZG93IGZ1bGwgc2NyZWVuIGFuaW1hdGlvbiBkZWxlZ2F0
ZSBtZXRob2RzCisgICAgICAgIC8vIHdpbGwgbmV2ZXIgYmUgY2FsbGVkLiBTbyBjYWxsIGZpbmlz
aGVkRXhpdEZ1bGxTY3JlZW5BbmltYXRpb24gZXhwbGljaXRseS4KKyAgICAgICAgW3NlbGYgZmlu
aXNoZWRFeGl0RnVsbFNjcmVlbkFuaW1hdGlvbjpZRVNdOwogCi0gICAgW3NlbGYgX3N0YXJ0RXhp
dEZ1bGxTY3JlZW5BbmltYXRpb25XaXRoRHVyYXRpb246ZGVmYXVsdEFuaW1hdGlvbkR1cmF0aW9u
XTsKKyAgICAgICAgLy8gQmVjYXVzZSB3ZSBhcmUgYnJlYWtpbmcgdGhlIG5vcm1hbCBhbmltYXRp
b24gcGF0dGVybiwgcmUtZW5hYmxlIHNjcmVlbiB1cGRhdGVzCisgICAgICAgIC8vIGFzIGV4aXRG
dWxsU2NyZWVuIGhhcyBkaXNhYmxlZCB0aGVtLCBidXQgX3N0YXJ0RXhpdEZ1bGxTY3JlZW5Bbmlt
YXRpb25XaXRoRHVyYXRpb246CisgICAgICAgIC8vIHdpbGwgbmV2ZXIgYmUgY2FsbGVkLgorICAg
ICAgICBOU0VuYWJsZVNjcmVlblVwZGF0ZXMoKTsKKyAgICB9CisKKyAgICBBU1NFUlQoW1tzZWxm
IHdpbmRvd10gcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihleGl0RnVsbFNjcmVlbk1vZGU6
KV0pOworICAgIFtbc2VsZiB3aW5kb3ddIGV4aXRGdWxsU2NyZWVuTW9kZTpzZWxmXTsKIH0KIAog
c3RhdGljIHZvaWQgY29tcGxldGVGaW5pc2hFeGl0RnVsbFNjcmVlbkFuaW1hdGlvbkFmdGVyUmVw
YWludChXS0Vycm9yUmVmLCB2b2lkKik7CkBAIC0zODMsOCArMzY4LDYgQEAgc3RhdGljIHZvaWQg
Y29tcGxldGVGaW5pc2hFeGl0RnVsbFNjcmVlbkFuaW1hdGlvbkFmdGVyUmVwYWludChXS0Vycm9y
UmVmLCB2b2lkKikKICAgICAgICAgcmV0dXJuOwogICAgIF9pc0V4aXRpbmdGdWxsU2NyZWVuID0g
Tk87CiAKLSAgICBbc2VsZiBfdXBkYXRlTWVudUFuZERvY2tGb3JGdWxsU2NyZWVuXTsKLQogICAg
IC8vIFNjcmVlbiB1cGRhdGVzIHRvIGJlIHJlLWVuYWJsZWQgaW4gY29tcGxldGVGaW5pc2hFeGl0
RnVsbFNjcmVlbkFuaW1hdGlvbkFmdGVyUmVwYWludC4KICAgICBOU0Rpc2FibGVTY3JlZW5VcGRh
dGVzKCk7CiAgICAgW1tfd2ViVmlld1BsYWNlaG9sZGVyLmdldCgpIHdpbmRvd10gc2V0QXV0b2Rp
c3BsYXk6Tk9dOwpAQCAtNDU1LDM1ICs0MzgsMzEgQEAgc3RhdGljIHZvaWQgY29tcGxldGVGaW5p
c2hFeGl0RnVsbFNjcmVlbkFuaW1hdGlvbkFmdGVyUmVwYWludChXS0Vycm9yUmVmLCB2b2lkKgog
fQogCiAjcHJhZ21hIG1hcmsgLQotI3ByYWdtYSBtYXJrIEludGVybmFsIEludGVyZmFjZQorI3By
YWdtYSBtYXJrIEN1c3RvbSBOU1dpbmRvdyBGdWxsIFNjcmVlbiBBbmltYXRpb24KIAotLSAodm9p
ZClfdXBkYXRlTWVudUFuZERvY2tGb3JGdWxsU2NyZWVuCistIChOU0FycmF5ICopY3VzdG9tV2lu
ZG93c1RvRW50ZXJGdWxsU2NyZWVuRm9yV2luZG93OihOU1dpbmRvdyAqKXdpbmRvdwogewotICAg
IC8vIE5TQXBwbGljYXRpb25QcmVzZW50YXRpb25PcHRpb25zIGlzIGF2YWlsYWJsZSBvbiA+IDEw
LjYgb25seToKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNjAKLSAg
ICBOU0FwcGxpY2F0aW9uUHJlc2VudGF0aW9uT3B0aW9ucyBvcHRpb25zID0gTlNBcHBsaWNhdGlv
blByZXNlbnRhdGlvbkRlZmF1bHQ7Ci0gICAgTlNTY3JlZW4qIGZ1bGxTY3JlZW5TY3JlZW4gPSBb
W3NlbGYgd2luZG93XSBzY3JlZW5dOwotICAgIAotICAgIGlmIChfaXNGdWxsU2NyZWVuKSB7Ci0g
ICAgICAgIC8vIEF1dG8taGlkZSB0aGUgbWVudSBiYXIgaWYgdGhlIGZ1bGxTY3JlZW5TY3JlZW4g
Y29udGFpbnMgdGhlIG1lbnUgYmFyOgotICAgICAgICAvLyBOT1RFOiBpZiB0aGUgZnVsbFNjcmVl
blNjcmVlbiBjb250YWlucyB0aGUgbWVudSBiYXIgYnV0IG5vdCB0aGUgZG9jaywgd2UgbXVzdCBz
dGlsbCAKLSAgICAgICAgLy8gYXV0by1oaWRlIHRoZSBkb2NrLCBvciBhbiBleGNlcHRpb24gd2ls
bCBiZSB0aHJvd24uCi0gICAgICAgIGlmIChbW05TU2NyZWVuIHNjcmVlbnNdIG9iamVjdEF0SW5k
ZXg6MF0gPT0gZnVsbFNjcmVlblNjcmVlbikKLSAgICAgICAgICAgIG9wdGlvbnMgfD0gKE5TQXBw
bGljYXRpb25QcmVzZW50YXRpb25BdXRvSGlkZU1lbnVCYXIgfCBOU0FwcGxpY2F0aW9uUHJlc2Vu
dGF0aW9uQXV0b0hpZGVEb2NrKTsKLSAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIGN1cnJlbnQgc2Ny
ZWVuIGNvbnRhaW5zIHRoZSBkb2NrIGJ5IGNvbXBhcmluZyB0aGUgc2NyZWVuJ3MgZnJhbWUgdG8g
aXRzCi0gICAgICAgIC8vIHZpc2libGVGcmFtZTsgaWYgYSBkb2NrIGlzIHByZXNlbnQsIHRoZSB2
aXNpYmxlRnJhbWUgd2lsbCBkaWZmZXIuIElmIHRoZSBjdXJyZW50IHNjcmVlbgotICAgICAgICAv
LyBjb250YWlucyB0aGUgZG9jaywgaGlkZSBpdC4KLSAgICAgICAgZWxzZSBpZiAoIU5TRXF1YWxS
ZWN0cyhbZnVsbFNjcmVlblNjcmVlbiBmcmFtZV0sIFtmdWxsU2NyZWVuU2NyZWVuIHZpc2libGVG
cmFtZV0pKQotICAgICAgICAgICAgb3B0aW9ucyB8PSBOU0FwcGxpY2F0aW9uUHJlc2VudGF0aW9u
QXV0b0hpZGVEb2NrOwotICAgIH0KLSAgICAKLSAgICBpZiAoW05TQXBwIHJlc3BvbmRzVG9TZWxl
Y3RvcjpAc2VsZWN0b3Ioc2V0UHJlc2VudGF0aW9uT3B0aW9uczopXSkKLSAgICAgICAgW05TQXBw
IHNldFByZXNlbnRhdGlvbk9wdGlvbnM6b3B0aW9uc107Ci0gICAgZWxzZQotI2VuZGlmCi0gICAg
ICAgIFNldFN5c3RlbVVJTW9kZShfaXNGdWxsU2NyZWVuID8ga1VJTW9kZUFsbEhpZGRlbiA6IGtV
SU1vZGVOb3JtYWwsIDApOworICAgIHJldHVybiBbTlNBcnJheSBhcnJheVdpdGhPYmplY3RzOltz
ZWxmIHdpbmRvd10sIF9iYWNrZ3JvdW5kV2luZG93LmdldCgpLCBuaWxdOworfQorCistIChOU0Fy
cmF5ICopY3VzdG9tV2luZG93c1RvRXhpdEZ1bGxTY3JlZW5Gb3JXaW5kb3c6KE5TV2luZG93ICop
d2luZG93Cit7CisgICAgcmV0dXJuIFtOU0FycmF5IGFycmF5V2l0aE9iamVjdHM6W3NlbGYgd2lu
ZG93XSwgX2JhY2tncm91bmRXaW5kb3cuZ2V0KCksIG5pbF07Cit9CisKKy0gKHZvaWQpd2luZG93
OihOU1dpbmRvdyAqKXdpbmRvdyBzdGFydEN1c3RvbUFuaW1hdGlvblRvRW50ZXJGdWxsU2NyZWVu
V2l0aER1cmF0aW9uOihOU1RpbWVJbnRlcnZhbClkdXJhdGlvbgoreworICAgIFtzZWxmIF9zdGFy
dEVudGVyRnVsbFNjcmVlbkFuaW1hdGlvbldpdGhEdXJhdGlvbjpkdXJhdGlvbl07Cit9CisKKy0g
KHZvaWQpd2luZG93OihOU1dpbmRvdyAqKXdpbmRvdyBzdGFydEN1c3RvbUFuaW1hdGlvblRvRXhp
dEZ1bGxTY3JlZW5XaXRoRHVyYXRpb246KE5TVGltZUludGVydmFsKWR1cmF0aW9uCit7CisgICAg
W3NlbGYgX3N0YXJ0RXhpdEZ1bGxTY3JlZW5BbmltYXRpb25XaXRoRHVyYXRpb246ZHVyYXRpb25d
OwogfQogCisjcHJhZ21hIG1hcmsgLQorI3ByYWdtYSBtYXJrIEludGVybmFsIEludGVyZmFjZQor
CiAtIChXZWJQYWdlUHJveHkqKV9wYWdlCiB7CiAgICAgcmV0dXJuIHRvSW1wbChbX3dlYlZpZXcg
cGFnZVJlZl0pOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>174732</attachid>
            <date>2012-11-16 11:43:17 -0800</date>
            <delta_ts>2012-11-16 21:27:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100025-20121116114113.patch</filename>
            <type>text/plain</type>
            <size>15196</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM0OTczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZTVmYTBiMTRhNjEwMWQ3
NDNmNmE2OWVjMWJiNzQ4NzUzNGE0MjcxOC4uMTViNWJjMWJmZjM4N2M0ZGVjY2IwZDE0ZmVhNWYy
ZjkxOWM3NzRjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDEyLTEwLTIyICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtXSzJdIFtNYWNdIFdlYktp
dCBGdWxsIFNjcmVlbiBBUEkgc2hvdWxkIHVzZSBOU1dpbmRvdyBmdWxsIHNjcmVlbiBBUEkuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDAwMjUKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgdGhlIE5T
V2luZG93IGZ1bGwgc2NyZWVuIEFQSSB3aGVuIHRha2luZyB0aGUgV2ViVmlldyBmdWxsIHNjcmVl
bi4gVG8gZmFjaWxpdHkgdGhlIGNhc2Ugd2hlcmUgdGhlIGJyb3dzZXIgd2luZG93IGlzIGFscmVh
ZHkKKyAgICAgICAgaW4gZnVsbCBzY3JlZW4gbW9kZSwgbm8gbG9uZ2VyIGhpZGUgdGhlIGJyb3dz
ZXIgd2luZG93IHdoZW4gZW50ZXJpbmcgZnVsbCBzY3JlZW4uIEluc3RlYWQsIHByb3ZpZGUgYSBw
bGFjZWhvbGRlciB2aWV3IHdpdGggCisgICAgICAgIGluc3RydWN0aW9ucyB0byBjbGljayB0aGUg
cGxhY2Vob2xkZXIgdG8gZXhpdCBmdWxsIHNjcmVlbi4KKworICAgICAgICAqIFVJUHJvY2Vzcy9t
YWMvV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9t
YWMvV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5tbToKKyAgICAgICAgKC1bV0tGdWxsU2Ny
ZWVuV2luZG93Q29udHJvbGxlciBpbml0XSk6IFNldCBzZWxmIGFzIHRoZSB3aW5kb3cncyBkZWxl
Z2F0ZTsgZW5hYmxlIHdpbmRvdydzIGZ1bGwgc2NyZWVuIGFjdGlvbi4KKyAgICAgICAgKC1bV0tG
dWxsU2NyZWVuV2luZG93Q29udHJvbGxlciBkZWFsbG9jXSk6IENsZWFyIG91ciB3aW5kb3cncyBk
ZWxlZ2F0ZS4KKyAgICAgICAgKC1bV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlciBhcHBsaWNh
dGlvbkRpZENoYW5nZVNjcmVlblBhcmFtZXRlcnM6XSk6IFJlbW92ZSByZWZlcmVuY2UgdG8gX3Vw
ZGF0ZVdpbmRvd0FuZERvY2tGb3JGdWxsU2NyZWVuLgorICAgICAgICAoLVtXS0Z1bGxTY3JlZW5X
aW5kb3dDb250cm9sbGVyIGVudGVyRnVsbFNjcmVlbjpdKTogIERpdHRvLiBDcmVhdGUgYSBXS0Z1
bGxTY3JlZW5QbGFjZWhvbGRlclZpZXcgaW5zdGVhZCBvZiBnZW5lcmljIE5TSW1hZ2VWaWV3Lgor
ICAgICAgICAoLVtXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyIGJlZ2FuRW50ZXJGdWxsU2Ny
ZWVuV2l0aEluaXRpYWxGcmFtZTpmaW5hbEZyYW1lOl0pOiBEaXR0by4gQ2FsbCBOU1dpbmRvdyBl
bnRlckZ1bGxTY3JlZW46IEFQSS4KKyAgICAgICAgKC1bV0tGdWxsU2NyZWVuV2luZG93Q29udHJv
bGxlciBmaW5pc2hlZEVudGVyRnVsbFNjcmVlbkFuaW1hdGlvbjpdKTogU2hvdyB0aGUgd2Fybmlu
ZyB2aWV3LgorICAgICAgICAoLVtXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyIGV4aXRGdWxs
U2NyZWVuXSk6IEhpZGUgdGhlIHdhcm5pbmcgdmlldy4KKyAgICAgICAgKC1bV0tGdWxsU2NyZWVu
V2luZG93Q29udHJvbGxlciBiZWdhbkV4aXRGdWxsU2NyZWVuV2l0aEluaXRpYWxGcmFtZTpmaW5h
bEZyYW1lOl0pOiBBZGQgc3BlY2lhbCBjYXNlIHdoZXJlIHdlIGFyZSBleGl0aW5nCisgICAgICAg
ICAgICBmcm9tIGZ1bGwgc2NyZWVuIG1vZGUgd2hlbiB0aGUgZnVsbCBzY3JlZW4gd2luZG93IGlz
IG5vdCBvbiBzY3JlZW4uCisgICAgICAgICgtW1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIg
ZmluaXNoZWRFeGl0RnVsbFNjcmVlbkFuaW1hdGlvbjpdKTogUmVtb3ZlIHJlZmVyZW5jZSB0byBf
dXBkYXRlTWVudUFuZERvY2tGb3JGdWxsU2NyZWVuLgorICAgICAgICAoLVtXS0Z1bGxTY3JlZW5X
aW5kb3dDb250cm9sbGVyIGN1c3RvbVdpbmRvd3NUb0VudGVyRnVsbFNjcmVlbkZvcldpbmRvdzpd
KTogQWRkZWQuIFJldHVybiB0aGUgYmFja2dyb3VuZCB3aW5kb3cgYW5kIHRoZSBmdWxsIHNjcmVl
biB3aW5kb3cuCisgICAgICAgICgtW1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIgY3VzdG9t
V2luZG93c1RvRXhpdEZ1bGxTY3JlZW5Gb3JXaW5kb3c6XSk6IERpdHRvLgorICAgICAgICAoLVtX
S0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyIHdpbmRvdzpzdGFydEN1c3RvbUFuaW1hdGlvblRv
RW50ZXJGdWxsU2NyZWVuV2l0aER1cmF0aW9uOl0pOiBBZGRlZC4gQ2FsbCB0aHJvdWdoIHRvIF9z
dGFydEVudGVyRnVsbFNjcmVlbkFuaW1hdGlvbldpdGhEdXJhdGlvbjoKKyAgICAgICAgKC1bV0tG
dWxsU2NyZWVuV2luZG93Q29udHJvbGxlciB3aW5kb3c6c3RhcnRDdXN0b21BbmltYXRpb25Ub0V4
aXRGdWxsU2NyZWVuV2l0aER1cmF0aW9uOl0pOiBBZGRlZC4gQ2FsbCB0aHJvdWdoIHRvIF9zdGFy
dEV4aXRGdWxsU2NyZWVuQW5pbWF0aW9uV2l0aER1cmF0aW9uOgorCiAyMDEyLTExLTE1ICBBbGV4
ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIFByaXZhdGUgQnJvd3Np
bmcgaXMgYSBwZXItcGFnZSBzZXR0aW5nIHRoYXQgc2V0cyBhIGdsb2JhbCB2YWx1ZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XS0Z1bGxTY3JlZW5XaW5kb3dDb250
cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dLRnVsbFNjcmVlbldpbmRv
d0NvbnRyb2xsZXIuaAppbmRleCA5Y2U4OGFlNWE5NmJiZGJmOWRhZjljNjcwMzkxMDdhZjkyODhl
OThjLi5lNDc4OWFlM2E3M2Y5MjM0YjI3YmM3ZTA2N2I0NjI0OTg1MDA4M2MyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xs
ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dLRnVsbFNjcmVlbldpbmRv
d0NvbnRyb2xsZXIuaApAQCAtMzgsMTMgKzM4LDE0IEBAIGNsYXNzIEludFJlY3Q7CiB9CiAKIEBj
bGFzcyBXS1ZpZXc7CitAY2xhc3MgV2ViQ29yZUZ1bGxTY3JlZW5QbGFjZWhvbGRlclZpZXc7CiBA
Y2xhc3MgV2ViV2luZG93U2NhbGVBbmltYXRpb247CiBAY2xhc3MgV2ViV2luZG93RmFkZUFuaW1h
dGlvbjsKIAotQGludGVyZmFjZSBXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyIDogTlNXaW5k
b3dDb250cm9sbGVyIHsKK0BpbnRlcmZhY2UgV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlciA6
IE5TV2luZG93Q29udHJvbGxlcjxOU1dpbmRvd0RlbGVnYXRlPiB7CiBAcHJpdmF0ZQogICAgIFdL
VmlldyAqX3dlYlZpZXc7Ci0gICAgUmV0YWluUHRyPE5TSW1hZ2VWaWV3PiBfd2ViVmlld1BsYWNl
aG9sZGVyOworICAgIFJldGFpblB0cjxXZWJDb3JlRnVsbFNjcmVlblBsYWNlaG9sZGVyVmlldz4g
X3dlYlZpZXdQbGFjZWhvbGRlcjsKICAgICBSZXRhaW5QdHI8V2ViV2luZG93U2NhbGVBbmltYXRp
b24+IF9zY2FsZUFuaW1hdGlvbjsKICAgICBSZXRhaW5QdHI8V2ViV2luZG93RmFkZUFuaW1hdGlv
bj4gX2ZhZGVBbmltYXRpb247CiAgICAgUmV0YWluUHRyPE5TV2luZG93PiBfYmFja2dyb3VuZFdp
bmRvdzsKQEAgLTU2LDYgKzU3LDcgQEAgY2xhc3MgSW50UmVjdDsKICAgICBCT09MIF9pc0V4aXRp
bmdGdWxsU2NyZWVuOwogICAgIEJPT0wgX2lzRnVsbFNjcmVlbjsKICAgICBCT09MIF9pc1BsYXlp
bmc7CisgICAgTlNUaW1lSW50ZXJ2YWwgX2FuaW1hdGlvbkR1cmF0aW9uOwogfQogCiAtIChXS1Zp
ZXcqKXdlYlZpZXc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dL
RnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
bWFjL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIubW0KaW5kZXggMjM4YTY3NTE2NWVkOGMy
OTgzOTQ4OTNhNTFiYmFiYjYxZGEyNzQyNS4uMzI1MzIxMjE0MTQ2ZTAxN2U4YzQyZjRjYmIwZGMz
ZTg1YmQzMmU0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XS0Z1
bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9tYWMvV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5tbQpAQCAtMzksNiArMzksOCBAQAog
I2ltcG9ydCA8V2ViQ29yZS9EaXNwbGF5U2xlZXBEaXNhYmxlci5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9GbG9hdFJlY3QuaD4KICNpbXBvcnQgPFdlYkNvcmUvSW50UmVjdC5oPgorI2ltcG9ydCA8V2Vi
Q29yZS9Mb2NhbGl6ZWRTdHJpbmdzLmg+CisjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVGdWxsU2Ny
ZWVuUGxhY2Vob2xkZXJWaWV3Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVGdWxsU2NyZWVu
V2luZG93Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYldpbmRvd0FuaW1hdGlvbi5oPgogI2ltcG9y
dCA8V2ViS2l0L1dlYk5TV2luZG93RXh0cmFzLmg+CkBAIC01Myw4ICs1NSwxMiBAQCBzdGF0aWMg
UmV0YWluUHRyPE5TV2luZG93PiBjcmVhdGVCYWNrZ3JvdW5kRnVsbHNjcmVlbldpbmRvdyhOU1Jl
Y3QgZnJhbWUpOwogc3RhdGljIGNvbnN0IENGVGltZUludGVydmFsIGRlZmF1bHRBbmltYXRpb25E
dXJhdGlvbiA9IDAuNTsKIHN0YXRpYyBjb25zdCBOU1RpbWVJbnRlcnZhbCBEZWZhdWx0V2F0Y2hk
b2dUaW1lckludGVydmFsID0gMTsKIAorQGludGVyZmFjZSBOU1dpbmRvdyAoV2ViTlNXaW5kb3dE
ZXRhaWxzKQorLSAodm9pZClleGl0RnVsbFNjcmVlbk1vZGU6KGlkKXNlbmRlcjsKKy0gKHZvaWQp
ZW50ZXJGdWxsU2NyZWVuTW9kZTooaWQpc2VuZGVyOworQGVuZAorCiBAaW50ZXJmYWNlIFdLRnVs
bFNjcmVlbldpbmRvd0NvbnRyb2xsZXIoUHJpdmF0ZSk8TlNBbmltYXRpb25EZWxlZ2F0ZT4KLS0g
KHZvaWQpX3VwZGF0ZU1lbnVBbmREb2NrRm9yRnVsbFNjcmVlbjsKIC0gKHZvaWQpX3JlcGxhY2VW
aWV3OihOU1ZpZXcqKXZpZXcgd2l0aDooTlNWaWV3KilvdGhlclZpZXc7CiAtIChXZWJQYWdlUHJv
eHkqKV9wYWdlOwogLSAoV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eSopX21hbmFnZXI7CkBAIC04
NywxMSArOTMsMTIgQEAgc3RhdGljIE5TUmVjdCBjb252ZXJ0UmVjdFRvU2NyZWVuKE5TV2luZG93
ICp3aW5kb3csIE5TUmVjdCByZWN0KQogI3ByYWdtYSBtYXJrIEluaXRpYWxpemF0aW9uCiAtIChp
ZClpbml0CiB7Ci0gICAgTlNXaW5kb3cgKndpbmRvdyA9IFtbV2ViQ29yZUZ1bGxTY3JlZW5XaW5k
b3cgYWxsb2NdIGluaXRXaXRoQ29udGVudFJlY3Q6TlNaZXJvUmVjdCBzdHlsZU1hc2s6TlNCb3Jk
ZXJsZXNzV2luZG93TWFzayBiYWNraW5nOk5TQmFja2luZ1N0b3JlQnVmZmVyZWQgZGVmZXI6Tk9d
OwotICAgIHNlbGYgPSBbc3VwZXIgaW5pdFdpdGhXaW5kb3c6d2luZG93XTsKLSAgICBbd2luZG93
IHJlbGVhc2VdOworICAgIFJldGFpblB0cjxOU1dpbmRvdz4gd2luZG93ID0gYWRvcHROUyhbW1dl
YkNvcmVGdWxsU2NyZWVuV2luZG93IGFsbG9jXSBpbml0V2l0aENvbnRlbnRSZWN0Ok5TWmVyb1Jl
Y3Qgc3R5bGVNYXNrOk5TQm9yZGVybGVzc1dpbmRvd01hc2sgYmFja2luZzpOU0JhY2tpbmdTdG9y
ZUJ1ZmZlcmVkIGRlZmVyOk5PXSk7CisgICAgc2VsZiA9IFtzdXBlciBpbml0V2l0aFdpbmRvdzp3
aW5kb3cuZ2V0KCldOwogICAgIGlmICghc2VsZikKICAgICAgICAgcmV0dXJuIG5pbDsKKyAgICBb
d2luZG93LmdldCgpIHNldERlbGVnYXRlOnNlbGZdOworICAgIFt3aW5kb3cuZ2V0KCkgc2V0Q29s
bGVjdGlvbkJlaGF2aW9yOihbd2luZG93IGNvbGxlY3Rpb25CZWhhdmlvcl0gfCBOU1dpbmRvd0Nv
bGxlY3Rpb25CZWhhdmlvckZ1bGxTY3JlZW5QcmltYXJ5KV07CiAgICAgW3NlbGYgd2luZG93RGlk
TG9hZF07CiAgICAgCiAgICAgcmV0dXJuIHNlbGY7CkBAIC0xMDAsNiArMTA3LDcgQEAgc3RhdGlj
IE5TUmVjdCBjb252ZXJ0UmVjdFRvU2NyZWVuKE5TV2luZG93ICp3aW5kb3csIE5TUmVjdCByZWN0
KQogLSAodm9pZClkZWFsbG9jCiB7CiAgICAgW3NlbGYgc2V0V2ViVmlldzpuaWxdOworICAgIFtb
c2VsZiB3aW5kb3ddIHNldERlbGVnYXRlOm5pbF07CiAgICAgCiAgICAgW05TT2JqZWN0IGNhbmNl
bFByZXZpb3VzUGVyZm9ybVJlcXVlc3RzV2l0aFRhcmdldDpzZWxmXTsKICAgICAKQEAgLTE3NCw3
ICsxODIsNiBAQCBzdGF0aWMgTlNSZWN0IGNvbnZlcnRSZWN0VG9TY3JlZW4oTlNXaW5kb3cgKndp
bmRvdywgTlNSZWN0IHJlY3QpCiAgICAgLy8gdGhlIERvY2sncyBzaXplIG9yIGxvY2F0aW9uLCBv
ciB0aGV5IG1heSBoYXZlIGNoYW5nZWQgdGhlIGZ1bGxTY3JlZW4gc2NyZWVuJ3MgZGltZW5zaW9u
cy4gCiAgICAgLy8gVXBkYXRlIG91ciBwcmVzZW50YXRpb24gcGFyYW1ldGVycywgYW5kIGVuc3Vy
ZSB0aGF0IHRoZSBmdWxsIHNjcmVlbiB3aW5kb3cgb2NjdXBpZXMgdGhlIAogICAgIC8vIGVudGly
ZSBzY3JlZW46Ci0gICAgW3NlbGYgX3VwZGF0ZU1lbnVBbmREb2NrRm9yRnVsbFNjcmVlbl07CiAg
ICAgTlNXaW5kb3cqIHdpbmRvdyA9IFtzZWxmIHdpbmRvd107CiAgICAgTlNSZWN0IHNjcmVlbkZy
YW1lID0gW1t3aW5kb3cgc2NyZWVuXSBmcmFtZV07CiAgICAgW3dpbmRvdyBzZXRGcmFtZTpzY3Jl
ZW5GcmFtZSBkaXNwbGF5OllFU107CkBAIC0yMTIsOCArMjE5LDYgQEAgc3RhdGljIFJldGFpblB0
cjxDR0ltYWdlUmVmPiBjcmVhdGVJbWFnZVdpdGhDb3BpZWREYXRhKENHSW1hZ2VSZWYgc291cmNl
SW1hZ2UpCiAgICAgICAgIHJldHVybjsKICAgICBfaXNGdWxsU2NyZWVuID0gWUVTOwogCi0gICAg
W3NlbGYgX3VwZGF0ZU1lbnVBbmREb2NrRm9yRnVsbFNjcmVlbl07ICAgCi0KICAgICBpZiAoIXNj
cmVlbikKICAgICAgICAgc2NyZWVuID0gW05TU2NyZWVuIG1haW5TY3JlZW5dOwogICAgIE5TUmVj
dCBzY3JlZW5GcmFtZSA9IFtzY3JlZW4gZnJhbWVdOwpAQCAtMjQ2LDExICsyNTEsMTEgQEAgc3Rh
dGljIFJldGFpblB0cjxDR0ltYWdlUmVmPiBjcmVhdGVJbWFnZVdpdGhDb3BpZWREYXRhKENHSW1h
Z2VSZWYgc291cmNlSW1hZ2UpCiAKICAgICAvLyBTd2FwIHRoZSB3ZWJWaWV3IHBsYWNlaG9sZGVy
IGludG8gcGxhY2UuCiAgICAgaWYgKCFfd2ViVmlld1BsYWNlaG9sZGVyKSB7Ci0gICAgICAgIF93
ZWJWaWV3UGxhY2Vob2xkZXIuYWRvcHROUyhbW05TSW1hZ2VWaWV3IGFsbG9jXSBpbml0XSk7Ci0g
ICAgICAgIFtfd2ViVmlld1BsYWNlaG9sZGVyLmdldCgpIHNldExheWVyOltDQUxheWVyIGxheWVy
XV07Ci0gICAgICAgIFtfd2ViVmlld1BsYWNlaG9sZGVyLmdldCgpIHNldFdhbnRzTGF5ZXI6WUVT
XTsKKyAgICAgICAgX3dlYlZpZXdQbGFjZWhvbGRlci5hZG9wdE5TKFtbV2ViQ29yZUZ1bGxTY3Jl
ZW5QbGFjZWhvbGRlclZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6W193ZWJWaWV3IGZyYW1lXV0p
OworICAgICAgICBbX3dlYlZpZXdQbGFjZWhvbGRlci5nZXQoKSBzZXRUYXJnZXQ6c2VsZl07Cisg
ICAgICAgIFtfd2ViVmlld1BsYWNlaG9sZGVyLmdldCgpIHNldEFjdGlvbjpAc2VsZWN0b3IoY2Fu
Y2VsT3BlcmF0aW9uOildOwogICAgIH0KLSAgICBbW193ZWJWaWV3UGxhY2Vob2xkZXIuZ2V0KCkg
bGF5ZXJdIHNldENvbnRlbnRzOihpZCl3ZWJWaWV3Q29udGVudHMuZ2V0KCldOworICAgIFtfd2Vi
Vmlld1BsYWNlaG9sZGVyLmdldCgpIHNldENvbnRlbnRzOihpZCl3ZWJWaWV3Q29udGVudHMuZ2V0
KCldOwogICAgIFtzZWxmIF9yZXBsYWNlVmlldzpfd2ViVmlldyB3aXRoOl93ZWJWaWV3UGxhY2Vo
b2xkZXIuZ2V0KCldOwogICAgIAogICAgIC8vIFRoZW4gaW5zZXJ0IHRoZSBXZWJWaWV3IGludG8g
dGhlIGZ1bGwgc2NyZWVuIHdpbmRvdwpAQCAtMjczLDkgKzI3OCw3IEBAIHN0YXRpYyBSZXRhaW5Q
dHI8Q0dJbWFnZVJlZj4gY3JlYXRlSW1hZ2VXaXRoQ29waWVkRGF0YShDR0ltYWdlUmVmIHNvdXJj
ZUltYWdlKQogICAgIF9pbml0aWFsRnJhbWUgPSBpbml0aWFsRnJhbWU7CiAgICAgX2ZpbmFsRnJh
bWUgPSBmaW5hbEZyYW1lOwogCi0gICAgW3NlbGYgX3VwZGF0ZU1lbnVBbmREb2NrRm9yRnVsbFNj
cmVlbl07ICAgCi0KLSAgICBbc2VsZiBfc3RhcnRFbnRlckZ1bGxTY3JlZW5BbmltYXRpb25XaXRo
RHVyYXRpb246ZGVmYXVsdEFuaW1hdGlvbkR1cmF0aW9uXTsKKyAgICBbW3NlbGYgd2luZG93XSBl
bnRlckZ1bGxTY3JlZW5Nb2RlOnNlbGZdOwogfQogCiAtICh2b2lkKWZpbmlzaGVkRW50ZXJGdWxs
U2NyZWVuQW5pbWF0aW9uOihib29sKWNvbXBsZXRlZApAQCAtMjk0LDI0ICsyOTcsMTQgQEAgc3Rh
dGljIFJldGFpblB0cjxDR0ltYWdlUmVmPiBjcmVhdGVJbWFnZVdpdGhDb3BpZWREYXRhKENHSW1h
Z2VSZWYgc291cmNlSW1hZ2UpCiAgICAgICAgIHdpbmRvd0JvdW5kcy5vcmlnaW4gPSBOU1plcm9Q
b2ludDsKICAgICAgICAgV0tXaW5kb3dTZXRDbGlwUmVjdChbc2VsZiB3aW5kb3ddLCB3aW5kb3dC
b3VuZHMpOwogCi0gICAgICAgIE5TV2luZG93ICp3ZWJXaW5kb3cgPSBbX3dlYlZpZXdQbGFjZWhv
bGRlci5nZXQoKSB3aW5kb3ddOwotI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQg
Pj0gMTA3MAotICAgICAgICAvLyBJbiBMaW9uLCBOU1dpbmRvdyB3aWxsIGFuaW1hdGUgaW50byBh
bmQgb3V0IG9mIG9yZGVyT3V0IG9wZXJhdGlvbnMuIFN1cHByZXNzIHRoYXQKLSAgICAgICAgLy8g
YmVoYXZpb3IgaGVyZSwgbWFraW5nIHN1cmUgdG8gcmVzZXQgdGhlIGFuaW1hdGlvbiBiZWhhdmlv
ciBhZnRlcndhcmQuCi0gICAgICAgIE5TV2luZG93QW5pbWF0aW9uQmVoYXZpb3IgYW5pbWF0aW9u
QmVoYXZpb3IgPSBbd2ViV2luZG93IGFuaW1hdGlvbkJlaGF2aW9yXTsKLSAgICAgICAgW3dlYldp
bmRvdyBzZXRBbmltYXRpb25CZWhhdmlvcjpOU1dpbmRvd0FuaW1hdGlvbkJlaGF2aW9yTm9uZV07
Ci0jZW5kaWYKLSAgICAgICAgW3dlYldpbmRvdyBvcmRlck91dDpzZWxmXTsKLSNpZiBfX01BQ19P
U19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNzAKLSAgICAgICAgW3dlYldpbmRvdyBzZXRB
bmltYXRpb25CZWhhdmlvcjphbmltYXRpb25CZWhhdmlvcl07Ci0jZW5kaWYKLQogICAgICAgICBb
X2ZhZGVBbmltYXRpb24uZ2V0KCkgc3RvcEFuaW1hdGlvbl07CiAgICAgICAgIFtfZmFkZUFuaW1h
dGlvbi5nZXQoKSBzZXRXaW5kb3c6bmlsXTsKICAgICAgICAgX2ZhZGVBbmltYXRpb24gPSBudWxs
cHRyOwogICAgICAgICAKICAgICAgICAgW19iYWNrZ3JvdW5kV2luZG93LmdldCgpIG9yZGVyT3V0
OnNlbGZdOwogICAgICAgICBbX2JhY2tncm91bmRXaW5kb3cuZ2V0KCkgc2V0RnJhbWU6TlNaZXJv
UmVjdCBkaXNwbGF5OllFU107CisKKyAgICAgICAgW193ZWJWaWV3UGxhY2Vob2xkZXIuZ2V0KCkg
c2V0RXhpdFdhcm5pbmdWaXNpYmxlOllFU107CiAgICAgICAgIE5TRW5hYmxlU2NyZWVuVXBkYXRl
cygpOwogICAgIH0gZWxzZQogICAgICAgICBbX3NjYWxlQW5pbWF0aW9uLmdldCgpIHN0b3BBbmlt
YXRpb25dOwpAQCAtMzI4LDcgKzMyMSw5IEBAIHN0YXRpYyBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4g
Y3JlYXRlSW1hZ2VXaXRoQ29waWVkRGF0YShDR0ltYWdlUmVmIHNvdXJjZUltYWdlKQogICAgICAg
ICByZXR1cm47CiAgICAgX2lzRnVsbFNjcmVlbiA9IE5POwogCi0gICAgLy8gU2NyZWVuIHVwZGF0
ZXMgdG8gYmUgcmUtZW5hYmxlZCBpbiBfc3RhcnRFeGl0RnVsbFNjcmVlbkFuaW1hdGlvbldpdGhE
dXJhdGlvbjoKKyAgICBbX3dlYlZpZXdQbGFjZWhvbGRlci5nZXQoKSBzZXRFeGl0V2FybmluZ1Zp
c2libGU6Tk9dOworCisgICAgLy8gU2NyZWVuIHVwZGF0ZXMgdG8gYmUgcmUtZW5hYmxlZCBpbiBf
c3RhcnRFeGl0RnVsbFNjcmVlbkFuaW1hdGlvbldpdGhEdXJhdGlvbjogb3IgYmVnYW5FeGl0RnVs
bFNjcmVlbldpdGhJbml0aWFsRnJhbWU6ZmluYWxGcmFtZToKICAgICBOU0Rpc2FibGVTY3JlZW5V
cGRhdGVzKCk7CiAgICAgW1tzZWxmIHdpbmRvd10gc2V0QXV0b2Rpc3BsYXk6Tk9dOwogCkBAIC0z
NDksMzAgKzM0NCwxOCBAQCBzdGF0aWMgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGNyZWF0ZUltYWdl
V2l0aENvcGllZERhdGEoQ0dJbWFnZVJlZiBzb3VyY2VJbWFnZSkKICAgICBpZiAoX2lzRW50ZXJp
bmdGdWxsU2NyZWVuKQogICAgICAgICBbc2VsZiBmaW5pc2hlZEVudGVyRnVsbFNjcmVlbkFuaW1h
dGlvbjpOT107CiAKLSAgICBbc2VsZiBfdXBkYXRlTWVudUFuZERvY2tGb3JGdWxsU2NyZWVuXTsK
LSAgICAKLSAgICBOU1dpbmRvdyogd2ViV2luZG93ID0gW193ZWJWaWV3UGxhY2Vob2xkZXIuZ2V0
KCkgd2luZG93XTsKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNzAK
LSAgICAvLyBJbiBMaW9uLCBOU1dpbmRvdyB3aWxsIGFuaW1hdGUgaW50byBhbmQgb3V0IG9mIG9y
ZGVyT3V0IG9wZXJhdGlvbnMuIFN1cHByZXNzIHRoYXQKLSAgICAvLyBiZWhhdmlvciBoZXJlLCBt
YWtpbmcgc3VyZSB0byByZXNldCB0aGUgYW5pbWF0aW9uIGJlaGF2aW9yIGFmdGVyd2FyZC4KLSAg
ICBOU1dpbmRvd0FuaW1hdGlvbkJlaGF2aW9yIGFuaW1hdGlvbkJlaGF2aW9yID0gW3dlYldpbmRv
dyBhbmltYXRpb25CZWhhdmlvcl07Ci0gICAgW3dlYldpbmRvdyBzZXRBbmltYXRpb25CZWhhdmlv
cjpOU1dpbmRvd0FuaW1hdGlvbkJlaGF2aW9yTm9uZV07Ci0jZW5kaWYKLSAgICAvLyBJZiB0aGUg
dXNlciBoYXMgbW92ZWQgdGhlIGZ1bGxTY3JlZW4gd2luZG93IGludG8gYSBuZXcgc3BhY2UsIHRl
bXBvcmFyaWx5IGNoYW5nZQotICAgIC8vIHRoZSBjb2xsZWN0aW9uQmVoYXZpb3Igb2YgdGhlIHdl
YlZpZXcncyB3aW5kb3cgc28gdGhhdCBpdCBpcyBwdWxsZWQgaW50byB0aGUgYWN0aXZlIHNwYWNl
OgotICAgIGlmICghKFt3ZWJXaW5kb3cgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihpc09u
QWN0aXZlU3BhY2UpXSA/IFt3ZWJXaW5kb3cgaXNPbkFjdGl2ZVNwYWNlXSA6IFlFUykpIHsKLSAg
ICAgICAgTlNXaW5kb3dDb2xsZWN0aW9uQmVoYXZpb3IgYmVoYXZpb3IgPSBbd2ViV2luZG93IGNv
bGxlY3Rpb25CZWhhdmlvcl07Ci0gICAgICAgIFt3ZWJXaW5kb3cgc2V0Q29sbGVjdGlvbkJlaGF2
aW9yOk5TV2luZG93Q29sbGVjdGlvbkJlaGF2aW9yQ2FuSm9pbkFsbFNwYWNlc107Ci0gICAgICAg
IFt3ZWJXaW5kb3cgb3JkZXJXaW5kb3c6TlNXaW5kb3dCZWxvdyByZWxhdGl2ZVRvOltbc2VsZiB3
aW5kb3ddIHdpbmRvd051bWJlcl1dOwotICAgICAgICBbd2ViV2luZG93IHNldENvbGxlY3Rpb25C
ZWhhdmlvcjpiZWhhdmlvcl07Ci0gICAgfSBlbHNlCi0gICAgICAgIFt3ZWJXaW5kb3cgb3JkZXJX
aW5kb3c6TlNXaW5kb3dCZWxvdyByZWxhdGl2ZVRvOltbc2VsZiB3aW5kb3ddIHdpbmRvd051bWJl
cl1dOwotICAgIAotI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA3MAot
ICAgIFt3ZWJXaW5kb3cgc2V0QW5pbWF0aW9uQmVoYXZpb3I6YW5pbWF0aW9uQmVoYXZpb3JdOwot
I2VuZGlmCisgICAgaWYgKCFbW3NlbGYgd2luZG93XSBpc09uQWN0aXZlU3BhY2VdKSB7CisgICAg
ICAgIC8vIElmIHRoZSBmdWxsIHNjcmVlbiB3aW5kb3cgaXMgbm90IGluIHRoZSBhY3RpdmUgc3Bh
Y2UsIHRoZSBOU1dpbmRvdyBmdWxsIHNjcmVlbiBhbmltYXRpb24gZGVsZWdhdGUgbWV0aG9kcwor
ICAgICAgICAvLyB3aWxsIG5ldmVyIGJlIGNhbGxlZC4gU28gY2FsbCBmaW5pc2hlZEV4aXRGdWxs
U2NyZWVuQW5pbWF0aW9uIGV4cGxpY2l0bHkuCisgICAgICAgIFtzZWxmIGZpbmlzaGVkRXhpdEZ1
bGxTY3JlZW5BbmltYXRpb246WUVTXTsKIAotICAgIFtzZWxmIF9zdGFydEV4aXRGdWxsU2NyZWVu
QW5pbWF0aW9uV2l0aER1cmF0aW9uOmRlZmF1bHRBbmltYXRpb25EdXJhdGlvbl07CisgICAgICAg
IC8vIEJlY2F1c2Ugd2UgYXJlIGJyZWFraW5nIHRoZSBub3JtYWwgYW5pbWF0aW9uIHBhdHRlcm4s
IHJlLWVuYWJsZSBzY3JlZW4gdXBkYXRlcworICAgICAgICAvLyBhcyBleGl0RnVsbFNjcmVlbiBo
YXMgZGlzYWJsZWQgdGhlbSwgYnV0IF9zdGFydEV4aXRGdWxsU2NyZWVuQW5pbWF0aW9uV2l0aER1
cmF0aW9uOgorICAgICAgICAvLyB3aWxsIG5ldmVyIGJlIGNhbGxlZC4KKyAgICAgICAgTlNFbmFi
bGVTY3JlZW5VcGRhdGVzKCk7CisgICAgfQorCisgICAgW1tzZWxmIHdpbmRvd10gZXhpdEZ1bGxT
Y3JlZW5Nb2RlOnNlbGZdOwogfQogCiBzdGF0aWMgdm9pZCBjb21wbGV0ZUZpbmlzaEV4aXRGdWxs
U2NyZWVuQW5pbWF0aW9uQWZ0ZXJSZXBhaW50KFdLRXJyb3JSZWYsIHZvaWQqKTsKQEAgLTM4Myw4
ICszNjYsNiBAQCBzdGF0aWMgdm9pZCBjb21wbGV0ZUZpbmlzaEV4aXRGdWxsU2NyZWVuQW5pbWF0
aW9uQWZ0ZXJSZXBhaW50KFdLRXJyb3JSZWYsIHZvaWQqKQogICAgICAgICByZXR1cm47CiAgICAg
X2lzRXhpdGluZ0Z1bGxTY3JlZW4gPSBOTzsKIAotICAgIFtzZWxmIF91cGRhdGVNZW51QW5kRG9j
a0ZvckZ1bGxTY3JlZW5dOwotCiAgICAgLy8gU2NyZWVuIHVwZGF0ZXMgdG8gYmUgcmUtZW5hYmxl
ZCBpbiBjb21wbGV0ZUZpbmlzaEV4aXRGdWxsU2NyZWVuQW5pbWF0aW9uQWZ0ZXJSZXBhaW50Lgog
ICAgIE5TRGlzYWJsZVNjcmVlblVwZGF0ZXMoKTsKICAgICBbW193ZWJWaWV3UGxhY2Vob2xkZXIu
Z2V0KCkgd2luZG93XSBzZXRBdXRvZGlzcGxheTpOT107CkBAIC00NTUsMzUgKzQzNiwzMSBAQCBz
dGF0aWMgdm9pZCBjb21wbGV0ZUZpbmlzaEV4aXRGdWxsU2NyZWVuQW5pbWF0aW9uQWZ0ZXJSZXBh
aW50KFdLRXJyb3JSZWYsIHZvaWQqCiB9CiAKICNwcmFnbWEgbWFyayAtCi0jcHJhZ21hIG1hcmsg
SW50ZXJuYWwgSW50ZXJmYWNlCisjcHJhZ21hIG1hcmsgQ3VzdG9tIE5TV2luZG93IEZ1bGwgU2Ny
ZWVuIEFuaW1hdGlvbgogCi0tICh2b2lkKV91cGRhdGVNZW51QW5kRG9ja0ZvckZ1bGxTY3JlZW4K
Ky0gKE5TQXJyYXkgKiljdXN0b21XaW5kb3dzVG9FbnRlckZ1bGxTY3JlZW5Gb3JXaW5kb3c6KE5T
V2luZG93ICopd2luZG93CiB7Ci0gICAgLy8gTlNBcHBsaWNhdGlvblByZXNlbnRhdGlvbk9wdGlv
bnMgaXMgYXZhaWxhYmxlIG9uID4gMTAuNiBvbmx5OgotI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPj0gMTA2MAotICAgIE5TQXBwbGljYXRpb25QcmVzZW50YXRpb25PcHRpb25z
IG9wdGlvbnMgPSBOU0FwcGxpY2F0aW9uUHJlc2VudGF0aW9uRGVmYXVsdDsKLSAgICBOU1NjcmVl
biogZnVsbFNjcmVlblNjcmVlbiA9IFtbc2VsZiB3aW5kb3ddIHNjcmVlbl07Ci0gICAgCi0gICAg
aWYgKF9pc0Z1bGxTY3JlZW4pIHsKLSAgICAgICAgLy8gQXV0by1oaWRlIHRoZSBtZW51IGJhciBp
ZiB0aGUgZnVsbFNjcmVlblNjcmVlbiBjb250YWlucyB0aGUgbWVudSBiYXI6Ci0gICAgICAgIC8v
IE5PVEU6IGlmIHRoZSBmdWxsU2NyZWVuU2NyZWVuIGNvbnRhaW5zIHRoZSBtZW51IGJhciBidXQg
bm90IHRoZSBkb2NrLCB3ZSBtdXN0IHN0aWxsIAotICAgICAgICAvLyBhdXRvLWhpZGUgdGhlIGRv
Y2ssIG9yIGFuIGV4Y2VwdGlvbiB3aWxsIGJlIHRocm93bi4KLSAgICAgICAgaWYgKFtbTlNTY3Jl
ZW4gc2NyZWVuc10gb2JqZWN0QXRJbmRleDowXSA9PSBmdWxsU2NyZWVuU2NyZWVuKQotICAgICAg
ICAgICAgb3B0aW9ucyB8PSAoTlNBcHBsaWNhdGlvblByZXNlbnRhdGlvbkF1dG9IaWRlTWVudUJh
ciB8IE5TQXBwbGljYXRpb25QcmVzZW50YXRpb25BdXRvSGlkZURvY2spOwotICAgICAgICAvLyBD
aGVjayBpZiB0aGUgY3VycmVudCBzY3JlZW4gY29udGFpbnMgdGhlIGRvY2sgYnkgY29tcGFyaW5n
IHRoZSBzY3JlZW4ncyBmcmFtZSB0byBpdHMKLSAgICAgICAgLy8gdmlzaWJsZUZyYW1lOyBpZiBh
IGRvY2sgaXMgcHJlc2VudCwgdGhlIHZpc2libGVGcmFtZSB3aWxsIGRpZmZlci4gSWYgdGhlIGN1
cnJlbnQgc2NyZWVuCi0gICAgICAgIC8vIGNvbnRhaW5zIHRoZSBkb2NrLCBoaWRlIGl0LgotICAg
ICAgICBlbHNlIGlmICghTlNFcXVhbFJlY3RzKFtmdWxsU2NyZWVuU2NyZWVuIGZyYW1lXSwgW2Z1
bGxTY3JlZW5TY3JlZW4gdmlzaWJsZUZyYW1lXSkpCi0gICAgICAgICAgICBvcHRpb25zIHw9IE5T
QXBwbGljYXRpb25QcmVzZW50YXRpb25BdXRvSGlkZURvY2s7Ci0gICAgfQotICAgIAotICAgIGlm
IChbTlNBcHAgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihzZXRQcmVzZW50YXRpb25PcHRp
b25zOildKQotICAgICAgICBbTlNBcHAgc2V0UHJlc2VudGF0aW9uT3B0aW9uczpvcHRpb25zXTsK
LSAgICBlbHNlCi0jZW5kaWYKLSAgICAgICAgU2V0U3lzdGVtVUlNb2RlKF9pc0Z1bGxTY3JlZW4g
PyBrVUlNb2RlQWxsSGlkZGVuIDoga1VJTW9kZU5vcm1hbCwgMCk7CisgICAgcmV0dXJuIFtOU0Fy
cmF5IGFycmF5V2l0aE9iamVjdHM6W3NlbGYgd2luZG93XSwgX2JhY2tncm91bmRXaW5kb3cuZ2V0
KCksIG5pbF07Cit9CisKKy0gKE5TQXJyYXkgKiljdXN0b21XaW5kb3dzVG9FeGl0RnVsbFNjcmVl
bkZvcldpbmRvdzooTlNXaW5kb3cgKil3aW5kb3cKK3sKKyAgICByZXR1cm4gW05TQXJyYXkgYXJy
YXlXaXRoT2JqZWN0czpbc2VsZiB3aW5kb3ddLCBfYmFja2dyb3VuZFdpbmRvdy5nZXQoKSwgbmls
XTsKK30KKworLSAodm9pZCl3aW5kb3c6KE5TV2luZG93ICopd2luZG93IHN0YXJ0Q3VzdG9tQW5p
bWF0aW9uVG9FbnRlckZ1bGxTY3JlZW5XaXRoRHVyYXRpb246KE5TVGltZUludGVydmFsKWR1cmF0
aW9uCit7CisgICAgW3NlbGYgX3N0YXJ0RW50ZXJGdWxsU2NyZWVuQW5pbWF0aW9uV2l0aER1cmF0
aW9uOmR1cmF0aW9uXTsKK30KKworLSAodm9pZCl3aW5kb3c6KE5TV2luZG93ICopd2luZG93IHN0
YXJ0Q3VzdG9tQW5pbWF0aW9uVG9FeGl0RnVsbFNjcmVlbldpdGhEdXJhdGlvbjooTlNUaW1lSW50
ZXJ2YWwpZHVyYXRpb24KK3sKKyAgICBbc2VsZiBfc3RhcnRFeGl0RnVsbFNjcmVlbkFuaW1hdGlv
bldpdGhEdXJhdGlvbjpkdXJhdGlvbl07CiB9CiAKKyNwcmFnbWEgbWFyayAtCisjcHJhZ21hIG1h
cmsgSW50ZXJuYWwgSW50ZXJmYWNlCisKIC0gKFdlYlBhZ2VQcm94eSopX3BhZ2UKIHsKICAgICBy
ZXR1cm4gdG9JbXBsKFtfd2ViVmlldyBwYWdlUmVmXSk7Cg==
</data>
<flag name="review"
          id="189909"
          type_id="1"
          status="+"
          setter="mitz"
    />
    <flag name="commit-queue"
          id="190009"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
      

    </bug>

</bugzilla>