<?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>129358</bug_id>
          
          <creation_ts>2014-02-25 19:48:12 -0800</creation_ts>
          <short_desc>[iOS] Support network state notification using CPNetworkObserver</short_desc>
          <delta_ts>2014-03-05 21:31:33 -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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andy Estes">aestes</reporter>
          <assigned_to name="Andy Estes">aestes</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>mitz</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>984605</commentid>
    <comment_count>0</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2014-02-25 19:48:12 -0800</bug_when>
    <thetext>[iOS] Support network state notification using CPNetworkObserver</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>984607</commentid>
    <comment_count>1</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2014-02-25 20:16:14 -0800</bug_when>
    <thetext>&lt;rdar://problem/15961366&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>984615</commentid>
    <comment_count>2</comment_count>
      <attachid>225216</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2014-02-25 20:35:49 -0800</bug_when>
    <thetext>Created attachment 225216
[iOS] Support network state notification using CPNetworkObserver</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>984616</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-02-25 20:37:03 -0800</bug_when>
    <thetext>Attachment 225216 did not pass style-queue:


ERROR: Source/WebCore/platform/network/NetworkStateNotifier.h:53:  &quot;wtf/RetainPtr.h&quot; already included at Source/WebCore/platform/network/NetworkStateNotifier.h:36  [build/include] [4]
ERROR: Source/WebCore/ChangeLog:32:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
Total errors found: 2 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>984618</commentid>
    <comment_count>4</comment_count>
      <attachid>225216</attachid>
    <who name="">mitz</who>
    <bug_when>2014-02-25 20:43:52 -0800</bug_when>
    <thetext>Comment on attachment 225216
[iOS] Support network state notification using CPNetworkObserver

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

&gt; Source/WebCore/platform/network/ios/NetworkStateNotifierIOS.mm:49
&gt; +@interface NetworkStateObserver : NSObject

I thought we had a script build phase that verified this, but WebCore mustn’t contain Objective-C classes whose names don’t start with DOM or Web.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>984622</commentid>
    <comment_count>5</comment_count>
      <attachid>225216</attachid>
    <who name="">mitz</who>
    <bug_when>2014-02-25 21:16:53 -0800</bug_when>
    <thetext>Comment on attachment 225216
[iOS] Support network state notification using CPNetworkObserver

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

&gt; Source/WebCore/platform/network/NetworkStateNotifier.h:105
&gt; +    enum ShouldSetInitialOnLineValueTag { SetInitialOnLineValue, DoNotSetInitialOnLineValue };

I think we normally use Tag for one-value enums (where the type is really just a tag). Also odd that “do” maps to 0 and “don’t” maps to 1. If someone treated this as a bool they’d have a bad time.

&gt; Source/WebCore/platform/network/ios/NetworkStateNotifierIOS.mm:62
&gt; +    self = [super init];
&gt; +    if (!self)
&gt; +        return nil;

We normally write if (!(self = [super init])

&gt; Source/WebCore/platform/network/ios/NetworkStateNotifierIOS.mm:63
&gt; +    ASSERT(notifier);

This can be ASSERT_ARG and come first.

&gt; Source/WebCore/platform/network/ios/NetworkStateNotifierIOS.mm:91
&gt; +

Unless there is some guarantee that instances of this class are never destructed (and the EFL port appears to think that there isn’t), you need a destructor here that clears the observer’s pointer back to this object.

&gt; Source/WebCore/platform/network/ios/NetworkStateNotifierIOS.mm:106
&gt; +bool NetworkStateNotifier::onLine() const
&gt; +{
&gt; +    lazyInitialize(SetInitialOnLineValue);
&gt; +    return m_isOnLine;
&gt; +}

Is there no way for this to be called after an earlier call to lazyInitialize(DoNotSetInitialOnLineValue), but before a state change? Seems like in that case, the return value could be wrong.

&gt; Source/WebKit/mac/WebView/WebViewPrivate.h:590
&gt; ++ (void)disableReachability;

This is a weird name. Since it’s private it should have a leading underscore. But I also think the name could be more verbose. Perhaps something along the lines of +_disableNetworkReachabilityObserving, or +_doNotStartObservingNetworkReachability (which also communicates that if it’s already started, then it’s too late).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>984632</commentid>
    <comment_count>6</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2014-02-25 22:29:46 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 225216 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=225216&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/network/ios/NetworkStateNotifierIOS.mm:91
&gt; &gt; +
&gt; 
&gt; Unless there is some guarantee that instances of this class are never destructed (and the EFL port appears to think that there isn’t), you need a destructor here that clears the observer’s pointer back to this object.

CPNetworkObserver doesn&apos;t retain network reachable observers, so I&apos;m trusting the compiler-generated destructor to dealloc the observer. That&apos;s probably too fragile though, so I&apos;ll add code to explicitly clear it.

&gt; 
&gt; &gt; Source/WebCore/platform/network/ios/NetworkStateNotifierIOS.mm:106
&gt; &gt; +bool NetworkStateNotifier::onLine() const
&gt; &gt; +{
&gt; &gt; +    lazyInitialize(SetInitialOnLineValue);
&gt; &gt; +    return m_isOnLine;
&gt; &gt; +}
&gt; 
&gt; Is there no way for this to be called after an earlier call to lazyInitialize(DoNotSetInitialOnLineValue), but before a state change? Seems like in that case, the return value could be wrong.

Nope, you&apos;re right. For what it&apos;s worth, an earlier version of the patch did the lazy initialization after receiving the first notification, which I should go back to doing.

&gt; 
&gt; &gt; Source/WebKit/mac/WebView/WebViewPrivate.h:590
&gt; &gt; ++ (void)disableReachability;
&gt; 
&gt; This is a weird name. Since it’s private it should have a leading underscore. But I also think the name could be more verbose. Perhaps something along the lines of +_disableNetworkReachabilityObserving, or +_doNotStartObservingNetworkReachability (which also communicates that if it’s already started, then it’s too late).

I like +_doNotStartObservingNetworkReachability. Thanks for the suggestions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>984944</commentid>
    <comment_count>7</comment_count>
      <attachid>225310</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2014-02-26 15:32:39 -0800</bug_when>
    <thetext>Created attachment 225310
[iOS] Support network state notification using CPNetworkObserver</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>984947</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-02-26 15:33:49 -0800</bug_when>
    <thetext>Attachment 225310 did not pass style-queue:


ERROR: Source/WebCore/platform/network/NetworkStateNotifier.h:53:  &quot;wtf/RetainPtr.h&quot; already included at Source/WebCore/platform/network/NetworkStateNotifier.h:36  [build/include] [4]
ERROR: Source/WebCore/ChangeLog:32:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
Total errors found: 2 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>984974</commentid>
    <comment_count>9</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2014-02-26 16:14:20 -0800</bug_when>
    <thetext>Committed r164757: &lt;http://trac.webkit.org/changeset/164757&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>987554</commentid>
    <comment_count>10</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2014-03-05 21:31:33 -0800</bug_when>
    <thetext>*** Bug 129198 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>225216</attachid>
            <date>2014-02-25 20:35:49 -0800</date>
            <delta_ts>2014-02-26 15:32:37 -0800</delta_ts>
            <desc>[iOS] Support network state notification using CPNetworkObserver</desc>
            <filename>bug-129358-20140225203548.patch</filename>
            <type>text/plain</type>
            <size>22771</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY0NTkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmY0MTRjOWRlYzA4YThh
YThmZjM1MWYxMDA3YmNlZmFmM2U3ZWZjYy4uOGU1MmQ1YmE2NGI3ZDIwODA3OTUzOGE5YmJhZjAz
YzlhM2YxNzZhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDE0LTAyLTI1ICBBbmR5
IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBTdXBwb3J0IG5ldHdv
cmsgc3RhdGUgbm90aWZpY2F0aW9uIHVzaW5nIENQTmV0d29ya09ic2VydmVyCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjkzNTgKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgaU9TIHN1cHBvcnQgZm9y
IG5hdmlnYXRvci5vbkxpbmUgYW5kIG9ubGluZS9vZmZsaW5lIGV2ZW50cy4gU2luY2UKKyAgICAg
ICAgaXQgY2FuIGJlIGV4cGVuc2l2ZSB0byBxdWVyeSBDUE5ldHdvcmtPYnNlcnZlciwgd2FpdCB0
byBkbyBzbyB1bnRpbAorICAgICAgICBzb21lb25lIGNhbGxzIE5ldHdvcmtTdGF0ZU9ic2VydmVy
OjpvbkxpbmUoKSBvcgorICAgICAgICBOZXR3b3JrU3RhdGVPYnNlcnZlcjo6YWRkTmV0d29ya1N0
YXRlQ2hhbmdlTGlzdGVuZXIoKS4gRm9yIGNsaWVudHMgdGhhdAorICAgICAgICBkb24ndCB3aXNo
IHRvIG9ic2VydmUgbmV0d29yayByZWFjaGFiaWxpdHkgYXQgYWxsLCBhZGQgYSBnbG9iYWwgb3B0
LW91dC4KKyAgICAgICAgVGhlc2UgY2xpZW50cyB3aWxsIG9ubHkgcGF5IHRoZSBjb3N0IG9mIENQ
TmV0d29ya09ic2VydmVyIGlmIHRoZXkgbG9hZAorICAgICAgICBhIHBhZ2UgdGhhdCBleHBsaWNp
dGx5IGFjY2Vzc2VzIG5hdmlnYXRvci5vbkxpbmUuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBD
b3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46IFN0
b3BwZWQgZXhwb3J0aW5nIE5ldHdvcmtTdGF0ZU5vdGlmaWVyOjpzZXRJc09uTGluZSgpCisgICAg
ICAgIGFuZCBzdGFydGVkIGV4cG9ydGluZyBTZXR0aW5nczo6Z1Nob3VsZE9wdE91dE9mTmV0d29y
a1N0YXRlT2JzZXJ2YXRpb24uCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOiBSZW5hbWVkIE5ldHdvcmtTdGF0ZU5vdGlmaWVySU9TLmNwcAorICAgICAgICB0byBO
ZXR3b3JrU3RhdGVOb3RpZmllcklPUy5tbS4KKyAgICAgICAgKiBwYWdlL1NldHRpbmdzLmNwcDog
RGVmYXVsdGVkIGdTaG91bGRPcHRPdXRPZk5ldHdvcmtTdGF0ZU9ic2VydmF0aW9uCisgICAgICAg
IHRvIGZhbHNlLgorICAgICAgICAqIHBhZ2UvU2V0dGluZ3MuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlNldHRpbmdzOjpzZXRTaG91bGRPcHRPdXRPZk5ldHdvcmtTdGF0ZU9ic2VydmF0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjpzaG91bGRPcHRPdXRPZk5ldHdvcmtTdGF0ZU9ic2Vy
dmF0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdGF0ZU5vdGlmaWVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdGF0ZU5vdGlmaWVyOjphZGROZXR3b3Jr
U3RhdGVDaGFuZ2VMaXN0ZW5lcik6IElnbm9yZWQKKyAgICAgICAgdGhlIGxpc3RlbmVyIGlmIFNl
dHRpbmdzOjpzaG91bGRPcHRPdXRPZk5ldHdvcmtTdGF0ZU9ic2VydmF0aW9uKCkuCisgICAgICAg
IENhbGxlZCBsYXp5SW5pdGlhbGl6ZSgpIGFuZCBhZGRlZCB0aGUgbGlzdGVuZXIgb3RoZXJ3aXNl
LgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0YXRlTm90aWZpZXI6Om5vdGlmeU5ldHdvcmtT
dGF0ZUNoYW5nZSk6IENvbnN0IHF1YWxpZmllZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L05ldHdvcmtTdGF0ZU5vdGlmaWVyLmgKKyAgICAgICAgKE5ldHdvcmtTdGF0ZU5vdGlmaWVyOjpv
bkxpbmUpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvaW9zL05ldHdvcmtTdGF0ZU5vdGlm
aWVySU9TLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2lvcy9OZXR3
b3JrU3RhdGVOb3RpZmllcklPUy5tbTogQWRkZWQuCisgICAgICAgICgtW05ldHdvcmtTdGF0ZU9i
c2VydmVyIGluaXRXaXRoTm90aWZpZXI6V2ViQ29yZTo6XSk6IFJlZ2lzdGVyZWQgc2VsZgorICAg
ICAgICBhcyBhIG5ldHdvcmsgcmVhY2hhYmxlIG9ic2VydmVyIG9uIENQTmV0d29ya09ic2VydmVy
LgorICAgICAgICAoLVtOZXR3b3JrU3RhdGVPYnNlcnZlciBkZWFsbG9jXSk6IFJlbW92ZWQgc2Vs
ZiBhcyBhIG5ldHdvcmsgcmVhY2hhYmxlCisgICAgICAgIG9ic2VydmVyLgorICAgICAgICAoLVtO
ZXR3b3JrU3RhdGVPYnNlcnZlciBuZXR3b3JrU3RhdGVDaGFuZ2VkOl0pOiBDYWxsZWQgc2V0T25M
aW5lKCkgb24KKyAgICAgICAgdGhlIHdlYiB0aHJlYWQsIHBhc3NpbmcgdGhlIHJlYWNoYWJpbGl0
eSB2YWx1ZSBmcm9tIHRoZSBub3RpZmljYXRpb24uCisgICAgICAgIChXZWJDb3JlOjpOZXR3b3Jr
U3RhdGVOb3RpZmllcjo6TmV0d29ya1N0YXRlTm90aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6
TmV0d29ya1N0YXRlTm90aWZpZXI6OmxhenlJbml0aWFsaXplKTogSW5pdGlhbGl6ZWQgbV9vYnNl
cnZlcgorICAgICAgICBhbmQgc2V0IGFuIGluaXRpYWwgdmFsdWUgZm9yIG1faXNPbkxpbmUgaWYg
c2hvdWxkU2V0SW5pdGlhbE9uTGluZVZhbHVlCisgICAgICAgIGVxdWFscyBTZXRJbml0aWFsT25M
aW5lVmFsdWUuCisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RhdGVOb3RpZmllcjo6b25MaW5l
KTogQ2FsbGVkIGxhenlJbml0aWFsaXplKCkgYmVmb3JlCisgICAgICAgIHJldHVybmluZyBtX2lz
T25MaW5lLgorICAgICAgICAoV2ViQ29yZTo6c2V0T25MaW5lKTogU2V0IG1faXNPbkxpbmUgYW5k
IGNhbGxlZAorICAgICAgICBub3RpZnlOZXR3b3JrU3RhdGVDaGFuZ2UoKSBpZiBuZWVkZWQuCisK
IDIwMTQtMDItMjQgIFRhbWFzIEdlcmdlbHkgIDx0Z2VyZ2VseS51LXN6ZWdlZEBwYXJ0bmVyLnNh
bXN1bmcuY29tPgogCiAgICAgICAgIENvZGUgY2xlYW51cDogcmVtb3ZlIGxlZnRvdmVyIEVOQUJM
RShXT1JLRVJTKSBtYWNyb3MgYW5kIHN1cHBvcnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggMzNkNjcx
N2UzODQzMGJiY2FkZmRkYTQyOTBmZTA0ZTQwNjU3YzBmNy4uODMzOTY4NWQyNjUxZTFkODdmMzIx
MjZmNTI4Mzc2M2U0ZjI3Nzc4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisy
MDE0LTAyLTI1ICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9T
XSBTdXBwb3J0IG5ldHdvcmsgc3RhdGUgbm90aWZpY2F0aW9uIHVzaW5nIENQTmV0d29ya09ic2Vy
dmVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjkz
NTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdl
YlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1bV2ViVmlldyBfc2V0TmV0d29ya1N0YXRlSXNP
bmxpbmU6XSk6IFJldGFpbmVkIGFuIGVtcHR5CisgICAgICAgIGltcGxlbWVudGF0aW9uIGZvciBi
aW5hcnkgY29tcGF0aWJpbGl0eSBmb3IgVUlLaXQuCisgICAgICAgICgrW1dlYlZpZXcgZGlzYWJs
ZVJlYWNoYWJpbGl0eV0pOiBDYWxsZWQKKyAgICAgICAgU2V0dGluZ3M6OnNldFNob3VsZE9wdE91
dE9mTmV0d29ya1N0YXRlT2JzZXJ2YXRpb24odHJ1ZSkuCisgICAgICAgICogV2ViVmlldy9XZWJW
aWV3UHJpdmF0ZS5oOiBSZW1vdmVkIGRlY2xhcmF0aW9uIG9mCisgICAgICAgIF9zZXROZXR3b3Jr
U3RhdGVJc09ubGluZTogYW5kIGRlY2xhcmVkIGRpc2FibGVSZWFjaGFiaWxpdHkuCisKIDIwMTQt
MDItMjQgIFRhbWFzIEdlcmdlbHkgIDx0Z2VyZ2VseS51LXN6ZWdlZEBwYXJ0bmVyLnNhbXN1bmcu
Y29tPgogCiAgICAgICAgIENvZGUgY2xlYW51cDogcmVtb3ZlIGxlZnRvdmVyIEVOQUJMRShXT1JL
RVJTKSBtYWNyb3MgYW5kIHN1cHBvcnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IGY5NmIzM2Nl
MWEyODJjODkxMjgzNWEwMmI5ZDAyYmY3NDM5MTljMjQuLjkyOWE1Y2YxMThlOGFiN2M0YmYxODg5
NWJkYTc1YWNkN2QzNzdhMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhw
LmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC0yNDAyLDcgKzI0MDIs
NiBAQCBfX1pON1dlYkNvcmUxOVJlc291cmNlUmVxdWVzdEJhc2UxOWRlZmF1bHRBbGxvd0Nvb2tp
ZXNFdgogX19aTjdXZWJDb3JlMTlSZXNvdXJjZVJlcXVlc3RCYXNlMjJzZXREZWZhdWx0QWxsb3dD
b29raWVzRWIKIF9fWk43V2ViQ29yZTE5YXBwbGljYXRpb25Jc1dlYkFwcEV2CiBfX1pON1dlYkNv
cmUxOWFzY2lpTGluZUJyZWFrVGFibGVFCi1fX1pON1dlYkNvcmUyME5ldHdvcmtTdGF0ZU5vdGlm
aWVyMTFzZXRJc09uTGluZUViCiBfX1pON1dlYkNvcmUyMFBsYXRmb3JtRXZlbnRGYWN0b3J5Mjdj
cmVhdGVQbGF0Zm9ybUtleWJvYXJkRXZlbnRFUDhXZWJFdmVudAogX19aTjdXZWJDb3JlMjBSZXNv
dXJjZUhhbmRsZUNsaWVudDIyd2lsbENhY2hlUmVzcG9uc2VBc3luY0VQTlNfMTRSZXNvdXJjZUhh
bmRsZUVQSzIwX0NGQ2FjaGVkVVJMUmVzcG9uc2UKIF9fWk43V2ViQ29yZTIwYXBwbGljYXRpb25J
c09rQ3VwaWRFdgpAQCAtMjUwOCw2ICsyNTA3LDcgQEAgX19aTjdXZWJDb3JlOFNldHRpbmdzMTNn
QVZLaXRFbmFibGVkRQogX19aTjdXZWJDb3JlOFNldHRpbmdzMjNzZXROZXR3b3JrSW50ZXJmYWNl
TmFtZUVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZThTZXR0aW5nczMxc2V0QXVkaW9TZXNz
aW9uQ2F0ZWdvcnlPdmVycmlkZUVqCiBfX1pON1dlYkNvcmU4U2V0dGluZ3MzNHNldE5ldHdvcmtE
YXRhVXNhZ2VUcmFja2luZ0VuYWJsZWRFYgorX19aTjdXZWJDb3JlOFNldHRpbmdzMzhnU2hvdWxk
T3B0T3V0T2ZOZXR3b3JrU3RhdGVPYnNlcnZhdGlvbkUKIF9fWk43V2ViQ29yZTlGb250Q2FjaGUx
N2dldENhY2hlZEZvbnREYXRhRVJLTlNfMTVGb250RGVzY3JpcHRpb25FUktOM1dURjEyQXRvbWlj
U3RyaW5nRWJOUzBfMTJTaG91bGRSZXRhaW5FCiBfX1pON1dlYkNvcmU5Rm9udENhY2hlMjVnZXRM
YXN0UmVzb3J0RmFsbGJhY2tGb250RVJLTlNfMTVGb250RGVzY3JpcHRpb25FTlMwXzEyU2hvdWxk
UmV0YWluRQogX19aTjdXZWJDb3JlOUZyYW1lVmlldzIwc2V0V2FzU2Nyb2xsZWRCeVVzZXJFYgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IDgyZmMxN2ZlZmI1NWI2MTRhMDhhYWM1ZmU4MmJiNWNjNTkzMjdkYzIuLjExMDU2OGI2YmRm
MzhkZjI3OWMxM2RjYzBjOTNkOGExNjAzZTM4YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE0ODIsNyArMTQ4Miw3IEBACiAJ
CTQ0MzExQ0Q4MTJFNEUyNEIwMDBBOEQxOSAvKiBET01Eb2N1bWVudFByaXZhdGUuaCBpbiBDb3B5
IEdlbmVyYXRlZCBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0
MzExQ0Q1MTJFNEUyMkQwMDBBOEQxOSAvKiBET01Eb2N1bWVudFByaXZhdGUuaCAqLzsgfTsKIAkJ
NDQzMTFDRDkxMkU0RTI1NzAwMEE4RDE5IC8qIERPTURvY3VtZW50RnJhZ21lbnRQcml2YXRlLmgg
aW4gQ29weSBHZW5lcmF0ZWQgSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0NDMxMUNENDEyRTRFMjJEMDAwQThEMTkgLyogRE9NRG9jdW1lbnRGcmFnbWVudFByaXZh
dGUuaCAqLzsgfTsKIAkJNDQzMTFGODIxMkU0RTY2QzAwMEE4RDE5IC8qIERPTURvY3VtZW50RnJh
Z21lbnRJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gODVFNzExNDUwQUM1RDUzNDAwNTMyNzBGIC8qIERPTURvY3VtZW50RnJhZ21lbnRJbnRl
cm5hbC5oICovOyB9OwotCQk0NDNGMDQyNzBFNzVDOEZCMDA3RTU0MDcgLyogTmV0d29ya1N0YXRl
Tm90aWZpZXJJT1MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDQzRjA0MjYwRTc1QzhGQjAwN0U1NDA3IC8qIE5ldHdvcmtTdGF0ZU5vdGlmaWVySU9T
LmNwcCAqLzsgfTsKKwkJNDQzRjA0MjcwRTc1QzhGQjAwN0U1NDA3IC8qIE5ldHdvcmtTdGF0ZU5v
dGlmaWVySU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDQzRjA0MjYwRTc1QzhGQjAwN0U1NDA3IC8qIE5ldHdvcmtTdGF0ZU5vdGlmaWVySU9TLm1t
ICovOyB9OwogCQk0NDRENEUyMzBGNzA4QjJFMDAzMTU4RTAgLyogV2ViQ29yZVVSTFJlc3BvbnNl
SU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDQ0
RDRFMjEwRjcwOEIyRTAwMzE1OEUwIC8qIFdlYkNvcmVVUkxSZXNwb25zZUlPUy5tbSAqLzsgfTsK
IAkJNDQ3NjUzMUIxMzMxNzA5OTAwMDZCNzg5IC8qIFNTTEtleUdlbmVyYXRvcklPUy5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NDc2NTMxQTEzMzE3
MDk5MDAwNkI3ODkgLyogU1NMS2V5R2VuZXJhdG9ySU9TLmNwcCAqLzsgfTsKIAkJNDQ3OTU4MDQx
NjQzQjQ5QTAwMUUwQTdGIC8qIFBhcnNlZENvbnRlbnRUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NDc5NTgwMzE2NDNCNDdCMDAxRTBBN0YgLyog
UGFyc2VkQ29udGVudFR5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwpAQCAtODM1MCw3ICs4MzUwLDcgQEAKIAkJNDQyQUY3QTgxMDJDRERFQTAwOEZE
NEQzIC8qIFF1aWNrTG9vay5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IFF1aWNrTG9vay5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDQzMTFDRDQx
MkU0RTIyRDAwMEE4RDE5IC8qIERPTURvY3VtZW50RnJhZ21lbnRQcml2YXRlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTURvY3VtZW50RnJhZ21lbnRQcml2YXRlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0MzExQ0Q1MTJFNEUyMkQwMDBBOEQxOSAvKiBE
T01Eb2N1bWVudFByaXZhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9N
RG9jdW1lbnRQcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQ0M0YwNDI2
MEU3NUM4RkIwMDdFNTQwNyAvKiBOZXR3b3JrU3RhdGVOb3RpZmllcklPUy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOZXR3b3JrU3RhdGVOb3RpZmllcklPUy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ0M0YwNDI2MEU3NUM4RkIwMDdFNTQwNyAv
KiBOZXR3b3JrU3RhdGVOb3RpZmllcklPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IE5ldHdvcmtTdGF0ZU5vdGlmaWVySU9TLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0NDRENEUyMTBGNzA4QjJFMDAzMTU4RTAgLyogV2ViQ29yZVVSTFJlc3Bv
bnNlSU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViQ29y
ZVVSTFJlc3BvbnNlSU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NDc2NTMx
QTEzMzE3MDk5MDAwNkI3ODkgLyogU1NMS2V5R2VuZXJhdG9ySU9TLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFNTTEtleUdlbmVyYXRvcklPUy5jcHA7IHBhdGggPSBp
b3MvU1NMS2V5R2VuZXJhdG9ySU9TLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDQ3OTU4MDIxNjQzQjQ3QjAwMUUwQTdGIC8qIFBhcnNlZENvbnRlbnRUeXBlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhcnNlZENvbnRlbnRUeXBlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1MzA2LDcgKzE1MzA2LDcgQEAKIAkJNDQ5N0Q1
OEMwRUJBODU0RjAwQTEwNTUyIC8qIGlvcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJ
Y2hpbGRyZW4gPSAoCi0JCQkJNDQzRjA0MjYwRTc1QzhGQjAwN0U1NDA3IC8qIE5ldHdvcmtTdGF0
ZU5vdGlmaWVySU9TLmNwcCAqLywKKwkJCQk0NDNGMDQyNjBFNzVDOEZCMDA3RTU0MDcgLyogTmV0
d29ya1N0YXRlTm90aWZpZXJJT1MubW0gKi8sCiAJCQkJNDQyQUY3QTcxMDJDRERFQTAwOEZENEQz
IC8qIFF1aWNrTG9vay5oICovLAogCQkJCTQ0MkFGN0E4MTAyQ0RERUEwMDhGRDREMyAvKiBRdWlj
a0xvb2subW0gKi8sCiAJCQkJN0U0MjhDRTQxM0UzNDA3RjAwM0I2NjFDIC8qIFJlc291cmNlSGFu
ZGxlSU9TLm1tICovLApAQCAtMjgxNjEsNyArMjgxNjEsNyBAQAogCQkJCTVEODc0RjEzMEQxNjFE
MzIwMDc5NkMzQiAvKiBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk1OUMyN0YwNTEzOEQyOEMxMDA3OUI3RTIgLyogTmV0d29ya1Jlc291cmNlc0RhdGEu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE3RkE2MUIwRERBM0JCRTAwMjhGOEE1IC8qIE5ldHdv
cmtTdGF0ZU5vdGlmaWVyLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTQ0M0YwNDI3MEU3NUM4RkIw
MDdFNTQwNyAvKiBOZXR3b3JrU3RhdGVOb3RpZmllcklPUy5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQk0NDNGMDQyNzBFNzVDOEZCMDA3RTU0MDcgLyogTmV0d29ya1N0YXRlTm90aWZpZXJJT1MubW0g
aW4gU291cmNlcyAqLywKIAkJCQkxQTdGQTY0OTBEREEzQ0JBMDAyOEY4QTUgLyogTmV0d29ya1N0
YXRlTm90aWZpZXJNYWMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTEzRUYzNDkxNjg1MEM0NzAw
MzRDODNGIC8qIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUJDRUY0M0UwMEU2NzQxMTAwMDFDMTI4NyAvKiBOaW5lUGllY2VJbWFnZS5jcHAgaW4gU291
cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAKaW5kZXggYWYyNTI2YmMyZThkMDUwZDVl
YTQ5YWRhZGJhN2E2NzcxNjM1MjQxYS4uMDU3ZTI1Yjk4NzdkMGI1YTA0ZTdjZDIwYjA2NDJmY2E4
M2RlOWEwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAKQEAgLTk5LDYgKzk5LDcgQEAgYm9v
bCBTZXR0aW5nczo6Z0xvd1Bvd2VyVmlkZW9BdWRpb0J1ZmZlclNpemVFbmFibGVkID0gZmFsc2U7
CiAjaWYgUExBVEZPUk0oSU9TKQogYm9vbCBTZXR0aW5nczo6Z05ldHdvcmtEYXRhVXNhZ2VUcmFj
a2luZ0VuYWJsZWQgPSBmYWxzZTsKIGJvb2wgU2V0dGluZ3M6OmdBVktpdEVuYWJsZWQgPSBmYWxz
ZTsKK2Jvb2wgU2V0dGluZ3M6OmdTaG91bGRPcHRPdXRPZk5ldHdvcmtTdGF0ZU9ic2VydmF0aW9u
ID0gZmFsc2U7CiAjZW5kaWYKIAogLy8gTk9URXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvU2V0dGluZ3MuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaAppbmRleCAx
NDNmOTkwYzUyNjMwZmY0Njk0ZjNhYjg4M2M4OTVmNTJiNDUwYjZjLi5mMzI3MzhiMzcyMjI5NGU2
N2ZmYjIzMDY1NWY3NGVlZWQyMjY1MzFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1NldHRpbmdzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCkBAIC0yNzEs
NiArMjcxLDkgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHZvaWQgc2V0QVZLaXRFbmFibGVkKGJv
b2wgZmxhZykgeyBnQVZLaXRFbmFibGVkID0gZmxhZzsgfQogICAgIHN0YXRpYyBib29sIGF2S2l0
RW5hYmxlZCgpIHsgcmV0dXJuIGdBVktpdEVuYWJsZWQ7IH0KKworICAgIHN0YXRpYyB2b2lkIHNl
dFNob3VsZE9wdE91dE9mTmV0d29ya1N0YXRlT2JzZXJ2YXRpb24oYm9vbCBmbGFnKSB7IGdTaG91
bGRPcHRPdXRPZk5ldHdvcmtTdGF0ZU9ic2VydmF0aW9uID0gZmxhZzsgfQorICAgIHN0YXRpYyBi
b29sIHNob3VsZE9wdE91dE9mTmV0d29ya1N0YXRlT2JzZXJ2YXRpb24oKSB7IHJldHVybiBnU2hv
dWxkT3B0T3V0T2ZOZXR3b3JrU3RhdGVPYnNlcnZhdGlvbjsgfQogI2VuZGlmCiAKIHByaXZhdGU6
CkBAIC0zNTMsNiArMzU2LDcgQEAgcHJpdmF0ZToKICNpZiBQTEFURk9STShJT1MpCiAgICAgc3Rh
dGljIGJvb2wgZ05ldHdvcmtEYXRhVXNhZ2VUcmFja2luZ0VuYWJsZWQ7CiAgICAgc3RhdGljIGJv
b2wgZ0FWS2l0RW5hYmxlZDsKKyAgICBzdGF0aWMgYm9vbCBnU2hvdWxkT3B0T3V0T2ZOZXR3b3Jr
U3RhdGVPYnNlcnZhdGlvbjsKICNlbmRpZgogCiAgICAgc3RhdGljIGRvdWJsZSBnSGlkZGVuUGFn
ZURPTVRpbWVyQWxpZ25tZW50SW50ZXJ2YWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdGF0ZU5vdGlmaWVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0YXRlTm90aWZpZXIuY3BwCmluZGV4IDMxZmFiOGYw
NzEwMjMwZTAzYTg5ZDkzNGFkNzY5YmM4N2I3NDIyODcuLjU2ZTc0YzMxZmQ4MzBhNDdiOThlZWY4
ZjkxODM2YTY2MjhiMTY2N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvTmV0d29ya1N0YXRlTm90aWZpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvTmV0d29ya1N0YXRlTm90aWZpZXIuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTmV0d29ya1N0YXRlTm90aWZpZXIuaCIKIAor
I2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSA8bXV0ZXg+CiAjaW5jbHVkZSA8d3RmL0Fz
c2VydGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CkBAIC00NywxMSArNDgs
MTYgQEAgTmV0d29ya1N0YXRlTm90aWZpZXImIG5ldHdvcmtTdGF0ZU5vdGlmaWVyKCkKIHZvaWQg
TmV0d29ya1N0YXRlTm90aWZpZXI6OmFkZE5ldHdvcmtTdGF0ZUNoYW5nZUxpc3RlbmVyKHN0ZDo6
ZnVuY3Rpb248dm9pZCAoYm9vbCk+IGxpc3RlbmVyKQogewogICAgIEFTU0VSVChsaXN0ZW5lcik7
CisjaWYgUExBVEZPUk0oSU9TKQorICAgIGlmIChTZXR0aW5nczo6c2hvdWxkT3B0T3V0T2ZOZXR3
b3JrU3RhdGVPYnNlcnZhdGlvbigpKQorICAgICAgICByZXR1cm47CisgICAgbGF6eUluaXRpYWxp
emUoRG9Ob3RTZXRJbml0aWFsT25MaW5lVmFsdWUpOworI2VuZGlmCiAKICAgICBtX2xpc3RlbmVy
cy5hcHBlbmQoc3RkOjptb3ZlKGxpc3RlbmVyKSk7CiB9CiAKLXZvaWQgTmV0d29ya1N0YXRlTm90
aWZpZXI6Om5vdGlmeU5ldHdvcmtTdGF0ZUNoYW5nZSgpCit2b2lkIE5ldHdvcmtTdGF0ZU5vdGlm
aWVyOjpub3RpZnlOZXR3b3JrU3RhdGVDaGFuZ2UoKSBjb25zdAogewogICAgIGZvciAoY29uc3Qg
YXV0byYgbGlzdGVuZXIgOiBtX2xpc3RlbmVycykKICAgICAgICAgbGlzdGVuZXIobV9pc09uTGlu
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtT
dGF0ZU5vdGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtT
dGF0ZU5vdGlmaWVyLmgKaW5kZXggZDdkYzM5ZWYxOTEwMDA2ZDk1NzUwOTYxMGMxMWY0Y2Y4MDdh
OGM5Zi4uYjcwNzBlMjk5YTBiMGJmMzdlMDcyNjE0YWU3YWU5NTliN2NhMGM3MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RhdGVOb3RpZmllci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0YXRlTm90aWZp
ZXIuaApAQCAtNDgsNiArNDgsMTEgQEAgdHlwZWRlZiBjb25zdCBzdHJ1Y3QgX19TQ0R5bmFtaWNT
dG9yZSAqIFNDRHluYW1pY1N0b3JlUmVmOwogdHlwZWRlZiBzdHJ1Y3QgX0Vjb3JlX0ZkX0hhbmRs
ZXIgRWNvcmVfRmRfSGFuZGxlcjsKIHR5cGVkZWYgdW5zaWduZWQgY2hhciBFaW5hX0Jvb2w7CiAK
KyNlbGlmIFBMQVRGT1JNKElPUykKKworI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KK09CSkNf
Q0xBU1MgTmV0d29ya1N0YXRlT2JzZXJ2ZXI7CisKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CkBAIC02MSwxNyArNjYsMTUgQEAgcHVibGljOgogI2VuZGlmCiAgICAgdm9pZCBhZGROZXR3
b3JrU3RhdGVDaGFuZ2VMaXN0ZW5lcihzdGQ6OmZ1bmN0aW9uPHZvaWQgKGJvb2wgaXNPbkxpbmUp
Pik7CiAKLSAgICBib29sIG9uTGluZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNPbkxpbmU7IH0KLSAg
ICAKLSNpZiBQTEFURk9STShJT1MpCi0gICAgdm9pZCBzZXRJc09uTGluZShib29sKTsKLSNlbmRp
ZgorICAgIGJvb2wgb25MaW5lKCkgY29uc3Q7CiAKIHByaXZhdGU6CisjaWYgIVBMQVRGT1JNKElP
UykKICAgICBib29sIG1faXNPbkxpbmU7CisjZW5kaWYKICAgICBWZWN0b3I8c3RkOjpmdW5jdGlv
bjx2b2lkIChib29sKT4+IG1fbGlzdGVuZXJzOwogCi0gICAgdm9pZCBub3RpZnlOZXR3b3JrU3Rh
dGVDaGFuZ2UoKTsKKyAgICB2b2lkIG5vdGlmeU5ldHdvcmtTdGF0ZUNoYW5nZSgpIGNvbnN0Owog
ICAgIHZvaWQgdXBkYXRlU3RhdGUoKTsKIAogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTk3LDYgKzEw
MCwxNCBAQCBwcml2YXRlOgogCiAgICAgaW50IG1fbmV0bGlua1NvY2tldDsKICAgICBFY29yZV9G
ZF9IYW5kbGVyKiBtX2ZkSGFuZGxlcjsKKworI2VsaWYgUExBVEZPUk0oSU9TKQorICAgIGVudW0g
U2hvdWxkU2V0SW5pdGlhbE9uTGluZVZhbHVlVGFnIHsgU2V0SW5pdGlhbE9uTGluZVZhbHVlLCBE
b05vdFNldEluaXRpYWxPbkxpbmVWYWx1ZSB9OworICAgIHZvaWQgbGF6eUluaXRpYWxpemUoU2hv
dWxkU2V0SW5pdGlhbE9uTGluZVZhbHVlVGFnKSBjb25zdDsKKyAgICBmcmllbmQgdm9pZCBzZXRP
bkxpbmUoY29uc3QgTmV0d29ya1N0YXRlTm90aWZpZXIqLCBib29sKTsKKworICAgIG11dGFibGUg
Ym9vbCBtX2lzT25MaW5lOworICAgIG11dGFibGUgUmV0YWluUHRyPE5ldHdvcmtTdGF0ZU9ic2Vy
dmVyPiBtX29ic2VydmVyOwogI2VuZGlmCiB9OwogCkBAIC0xMTUsNCArMTI2LDExIEBAIE5ldHdv
cmtTdGF0ZU5vdGlmaWVyJiBuZXR3b3JrU3RhdGVOb3RpZmllcigpOwogCiB9OwogCisjaWYgIVBM
QVRGT1JNKElPUykKK2lubGluZSBib29sIE5ldHdvcmtTdGF0ZU5vdGlmaWVyOjpvbkxpbmUoKSBj
b25zdAoreworICAgIHJldHVybiBtX2lzT25MaW5lOworfQorI2VuZGlmCisKICNlbmRpZiAvLyBO
ZXR3b3JrU3RhdGVOb3RpZmllcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2lvcy9OZXR3b3JrU3RhdGVOb3RpZmllcklPUy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9OZXR3b3JrU3RhdGVOb3RpZmllcklPUy5jcHAKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDllZDZhMDg3ODVjZWU4ZGRmNDcwNzBkYmVmMjZhNjFj
NDdiODJkMzUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvTmV0d29ya1N0YXRlTm90aWZpZXJJ
T1MuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAwOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
Ci0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiTmV0d29ya1N0YXRlTm90aWZpZXIuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1OZXR3
b3JrU3RhdGVOb3RpZmllcjo6TmV0d29ya1N0YXRlTm90aWZpZXIoKQotICAgIDogbV9pc09uTGlu
ZShmYWxzZSkKLXsKLX0KLQotdm9pZCBOZXR3b3JrU3RhdGVOb3RpZmllcjo6c2V0SXNPbkxpbmUo
Ym9vbCBpc09uTGluZSkKLXsKLSAgICBpZiAobV9pc09uTGluZSA9PSBpc09uTGluZSkKLSAgICAg
ICAgcmV0dXJuOwotICAgIG1faXNPbkxpbmUgPSBpc09uTGluZTsKLSAgICBub3RpZnlOZXR3b3Jr
U3RhdGVDaGFuZ2UoKTsKLX0KLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9pb3MvTmV0d29ya1N0YXRlTm90aWZpZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9OZXR3b3JrU3RhdGVOb3RpZmllcklPUy5tbQpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4xYmZlOTRmNDM3ZTcyODg2ZWZjMDk0NmZmMjg2NDU5NTg5NTg4NjUxCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvTmV0d29ya1N0YXRl
Tm90aWZpZXJJT1MubW0KQEAgLTAsMCArMSwxMTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJOZXR3
b3JrU3RhdGVOb3RpZmllci5oIgorCisjaW1wb3J0ICJTb2Z0TGlua2luZy5oIgorI2ltcG9ydCAi
V2ViQ29yZVRocmVhZFJ1bi5oIgorI2ltcG9ydCA8bXV0ZXg+CisKKyNpZiBkZWZpbmVkKF9faGFz
X2luY2x1ZGUpICYmIF9faGFzX2luY2x1ZGUoPEFwcFN1cHBvcnQvQ1BOZXR3b3JrT2JzZXJ2ZXIu
aD4pCisjaW1wb3J0IDxBcHBTdXBwb3J0L0NQTmV0d29ya09ic2VydmVyLmg+CisjZWxzZQorZXh0
ZXJuIE5TU3RyaW5nICogY29uc3QgQ1BOZXR3b3JrT2JzZXJ2ZXJSZWFjaGFibGU7CitAaW50ZXJm
YWNlIENQTmV0d29ya09ic2VydmVyIDogTlNPYmplY3QKKysgKENQTmV0d29ya09ic2VydmVyICop
c2hhcmVkTmV0d29ya09ic2VydmVyOworLSAodm9pZClhZGROZXR3b3JrUmVhY2hhYmxlT2JzZXJ2
ZXI6KGlkKW9ic2VydmVyIHNlbGVjdG9yOihTRUwpc2VsZWN0b3I7CistICh2b2lkKXJlbW92ZU5l
dHdvcmtSZWFjaGFibGVPYnNlcnZlcjooaWQpb2JzZXJ2ZXI7CistIChCT09MKWlzTmV0d29ya1Jl
YWNoYWJsZTsKK0BlbmQKKyNlbmRpZgorCitTT0ZUX0xJTktfUFJJVkFURV9GUkFNRVdPUksoQXBw
U3VwcG9ydCk7CitTT0ZUX0xJTktfQ0xBU1MoQXBwU3VwcG9ydCwgQ1BOZXR3b3JrT2JzZXJ2ZXIp
OworU09GVF9MSU5LX1BPSU5URVIoQXBwU3VwcG9ydCwgQ1BOZXR3b3JrT2JzZXJ2ZXJSZWFjaGFi
bGUsIE5TU3RyaW5nICopOworCitAaW50ZXJmYWNlIE5ldHdvcmtTdGF0ZU9ic2VydmVyIDogTlNP
YmplY3QKKy0gKGlkKWluaXRXaXRoTm90aWZpZXI6KGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdGF0
ZU5vdGlmaWVyKilub3RpZmllcjsKKy0gKHZvaWQpbmV0d29ya1N0YXRlQ2hhbmdlZDooTlNOb3Rp
ZmljYXRpb24gKilub3RpZmljYXRpb247CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBOZXR3b3Jr
U3RhdGVPYnNlcnZlciB7CisgICAgY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0YXRlTm90aWZpZXIq
IF9ub3RpZmllcjsKK30KKworLSAoaWQpaW5pdFdpdGhOb3RpZmllcjooY29uc3QgV2ViQ29yZTo6
TmV0d29ya1N0YXRlTm90aWZpZXIqKW5vdGlmaWVyCit7CisgICAgc2VsZiA9IFtzdXBlciBpbml0
XTsKKyAgICBpZiAoIXNlbGYpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgQVNTRVJUKG5vdGlm
aWVyKTsKKyAgICBfbm90aWZpZXIgPSBub3RpZmllcjsKKyAgICBbW2dldENQTmV0d29ya09ic2Vy
dmVyQ2xhc3MoKSBzaGFyZWROZXR3b3JrT2JzZXJ2ZXJdIGFkZE5ldHdvcmtSZWFjaGFibGVPYnNl
cnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxlY3RvcihuZXR3b3JrU3RhdGVDaGFuZ2VkOildOworICAg
IHJldHVybiBzZWxmOworfQorCistICh2b2lkKWRlYWxsb2MKK3sKKyAgICBbW2dldENQTmV0d29y
a09ic2VydmVyQ2xhc3MoKSBzaGFyZWROZXR3b3JrT2JzZXJ2ZXJdIHJlbW92ZU5ldHdvcmtSZWFj
aGFibGVPYnNlcnZlcjpzZWxmXTsKKyAgICBbc3VwZXIgZGVhbGxvY107Cit9CisKKy0gKHZvaWQp
bmV0d29ya1N0YXRlQ2hhbmdlZDooTlNOb3RpZmljYXRpb24gKilub3RpZmljYXRpb24KK3sKKyAg
ICBBU1NFUlQobm90aWZpY2F0aW9uKTsKKyAgICBXZWJUaHJlYWRSdW4oXnsKKyAgICAgICAgc2V0
T25MaW5lKF9ub3RpZmllciwgW1tbbm90aWZpY2F0aW9uIHVzZXJJbmZvXSBvYmplY3RGb3JLZXk6
Z2V0Q1BOZXR3b3JrT2JzZXJ2ZXJSZWFjaGFibGUoKV0gYm9vbFZhbHVlXSk7CisgICAgfSk7Cit9
CisKK0BlbmQKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitOZXR3b3JrU3RhdGVOb3RpZmllcjo6
TmV0d29ya1N0YXRlTm90aWZpZXIoKQorICAgIDogbV9pc09uTGluZShmYWxzZSkKK3sKK30KKwor
dm9pZCBOZXR3b3JrU3RhdGVOb3RpZmllcjo6bGF6eUluaXRpYWxpemUoU2hvdWxkU2V0SW5pdGlh
bE9uTGluZVZhbHVlVGFnIHNob3VsZFNldEluaXRpYWxPbkxpbmVWYWx1ZSkgY29uc3QKK3sKKyAg
ICBpZiAobV9vYnNlcnZlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9vYnNlcnZlciA9IGFk
b3B0TlMoW1tOZXR3b3JrU3RhdGVPYnNlcnZlciBhbGxvY10gaW5pdFdpdGhOb3RpZmllcjp0aGlz
XSk7CisgICAgaWYgKHNob3VsZFNldEluaXRpYWxPbkxpbmVWYWx1ZSA9PSBTZXRJbml0aWFsT25M
aW5lVmFsdWUpCisgICAgICAgIHNldE9uTGluZSh0aGlzLCBbW2dldENQTmV0d29ya09ic2VydmVy
Q2xhc3MoKSBzaGFyZWROZXR3b3JrT2JzZXJ2ZXJdIGlzTmV0d29ya1JlYWNoYWJsZV0pOworfQor
Citib29sIE5ldHdvcmtTdGF0ZU5vdGlmaWVyOjpvbkxpbmUoKSBjb25zdAoreworICAgIGxhenlJ
bml0aWFsaXplKFNldEluaXRpYWxPbkxpbmVWYWx1ZSk7CisgICAgcmV0dXJuIG1faXNPbkxpbmU7
Cit9CisKK3ZvaWQgc2V0T25MaW5lKGNvbnN0IE5ldHdvcmtTdGF0ZU5vdGlmaWVyKiBub3RpZmll
ciwgYm9vbCBvbkxpbmUpCit7CisgICAgQVNTRVJUKG5vdGlmaWVyKTsKKyAgICBpZiAob25MaW5l
ID09IG5vdGlmaWVyLT5tX2lzT25MaW5lKQorICAgICAgICByZXR1cm47CisgICAgbm90aWZpZXIt
Pm1faXNPbkxpbmUgPSBvbkxpbmU7CisgICAgbm90aWZpZXItPm5vdGlmeU5ldHdvcmtTdGF0ZUNo
YW5nZSgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYlZpZXcubW0KaW5kZXggN2Q2OTcyMWI3OTY4ZGIzZGY4MGY1MDcwODczODg0YjZhOTMxMjJi
ZS4uODg3MzA3ODkzMTk4YWI1NDIxZDM5OTY3ODQ5MjQ3MTEwNjNjNzg2ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtMzYwNCwxMSArMzYwNCw5IEBAIC0gKEJPT0wpX2Fs
bG93c01lc3NhZ2luZwogICAgIHJldHVybiBfcHJpdmF0ZS0+YWxsb3dzTWVzc2FnaW5nOwogfQog
CisvLyBGSVhNRTogUmVtb3ZlIG9uY2UgdGhpcyBpcyBubyBsb25nZXIgbmVjZXNzYXJ5IGZvciBV
SUtpdCBiaW5hcnkgY29tcGF0aWJpbGl0eS4KIC0gKHZvaWQpX3NldE5ldHdvcmtTdGF0ZUlzT25s
aW5lOihCT09MKWlzT25MaW5lCiB7Ci0gICAgV2ViVGhyZWFkUnVuKF57Ci0gICAgICAgIG5ldHdv
cmtTdGF0ZU5vdGlmaWVyKCkuc2V0SXNPbkxpbmUoaXNPbkxpbmUpOwotICAgIH0pOwogfQogCiAt
ICh2b2lkKV9zZXRGaXhlZExheW91dFNpemU6KENHU2l6ZSlzaXplCkBAIC0zNjk3LDYgKzM2OTUs
MTEgQEAgLSAodm9pZClfb3ZlcmZsb3dTY3JvbGxQb3NpdGlvbkNoYW5nZWRUbzooQ0dQb2ludClv
ZmZzZXQgZm9yTm9kZTooRE9NTm9kZSAqKWRvbU4KIAogICAgIGZyYW1lLT5vdmVyZmxvd1Njcm9s
bFBvc2l0aW9uQ2hhbmdlZEZvck5vZGUocm91bmRlZEludFBvaW50KG9mZnNldCksIG5vZGUsIHVz
ZXJTY3JvbGwpOwogfQorCisrICh2b2lkKWRpc2FibGVSZWFjaGFiaWxpdHkKK3sKKyAgICBTZXR0
aW5nczo6c2V0U2hvdWxkT3B0T3V0T2ZOZXR3b3JrU3RhdGVPYnNlcnZhdGlvbih0cnVlKTsKK30K
ICNlbmRpZiAvLyBQTEFURk9STShJT1MpCiAKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oIGIvU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oCmluZGV4IDliY2Q3ZTU2MDc1
OTM2YmIyMThiZTc3YjdjYjJkMWQwMmE1MWQzMjQuLjU2NzA2MTRmNjY3N2FhYWZiZWIyMDUzMzdl
ZmU2NWEyMzRjYWM0YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
Vmlld1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdQcml2
YXRlLmgKQEAgLTU3Miw4ICs1NzIsNiBAQCBDb3VsZCBiZSB3b3J0aCBhZGRpbmcgdG8gdGhlIEFQ
SS4KIC0gKHZvaWQpX3NldEFsbG93c01lc3NhZ2luZzooQk9PTClhRmxhZzsKIC0gKEJPT0wpX2Fs
bG93c01lc3NhZ2luZzsKIAotLSAodm9pZClfc2V0TmV0d29ya1N0YXRlSXNPbmxpbmU6KEJPT0wp
aXNPbkxpbmU7Ci0KIC0gKHZvaWQpX3NldEN1c3RvbUZpeGVkUG9zaXRpb25MYXlvdXRSZWN0SW5X
ZWJUaHJlYWQ6KENHUmVjdClyZWN0IHN5bmNocm9uaXplOihCT09MKXN5bmNocm9uaXplOwogLSAo
dm9pZClfc2V0Q3VzdG9tRml4ZWRQb3NpdGlvbkxheW91dFJlY3Q6KENHUmVjdClyZWN0OwogCkBA
IC01ODMsNiArNTgxLDEzIEBAIENvdWxkIGJlIHdvcnRoIGFkZGluZyB0byB0aGUgQVBJLgogLSAo
dm9pZClfb3ZlcmZsb3dTY3JvbGxQb3NpdGlvbkNoYW5nZWRUbzooQ0dQb2ludClvZmZzZXQgZm9y
Tm9kZTooRE9NTm9kZSAqKW5vZGUgaXNVc2VyU2Nyb2xsOihCT09MKXVzZXJTY3JvbGw7CiAKIC0g
KE5TQXJyYXkgKilfdG91Y2hFdmVudFJlZ2lvbnM7CisKKy8qIQorICAgIEBtZXRob2QgZGlzYWJs
ZVJlYWNoYWJpbGl0eQorICAgIEBhYnN0cmFjdCBEaXNhYmxlcyBvYnNlcnZhdGlvbiBvZiBuZXR3
b3JrIHJlYWNoYWJpbGl0eSBpbiBhbGwgV2ViVmlld3MuCisgICAgQGRpc2N1c3Npb24gVG8gdGFr
ZSBlZmZlY3QsIHRoaXMgbWV0aG9kIG11c3QgYmUgY2FsbGVkIGJlZm9yZSB0aGUgZmlyc3QgV2Vi
VmlldyBpcyBjcmVhdGVkLgorICovCisrICh2b2lkKWRpc2FibGVSZWFjaGFiaWxpdHk7CiAjZW5k
aWYKIAogI2lmICFUQVJHRVRfT1NfSVBIT05FCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>225310</attachid>
            <date>2014-02-26 15:32:39 -0800</date>
            <delta_ts>2014-02-26 15:40:21 -0800</delta_ts>
            <desc>[iOS] Support network state notification using CPNetworkObserver</desc>
            <filename>bug-129358-20140226153238.patch</filename>
            <type>text/plain</type>
            <size>23762</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY0NTkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmY0MTRjOWRlYzA4YThh
YThmZjM1MWYxMDA3YmNlZmFmM2U3ZWZjYy4uMGIxNTc0Yzk1YWEwMTY3MDNhMGRmMzdmMmM2N2Jh
MGI4YzQ0MjAxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU2IEBACisyMDE0LTAyLTI2ICBBbmR5
IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBTdXBwb3J0IG5ldHdv
cmsgc3RhdGUgbm90aWZpY2F0aW9uIHVzaW5nIENQTmV0d29ya09ic2VydmVyCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjkzNTgKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgaU9TIHN1cHBvcnQgZm9y
IG5hdmlnYXRvci5vbkxpbmUgYW5kIG9ubGluZS9vZmZsaW5lIGV2ZW50cy4gU2luY2UKKyAgICAg
ICAgaXQgY2FuIGJlIGV4cGVuc2l2ZSB0byBxdWVyeSBDUE5ldHdvcmtPYnNlcnZlciwgd2FpdCB0
byBkbyBzbyB1bnRpbAorICAgICAgICBzb21lb25lIGNhbGxzIE5ldHdvcmtTdGF0ZU9ic2VydmVy
OjpvbkxpbmUoKSBvcgorICAgICAgICBOZXR3b3JrU3RhdGVPYnNlcnZlcjo6YWRkTmV0d29ya1N0
YXRlQ2hhbmdlTGlzdGVuZXIoKS4gRm9yIGNsaWVudHMgdGhhdAorICAgICAgICBkb24ndCB3aXNo
IHRvIG9ic2VydmUgbmV0d29yayByZWFjaGFiaWxpdHkgYXQgYWxsLCBhZGQgYSBnbG9iYWwgb3B0
LW91dC4KKyAgICAgICAgVGhlc2UgY2xpZW50cyB3aWxsIG9ubHkgcGF5IHRoZSBjb3N0IG9mIENQ
TmV0d29ya09ic2VydmVyIGlmIHRoZXkgbG9hZAorICAgICAgICBhIHBhZ2UgdGhhdCBleHBsaWNp
dGx5IGFjY2Vzc2VzIG5hdmlnYXRvci5vbkxpbmUuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBD
b3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46IFN0
b3BwZWQgZXhwb3J0aW5nIE5ldHdvcmtTdGF0ZU5vdGlmaWVyOjpzZXRJc09uTGluZSgpCisgICAg
ICAgIGFuZCBzdGFydGVkIGV4cG9ydGluZyBTZXR0aW5nczo6Z1Nob3VsZE9wdE91dE9mTmV0d29y
a1N0YXRlT2JzZXJ2YXRpb24uCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOiBSZW5hbWVkIE5ldHdvcmtTdGF0ZU5vdGlmaWVySU9TLmNwcAorICAgICAgICB0byBO
ZXR3b3JrU3RhdGVOb3RpZmllcklPUy5tbS4KKyAgICAgICAgKiBwYWdlL1NldHRpbmdzLmNwcDog
RGVmYXVsdGVkIGdTaG91bGRPcHRPdXRPZk5ldHdvcmtTdGF0ZU9ic2VydmF0aW9uCisgICAgICAg
IHRvIGZhbHNlLgorICAgICAgICAqIHBhZ2UvU2V0dGluZ3MuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlNldHRpbmdzOjpzZXRTaG91bGRPcHRPdXRPZk5ldHdvcmtTdGF0ZU9ic2VydmF0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjpzaG91bGRPcHRPdXRPZk5ldHdvcmtTdGF0ZU9ic2Vy
dmF0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdGF0ZU5vdGlmaWVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdGF0ZU5vdGlmaWVyOjphZGROZXR3b3Jr
U3RhdGVDaGFuZ2VMaXN0ZW5lcik6IElnbm9yZWQKKyAgICAgICAgdGhlIGxpc3RlbmVyIGlmIFNl
dHRpbmdzOjpzaG91bGRPcHRPdXRPZk5ldHdvcmtTdGF0ZU9ic2VydmF0aW9uKCkuCisgICAgICAg
IENhbGxlZCByZWdpc3Rlck9ic2VydmVySWZOZWNlc3NhcnkoKSBhbmQgYWRkZWQgdGhlIGxpc3Rl
bmVyIG90aGVyd2lzZS4KKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdGF0ZU5vdGlmaWVyOjpu
b3RpZnlOZXR3b3JrU3RhdGVDaGFuZ2UpOiBDb25zdCBxdWFsaWZpZWQuCisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9OZXR3b3JrU3RhdGVOb3RpZmllci5oCisgICAgICAgIChOZXR3b3JrU3Rh
dGVOb3RpZmllcjo6b25MaW5lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2lvcy9OZXR3
b3JrU3RhdGVOb3RpZmllcklPUy5jcHA6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9pb3MvTmV0d29ya1N0YXRlTm90aWZpZXJJT1MubW06IEFkZGVkLgorICAgICAgICAoLVtO
ZXR3b3JrU3RhdGVPYnNlcnZlciBpbml0V2l0aE5vdGlmaWVyOldlYkNvcmU6Ol0pOiBSZWdpc3Rl
cmVkIHNlbGYKKyAgICAgICAgYXMgYSBuZXR3b3JrIHJlYWNoYWJsZSBvYnNlcnZlciBvbiBDUE5l
dHdvcmtPYnNlcnZlci4KKyAgICAgICAgKC1bTmV0d29ya1N0YXRlT2JzZXJ2ZXIgZGVhbGxvY10p
OiBSZW1vdmVkIHNlbGYgYXMgYSBuZXR3b3JrIHJlYWNoYWJsZQorICAgICAgICBvYnNlcnZlci4K
KyAgICAgICAgKC1bTmV0d29ya1N0YXRlT2JzZXJ2ZXIgbmV0d29ya1N0YXRlQ2hhbmdlZDpdKTog
Q2FsbGVkIHNldE9uTGluZSgpIG9uCisgICAgICAgIHRoZSB3ZWIgdGhyZWFkLCBwYXNzaW5nIHRo
ZSByZWFjaGFiaWxpdHkgdmFsdWUgZnJvbSB0aGUgbm90aWZpY2F0aW9uLgorICAgICAgICAoV2Vi
Q29yZTo6TmV0d29ya1N0YXRlTm90aWZpZXI6Ok5ldHdvcmtTdGF0ZU5vdGlmaWVyKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok5ldHdvcmtTdGF0ZU5vdGlmaWVyOjp+TmV0d29ya1N0YXRlTm90aWZpZXIp
OiBDbGVhcmVkCisgICAgICAgIG1fb2JzZXJ2ZXIncyBwb2ludGVyIGJhY2sgdG8gdXMuCisgICAg
ICAgIChXZWJDb3JlOjpOZXR3b3JrU3RhdGVOb3RpZmllcjo6cmVnaXN0ZXJPYnNlcnZlcklmTmVj
ZXNzYXJ5KTogSW5pdGlhbGl6ZWQKKyAgICAgICAgbV9vYnNlcnZlciBpZiBuZWNlc3NhcnkuCisg
ICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RhdGVOb3RpZmllcjo6b25MaW5lKTogQ2FsbGVkCisg
ICAgICAgIHJlZ2lzdGVyT2JzZXJ2ZXJJZk5lY2Vzc2FyeSgpIGFuZCBzZXQgYW4gaW5pdGlhbCB2
YWx1ZSBmb3IgbV9pc09uTGluZQorICAgICAgICBpZiBtX2lzT25MaW5lSW5pdGlhbGl6ZWQgaXMg
ZmFsc2UuIFJldHVybmVkIG1faXNPbkxpbmUuCisgICAgICAgIChXZWJDb3JlOjpzZXRPbkxpbmUp
OiBTZXQgbV9pc09uTGluZSBhbmQgY2FsbGVkCisgICAgICAgIG5vdGlmeU5ldHdvcmtTdGF0ZUNo
YW5nZSgpIGlmIG5lZWRlZC4gVW5jb25kaXRpb25hbGx5IHNldAorICAgICAgICBtX2lzT25MaW5l
SW5pdGlhbGl6ZWQgdG8gdHJ1ZS4KKwogMjAxNC0wMi0yNCAgVGFtYXMgR2VyZ2VseSAgPHRnZXJn
ZWx5LnUtc3plZ2VkQHBhcnRuZXIuc2Ftc3VuZy5jb20+CiAKICAgICAgICAgQ29kZSBjbGVhbnVw
OiByZW1vdmUgbGVmdG92ZXIgRU5BQkxFKFdPUktFUlMpIG1hY3JvcyBhbmQgc3VwcG9ydC4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFj
L0NoYW5nZUxvZwppbmRleCAzM2Q2NzE3ZTM4NDMwYmJjYWRmZGRhNDI5MGZlMDRlNDA2NTdjMGY3
Li4zZTkxODczYWFmODQzYWRhNDFkNGJhMWU4NTQ4N2JhZWNmNDAxODZiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTQtMDItMjYgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBw
bGUuY29tPgorCisgICAgICAgIFtpT1NdIFN1cHBvcnQgbmV0d29yayBzdGF0ZSBub3RpZmljYXRp
b24gdXNpbmcgQ1BOZXR3b3JrT2JzZXJ2ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEyOTM1OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJW
aWV3IF9zZXROZXR3b3JrU3RhdGVJc09ubGluZTpdKTogUmV0YWluZWQgYW4gZW1wdHkKKyAgICAg
ICAgaW1wbGVtZW50YXRpb24gZm9yIGJpbmFyeSBjb21wYXRpYmlsaXR5IGZvciBVSUtpdC4KKyAg
ICAgICAgKCtbV2ViVmlldyBfZG9Ob3RTdGFydE9ic2VydmluZ05ldHdvcmtSZWFjaGFiaWxpdHld
KTogQ2FsbGVkCisgICAgICAgIFNldHRpbmdzOjpzZXRTaG91bGRPcHRPdXRPZk5ldHdvcmtTdGF0
ZU9ic2VydmF0aW9uKHRydWUpLgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlld1ByaXZhdGUuaDog
UmVtb3ZlZCBkZWNsYXJhdGlvbiBvZgorICAgICAgICBfc2V0TmV0d29ya1N0YXRlSXNPbmxpbmU6
IGFuZCBkZWNsYXJlZAorICAgICAgICBfZG9Ob3RTdGFydE9ic2VydmluZ05ldHdvcmtSZWFjaGFi
aWxpdHkuCisKIDIwMTQtMDItMjQgIFRhbWFzIEdlcmdlbHkgIDx0Z2VyZ2VseS51LXN6ZWdlZEBw
YXJ0bmVyLnNhbXN1bmcuY29tPgogCiAgICAgICAgIENvZGUgY2xlYW51cDogcmVtb3ZlIGxlZnRv
dmVyIEVOQUJMRShXT1JLRVJTKSBtYWNyb3MgYW5kIHN1cHBvcnQuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmlu
CmluZGV4IGY5NmIzM2NlMWEyODJjODkxMjgzNWEwMmI5ZDAyYmY3NDM5MTljMjQuLjkyOWE1Y2Yx
MThlOGFiN2M0YmYxODg5NWJkYTc1YWNkN2QzNzdhMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBA
IC0yNDAyLDcgKzI0MDIsNiBAQCBfX1pON1dlYkNvcmUxOVJlc291cmNlUmVxdWVzdEJhc2UxOWRl
ZmF1bHRBbGxvd0Nvb2tpZXNFdgogX19aTjdXZWJDb3JlMTlSZXNvdXJjZVJlcXVlc3RCYXNlMjJz
ZXREZWZhdWx0QWxsb3dDb29raWVzRWIKIF9fWk43V2ViQ29yZTE5YXBwbGljYXRpb25Jc1dlYkFw
cEV2CiBfX1pON1dlYkNvcmUxOWFzY2lpTGluZUJyZWFrVGFibGVFCi1fX1pON1dlYkNvcmUyME5l
dHdvcmtTdGF0ZU5vdGlmaWVyMTFzZXRJc09uTGluZUViCiBfX1pON1dlYkNvcmUyMFBsYXRmb3Jt
RXZlbnRGYWN0b3J5MjdjcmVhdGVQbGF0Zm9ybUtleWJvYXJkRXZlbnRFUDhXZWJFdmVudAogX19a
TjdXZWJDb3JlMjBSZXNvdXJjZUhhbmRsZUNsaWVudDIyd2lsbENhY2hlUmVzcG9uc2VBc3luY0VQ
TlNfMTRSZXNvdXJjZUhhbmRsZUVQSzIwX0NGQ2FjaGVkVVJMUmVzcG9uc2UKIF9fWk43V2ViQ29y
ZTIwYXBwbGljYXRpb25Jc09rQ3VwaWRFdgpAQCAtMjUwOCw2ICsyNTA3LDcgQEAgX19aTjdXZWJD
b3JlOFNldHRpbmdzMTNnQVZLaXRFbmFibGVkRQogX19aTjdXZWJDb3JlOFNldHRpbmdzMjNzZXRO
ZXR3b3JrSW50ZXJmYWNlTmFtZUVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZThTZXR0aW5n
czMxc2V0QXVkaW9TZXNzaW9uQ2F0ZWdvcnlPdmVycmlkZUVqCiBfX1pON1dlYkNvcmU4U2V0dGlu
Z3MzNHNldE5ldHdvcmtEYXRhVXNhZ2VUcmFja2luZ0VuYWJsZWRFYgorX19aTjdXZWJDb3JlOFNl
dHRpbmdzMzhnU2hvdWxkT3B0T3V0T2ZOZXR3b3JrU3RhdGVPYnNlcnZhdGlvbkUKIF9fWk43V2Vi
Q29yZTlGb250Q2FjaGUxN2dldENhY2hlZEZvbnREYXRhRVJLTlNfMTVGb250RGVzY3JpcHRpb25F
UktOM1dURjEyQXRvbWljU3RyaW5nRWJOUzBfMTJTaG91bGRSZXRhaW5FCiBfX1pON1dlYkNvcmU5
Rm9udENhY2hlMjVnZXRMYXN0UmVzb3J0RmFsbGJhY2tGb250RVJLTlNfMTVGb250RGVzY3JpcHRp
b25FTlMwXzEyU2hvdWxkUmV0YWluRQogX19aTjdXZWJDb3JlOUZyYW1lVmlldzIwc2V0V2FzU2Ny
b2xsZWRCeVVzZXJFYgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IDgyZmMxN2ZlZmI1NWI2MTRhMDhhYWM1ZmU4MmJiNWNjNTkzMjdk
YzIuLjExMDU2OGI2YmRmMzhkZjI3OWMxM2RjYzBjOTNkOGExNjAzZTM4YmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE0ODIs
NyArMTQ4Miw3IEBACiAJCTQ0MzExQ0Q4MTJFNEUyNEIwMDBBOEQxOSAvKiBET01Eb2N1bWVudFBy
aXZhdGUuaCBpbiBDb3B5IEdlbmVyYXRlZCBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQ0MzExQ0Q1MTJFNEUyMkQwMDBBOEQxOSAvKiBET01Eb2N1bWVudFByaXZh
dGUuaCAqLzsgfTsKIAkJNDQzMTFDRDkxMkU0RTI1NzAwMEE4RDE5IC8qIERPTURvY3VtZW50RnJh
Z21lbnRQcml2YXRlLmggaW4gQ29weSBHZW5lcmF0ZWQgSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0NDMxMUNENDEyRTRFMjJEMDAwQThEMTkgLyogRE9NRG9jdW1l
bnRGcmFnbWVudFByaXZhdGUuaCAqLzsgfTsKIAkJNDQzMTFGODIxMkU0RTY2QzAwMEE4RDE5IC8q
IERPTURvY3VtZW50RnJhZ21lbnRJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODVFNzExNDUwQUM1RDUzNDAwNTMyNzBGIC8qIERPTURvY3Vt
ZW50RnJhZ21lbnRJbnRlcm5hbC5oICovOyB9OwotCQk0NDNGMDQyNzBFNzVDOEZCMDA3RTU0MDcg
LyogTmV0d29ya1N0YXRlTm90aWZpZXJJT1MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDQzRjA0MjYwRTc1QzhGQjAwN0U1NDA3IC8qIE5ldHdvcmtT
dGF0ZU5vdGlmaWVySU9TLmNwcCAqLzsgfTsKKwkJNDQzRjA0MjcwRTc1QzhGQjAwN0U1NDA3IC8q
IE5ldHdvcmtTdGF0ZU5vdGlmaWVySU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDQzRjA0MjYwRTc1QzhGQjAwN0U1NDA3IC8qIE5ldHdvcmtTdGF0
ZU5vdGlmaWVySU9TLm1tICovOyB9OwogCQk0NDRENEUyMzBGNzA4QjJFMDAzMTU4RTAgLyogV2Vi
Q29yZVVSTFJlc3BvbnNlSU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDQ0RDRFMjEwRjcwOEIyRTAwMzE1OEUwIC8qIFdlYkNvcmVVUkxSZXNwb25z
ZUlPUy5tbSAqLzsgfTsKIAkJNDQ3NjUzMUIxMzMxNzA5OTAwMDZCNzg5IC8qIFNTTEtleUdlbmVy
YXRvcklPUy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0NDc2NTMxQTEzMzE3MDk5MDAwNkI3ODkgLyogU1NMS2V5R2VuZXJhdG9ySU9TLmNwcCAqLzsg
fTsKIAkJNDQ3OTU4MDQxNjQzQjQ5QTAwMUUwQTdGIC8qIFBhcnNlZENvbnRlbnRUeXBlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NDc5NTgwMzE2NDNC
NDdCMDAxRTBBN0YgLyogUGFyc2VkQ29udGVudFR5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtODM1MCw3ICs4MzUwLDcgQEAKIAkJNDQyQUY3
QTgxMDJDRERFQTAwOEZENEQzIC8qIFF1aWNrTG9vay5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IFF1aWNrTG9vay5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDQzMTFDRDQxMkU0RTIyRDAwMEE4RDE5IC8qIERPTURvY3VtZW50RnJhZ21lbnRQcml2
YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTURvY3VtZW50RnJhZ21l
bnRQcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0MzExQ0Q1MTJFNEUy
MkQwMDBBOEQxOSAvKiBET01Eb2N1bWVudFByaXZhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRE9NRG9jdW1lbnRQcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCTQ0M0YwNDI2MEU3NUM4RkIwMDdFNTQwNyAvKiBOZXR3b3JrU3RhdGVOb3RpZmllcklP
Uy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOZXR3b3JrU3RhdGVO
b3RpZmllcklPUy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ0M0YwNDI2MEU3
NUM4RkIwMDdFNTQwNyAvKiBOZXR3b3JrU3RhdGVOb3RpZmllcklPUy5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE5ldHdvcmtTdGF0ZU5vdGlmaWVySU9TLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NDRENEUyMTBGNzA4QjJFMDAzMTU4RTAgLyog
V2ViQ29yZVVSTFJlc3BvbnNlSU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gV2ViQ29yZVVSTFJlc3BvbnNlSU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0NDc2NTMxQTEzMzE3MDk5MDAwNkI3ODkgLyogU1NMS2V5R2VuZXJhdG9ySU9TLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFNTTEtleUdlbmVyYXRvcklP
Uy5jcHA7IHBhdGggPSBpb3MvU1NMS2V5R2VuZXJhdG9ySU9TLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDQ3OTU4MDIxNjQzQjQ3QjAwMUUwQTdGIC8qIFBhcnNlZENvbnRlbnRU
eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhcnNlZENvbnRl
bnRUeXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1MzA2LDcgKzE1MzA2
LDcgQEAKIAkJNDQ5N0Q1OEMwRUJBODU0RjAwQTEwNTUyIC8qIGlvcyAqLyA9IHsKIAkJCWlzYSA9
IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJNDQzRjA0MjYwRTc1QzhGQjAwN0U1NDA3
IC8qIE5ldHdvcmtTdGF0ZU5vdGlmaWVySU9TLmNwcCAqLywKKwkJCQk0NDNGMDQyNjBFNzVDOEZC
MDA3RTU0MDcgLyogTmV0d29ya1N0YXRlTm90aWZpZXJJT1MubW0gKi8sCiAJCQkJNDQyQUY3QTcx
MDJDRERFQTAwOEZENEQzIC8qIFF1aWNrTG9vay5oICovLAogCQkJCTQ0MkFGN0E4MTAyQ0RERUEw
MDhGRDREMyAvKiBRdWlja0xvb2subW0gKi8sCiAJCQkJN0U0MjhDRTQxM0UzNDA3RjAwM0I2NjFD
IC8qIFJlc291cmNlSGFuZGxlSU9TLm1tICovLApAQCAtMjgxNjEsNyArMjgxNjEsNyBAQAogCQkJ
CTVEODc0RjEzMEQxNjFEMzIwMDc5NkMzQiAvKiBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk1OUMyN0YwNTEzOEQyOEMxMDA3OUI3RTIgLyogTmV0d29y
a1Jlc291cmNlc0RhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE3RkE2MUIwRERBM0JCRTAw
MjhGOEE1IC8qIE5ldHdvcmtTdGF0ZU5vdGlmaWVyLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTQ0
M0YwNDI3MEU3NUM4RkIwMDdFNTQwNyAvKiBOZXR3b3JrU3RhdGVOb3RpZmllcklPUy5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQk0NDNGMDQyNzBFNzVDOEZCMDA3RTU0MDcgLyogTmV0d29ya1N0YXRl
Tm90aWZpZXJJT1MubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQTdGQTY0OTBEREEzQ0JBMDAyOEY4
QTUgLyogTmV0d29ya1N0YXRlTm90aWZpZXJNYWMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTEz
RUYzNDkxNjg1MEM0NzAwMzRDODNGIC8qIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUJDRUY0M0UwMEU2NzQxMTAwMDFDMTI4NyAvKiBOaW5lUGllY2VJ
bWFnZS5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2V0dGluZ3MuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAKaW5kZXggYWYy
NTI2YmMyZThkMDUwZDVlYTQ5YWRhZGJhN2E2NzcxNjM1MjQxYS4uMDU3ZTI1Yjk4NzdkMGI1YTA0
ZTdjZDIwYjA2NDJmY2E4M2RlOWEwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9T
ZXR0aW5ncy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAKQEAgLTk5
LDYgKzk5LDcgQEAgYm9vbCBTZXR0aW5nczo6Z0xvd1Bvd2VyVmlkZW9BdWRpb0J1ZmZlclNpemVF
bmFibGVkID0gZmFsc2U7CiAjaWYgUExBVEZPUk0oSU9TKQogYm9vbCBTZXR0aW5nczo6Z05ldHdv
cmtEYXRhVXNhZ2VUcmFja2luZ0VuYWJsZWQgPSBmYWxzZTsKIGJvb2wgU2V0dGluZ3M6OmdBVktp
dEVuYWJsZWQgPSBmYWxzZTsKK2Jvb2wgU2V0dGluZ3M6OmdTaG91bGRPcHRPdXRPZk5ldHdvcmtT
dGF0ZU9ic2VydmF0aW9uID0gZmFsc2U7CiAjZW5kaWYKIAogLy8gTk9URXMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0
dGluZ3MuaAppbmRleCAxNDNmOTkwYzUyNjMwZmY0Njk0ZjNhYjg4M2M4OTVmNTJiNDUwYjZjLi5m
MzI3MzhiMzcyMjI5NGU2N2ZmYjIzMDY1NWY3NGVlZWQyMjY1MzFlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0
aW5ncy5oCkBAIC0yNzEsNiArMjcxLDkgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHZvaWQgc2V0
QVZLaXRFbmFibGVkKGJvb2wgZmxhZykgeyBnQVZLaXRFbmFibGVkID0gZmxhZzsgfQogICAgIHN0
YXRpYyBib29sIGF2S2l0RW5hYmxlZCgpIHsgcmV0dXJuIGdBVktpdEVuYWJsZWQ7IH0KKworICAg
IHN0YXRpYyB2b2lkIHNldFNob3VsZE9wdE91dE9mTmV0d29ya1N0YXRlT2JzZXJ2YXRpb24oYm9v
bCBmbGFnKSB7IGdTaG91bGRPcHRPdXRPZk5ldHdvcmtTdGF0ZU9ic2VydmF0aW9uID0gZmxhZzsg
fQorICAgIHN0YXRpYyBib29sIHNob3VsZE9wdE91dE9mTmV0d29ya1N0YXRlT2JzZXJ2YXRpb24o
KSB7IHJldHVybiBnU2hvdWxkT3B0T3V0T2ZOZXR3b3JrU3RhdGVPYnNlcnZhdGlvbjsgfQogI2Vu
ZGlmCiAKIHByaXZhdGU6CkBAIC0zNTMsNiArMzU2LDcgQEAgcHJpdmF0ZToKICNpZiBQTEFURk9S
TShJT1MpCiAgICAgc3RhdGljIGJvb2wgZ05ldHdvcmtEYXRhVXNhZ2VUcmFja2luZ0VuYWJsZWQ7
CiAgICAgc3RhdGljIGJvb2wgZ0FWS2l0RW5hYmxlZDsKKyAgICBzdGF0aWMgYm9vbCBnU2hvdWxk
T3B0T3V0T2ZOZXR3b3JrU3RhdGVPYnNlcnZhdGlvbjsKICNlbmRpZgogCiAgICAgc3RhdGljIGRv
dWJsZSBnSGlkZGVuUGFnZURPTVRpbWVyQWxpZ25tZW50SW50ZXJ2YWw7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdGF0ZU5vdGlmaWVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0YXRlTm90aWZpZXIuY3Bw
CmluZGV4IDMxZmFiOGYwNzEwMjMwZTAzYTg5ZDkzNGFkNzY5YmM4N2I3NDIyODcuLjNmNzQ1ZTkw
OWYxNTQ2Njk4YzYxNGQ1MzFjYTdiMmI1ZDVhYTdjZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0YXRlTm90aWZpZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0YXRlTm90aWZpZXIuY3BwCkBAIC0y
Niw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTmV0d29ya1N0YXRl
Tm90aWZpZXIuaCIKIAorI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSA8bXV0ZXg+CiAj
aW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+
CkBAIC00NywxMSArNDgsMTYgQEAgTmV0d29ya1N0YXRlTm90aWZpZXImIG5ldHdvcmtTdGF0ZU5v
dGlmaWVyKCkKIHZvaWQgTmV0d29ya1N0YXRlTm90aWZpZXI6OmFkZE5ldHdvcmtTdGF0ZUNoYW5n
ZUxpc3RlbmVyKHN0ZDo6ZnVuY3Rpb248dm9pZCAoYm9vbCk+IGxpc3RlbmVyKQogewogICAgIEFT
U0VSVChsaXN0ZW5lcik7CisjaWYgUExBVEZPUk0oSU9TKQorICAgIGlmIChTZXR0aW5nczo6c2hv
dWxkT3B0T3V0T2ZOZXR3b3JrU3RhdGVPYnNlcnZhdGlvbigpKQorICAgICAgICByZXR1cm47Cisg
ICAgcmVnaXN0ZXJPYnNlcnZlcklmTmVjZXNzYXJ5KCk7CisjZW5kaWYKIAogICAgIG1fbGlzdGVu
ZXJzLmFwcGVuZChzdGQ6Om1vdmUobGlzdGVuZXIpKTsKIH0KIAotdm9pZCBOZXR3b3JrU3RhdGVO
b3RpZmllcjo6bm90aWZ5TmV0d29ya1N0YXRlQ2hhbmdlKCkKK3ZvaWQgTmV0d29ya1N0YXRlTm90
aWZpZXI6Om5vdGlmeU5ldHdvcmtTdGF0ZUNoYW5nZSgpIGNvbnN0CiB7CiAgICAgZm9yIChjb25z
dCBhdXRvJiBsaXN0ZW5lciA6IG1fbGlzdGVuZXJzKQogICAgICAgICBsaXN0ZW5lcihtX2lzT25M
aW5lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29y
a1N0YXRlTm90aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29y
a1N0YXRlTm90aWZpZXIuaAppbmRleCBkN2RjMzllZjE5MTAwMDZkOTU3NTA5NjEwYzExZjRjZjgw
N2E4YzlmLi41ZTVmODAwNDZlNDg5OGEzODE3YzY3ZDM3OGRhNzEyOWViZDk3YmM3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdGF0ZU5vdGlmaWVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RhdGVOb3Rp
Zmllci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJ
bmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTQgQXBw
bGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC00OCw2ICs0OCwxMSBAQCB0eXBlZGVmIGNvbnN0IHN0cnVjdCBfX1NDRHluYW1pY1N0
b3JlICogU0NEeW5hbWljU3RvcmVSZWY7CiB0eXBlZGVmIHN0cnVjdCBfRWNvcmVfRmRfSGFuZGxl
ciBFY29yZV9GZF9IYW5kbGVyOwogdHlwZWRlZiB1bnNpZ25lZCBjaGFyIEVpbmFfQm9vbDsKIAor
I2VsaWYgUExBVEZPUk0oSU9TKQorCisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorT0JKQ19D
TEFTUyBXZWJOZXR3b3JrU3RhdGVPYnNlcnZlcjsKKwogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKQEAgLTU2LDIyICs2MSwyMCBAQCBjbGFzcyBOZXR3b3JrU3RhdGVOb3RpZmllciB7CiAg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTmV0d29ya1N0YXRlTm90aWZpZXIpOyBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBOZXR3b3JrU3RhdGVOb3RpZmllcigpOwotI2lm
IFBMQVRGT1JNKEVGTCkKKyNpZiBQTEFURk9STShFRkwpIHx8IFBMQVRGT1JNKElPUykKICAgICB+
TmV0d29ya1N0YXRlTm90aWZpZXIoKTsKICNlbmRpZgogICAgIHZvaWQgYWRkTmV0d29ya1N0YXRl
Q2hhbmdlTGlzdGVuZXIoc3RkOjpmdW5jdGlvbjx2b2lkIChib29sIGlzT25MaW5lKT4pOwogCi0g
ICAgYm9vbCBvbkxpbmUoKSBjb25zdCB7IHJldHVybiBtX2lzT25MaW5lOyB9Ci0gICAgCi0jaWYg
UExBVEZPUk0oSU9TKQotICAgIHZvaWQgc2V0SXNPbkxpbmUoYm9vbCk7Ci0jZW5kaWYKKyAgICBi
b29sIG9uTGluZSgpIGNvbnN0OwogCiBwcml2YXRlOgorI2lmICFQTEFURk9STShJT1MpCiAgICAg
Ym9vbCBtX2lzT25MaW5lOworI2VuZGlmCiAgICAgVmVjdG9yPHN0ZDo6ZnVuY3Rpb248dm9pZCAo
Ym9vbCk+PiBtX2xpc3RlbmVyczsKIAotICAgIHZvaWQgbm90aWZ5TmV0d29ya1N0YXRlQ2hhbmdl
KCk7CisgICAgdm9pZCBub3RpZnlOZXR3b3JrU3RhdGVDaGFuZ2UoKSBjb25zdDsKICAgICB2b2lk
IHVwZGF0ZVN0YXRlKCk7CiAKICNpZiBQTEFURk9STShNQUMpCkBAIC05Nyw2ICsxMDAsMTQgQEAg
cHJpdmF0ZToKIAogICAgIGludCBtX25ldGxpbmtTb2NrZXQ7CiAgICAgRWNvcmVfRmRfSGFuZGxl
ciogbV9mZEhhbmRsZXI7CisKKyNlbGlmIFBMQVRGT1JNKElPUykKKyAgICB2b2lkIHJlZ2lzdGVy
T2JzZXJ2ZXJJZk5lY2Vzc2FyeSgpIGNvbnN0OworICAgIGZyaWVuZCB2b2lkIHNldE9uTGluZShj
b25zdCBOZXR3b3JrU3RhdGVOb3RpZmllciosIGJvb2wpOworCisgICAgbXV0YWJsZSBib29sIG1f
aXNPbkxpbmU7CisgICAgbXV0YWJsZSBib29sIG1faXNPbkxpbmVJbml0aWFsaXplZDsKKyAgICBt
dXRhYmxlIFJldGFpblB0cjxXZWJOZXR3b3JrU3RhdGVPYnNlcnZlcj4gbV9vYnNlcnZlcjsKICNl
bmRpZgogfTsKIApAQCAtMTExLDggKzEyMiwxNSBAQCBpbmxpbmUgdm9pZCBOZXR3b3JrU3RhdGVO
b3RpZmllcjo6dXBkYXRlU3RhdGUoKSB7IH0KIAogI2VuZGlmCiAKKyNpZiAhUExBVEZPUk0oSU9T
KQoraW5saW5lIGJvb2wgTmV0d29ya1N0YXRlTm90aWZpZXI6Om9uTGluZSgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1faXNPbkxpbmU7Cit9CisjZW5kaWYKKwogTmV0d29ya1N0YXRlTm90aWZpZXIm
IG5ldHdvcmtTdGF0ZU5vdGlmaWVyKCk7CiAKLX07Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
ICNlbmRpZiAvLyBOZXR3b3JrU3RhdGVOb3RpZmllcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9OZXR3b3JrU3RhdGVOb3RpZmllcklPUy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9OZXR3b3JrU3RhdGVOb3RpZmllcklP
Uy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDllZDZhMDg3ODVjZWU4ZGRmNDcw
NzBkYmVmMjZhNjFjNDdiODJkMzUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvTmV0d29ya1N0
YXRlTm90aWZpZXJJT1MuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmln
LmgiCi0jaW5jbHVkZSAiTmV0d29ya1N0YXRlTm90aWZpZXIuaCIKLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1OZXR3b3JrU3RhdGVOb3RpZmllcjo6TmV0d29ya1N0YXRlTm90aWZpZXIoKQotICAg
IDogbV9pc09uTGluZShmYWxzZSkKLXsKLX0KLQotdm9pZCBOZXR3b3JrU3RhdGVOb3RpZmllcjo6
c2V0SXNPbkxpbmUoYm9vbCBpc09uTGluZSkKLXsKLSAgICBpZiAobV9pc09uTGluZSA9PSBpc09u
TGluZSkKLSAgICAgICAgcmV0dXJuOwotICAgIG1faXNPbkxpbmUgPSBpc09uTGluZTsKLSAgICBu
b3RpZnlOZXR3b3JrU3RhdGVDaGFuZ2UoKTsKLX0KLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvTmV0d29ya1N0YXRlTm90aWZpZXJJT1MubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9OZXR3b3JrU3RhdGVOb3RpZmllcklP
Uy5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5lNWI1YzMwZjk5ZWJlYmE5MjZjZjdjMDU0NThiOTExZTU3YmI0ODRh
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3Mv
TmV0d29ya1N0YXRlTm90aWZpZXJJT1MubW0KQEAgLTAsMCArMSwxMjEgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDgsIDIwMTQgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2ltcG9ydCAiY29uZmln
LmgiCisjaW1wb3J0ICJOZXR3b3JrU3RhdGVOb3RpZmllci5oIgorCisjaW1wb3J0ICJTb2Z0TGlu
a2luZy5oIgorI2ltcG9ydCAiV2ViQ29yZVRocmVhZFJ1bi5oIgorCisjaWYgZGVmaW5lZChfX2hh
c19pbmNsdWRlKSAmJiBfX2hhc19pbmNsdWRlKDxBcHBTdXBwb3J0L0NQTmV0d29ya09ic2VydmVy
Lmg+KQorI2ltcG9ydCA8QXBwU3VwcG9ydC9DUE5ldHdvcmtPYnNlcnZlci5oPgorI2Vsc2UKK2V4
dGVybiBOU1N0cmluZyAqIGNvbnN0IENQTmV0d29ya09ic2VydmVyUmVhY2hhYmxlOworQGludGVy
ZmFjZSBDUE5ldHdvcmtPYnNlcnZlciA6IE5TT2JqZWN0CisrIChDUE5ldHdvcmtPYnNlcnZlciAq
KXNoYXJlZE5ldHdvcmtPYnNlcnZlcjsKKy0gKHZvaWQpYWRkTmV0d29ya1JlYWNoYWJsZU9ic2Vy
dmVyOihpZClvYnNlcnZlciBzZWxlY3RvcjooU0VMKXNlbGVjdG9yOworLSAodm9pZClyZW1vdmVO
ZXR3b3JrUmVhY2hhYmxlT2JzZXJ2ZXI6KGlkKW9ic2VydmVyOworLSAoQk9PTClpc05ldHdvcmtS
ZWFjaGFibGU7CitAZW5kCisjZW5kaWYKKworU09GVF9MSU5LX1BSSVZBVEVfRlJBTUVXT1JLKEFw
cFN1cHBvcnQpOworU09GVF9MSU5LX0NMQVNTKEFwcFN1cHBvcnQsIENQTmV0d29ya09ic2VydmVy
KTsKK1NPRlRfTElOS19QT0lOVEVSKEFwcFN1cHBvcnQsIENQTmV0d29ya09ic2VydmVyUmVhY2hh
YmxlLCBOU1N0cmluZyAqKTsKKworQGludGVyZmFjZSBXZWJOZXR3b3JrU3RhdGVPYnNlcnZlciA6
IE5TT2JqZWN0CitAcHJvcGVydHkgKG5vbmF0b21pYykgY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0
YXRlTm90aWZpZXIqIG5vdGlmaWVyOworLSAoaWQpaW5pdFdpdGhOb3RpZmllcjooY29uc3QgV2Vi
Q29yZTo6TmV0d29ya1N0YXRlTm90aWZpZXIqKW5vdGlmaWVyOworLSAodm9pZCluZXR3b3JrU3Rh
dGVDaGFuZ2VkOihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbjsKK0BlbmQKKworQGltcGxl
bWVudGF0aW9uIFdlYk5ldHdvcmtTdGF0ZU9ic2VydmVyCisKKy0gKGlkKWluaXRXaXRoTm90aWZp
ZXI6KGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdGF0ZU5vdGlmaWVyKilub3RpZmllcgoreworICAg
IEFTU0VSVF9BUkcobm90aWZpZXIsIG5vdGlmaWVyKTsKKyAgICBpZiAoIShzZWxmID0gW3N1cGVy
IGluaXRdKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICBfbm90aWZpZXIgPSBub3RpZmllcjsK
KyAgICBbW2dldENQTmV0d29ya09ic2VydmVyQ2xhc3MoKSBzaGFyZWROZXR3b3JrT2JzZXJ2ZXJd
IGFkZE5ldHdvcmtSZWFjaGFibGVPYnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxlY3RvcihuZXR3
b3JrU3RhdGVDaGFuZ2VkOildOworICAgIHJldHVybiBzZWxmOworfQorCistICh2b2lkKWRlYWxs
b2MKK3sKKyAgICBbW2dldENQTmV0d29ya09ic2VydmVyQ2xhc3MoKSBzaGFyZWROZXR3b3JrT2Jz
ZXJ2ZXJdIHJlbW92ZU5ldHdvcmtSZWFjaGFibGVPYnNlcnZlcjpzZWxmXTsKKyAgICBbc3VwZXIg
ZGVhbGxvY107Cit9CisKKy0gKHZvaWQpbmV0d29ya1N0YXRlQ2hhbmdlZDooTlNOb3RpZmljYXRp
b24gKilub3RpZmljYXRpb24KK3sKKyAgICBBU1NFUlRfQVJHKG5vdGlmaWNhdGlvbiwgbm90aWZp
Y2F0aW9uKTsKKyAgICBXZWJUaHJlYWRSdW4oXnsKKyAgICAgICAgc2V0T25MaW5lKF9ub3RpZmll
ciwgW1tbbm90aWZpY2F0aW9uIHVzZXJJbmZvXSBvYmplY3RGb3JLZXk6Z2V0Q1BOZXR3b3JrT2Jz
ZXJ2ZXJSZWFjaGFibGUoKV0gYm9vbFZhbHVlXSk7CisgICAgfSk7Cit9CisKK0BlbmQKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitOZXR3b3JrU3RhdGVOb3RpZmllcjo6TmV0d29ya1N0YXRlTm90
aWZpZXIoKQorICAgIDogbV9pc09uTGluZShmYWxzZSkKKyAgICAsIG1faXNPbkxpbmVJbml0aWFs
aXplZChmYWxzZSkKK3sKK30KKyAgICAKK05ldHdvcmtTdGF0ZU5vdGlmaWVyOjp+TmV0d29ya1N0
YXRlTm90aWZpZXIoKQoreworICAgIFttX29ic2VydmVyIHNldE5vdGlmaWVyOm51bGxwdHJdOwor
fQorCit2b2lkIE5ldHdvcmtTdGF0ZU5vdGlmaWVyOjpyZWdpc3Rlck9ic2VydmVySWZOZWNlc3Nh
cnkoKSBjb25zdAoreworICAgIGlmICghbV9vYnNlcnZlcikKKyAgICAgICAgbV9vYnNlcnZlciA9
IGFkb3B0TlMoW1tXZWJOZXR3b3JrU3RhdGVPYnNlcnZlciBhbGxvY10gaW5pdFdpdGhOb3RpZmll
cjp0aGlzXSk7Cit9CisKK2Jvb2wgTmV0d29ya1N0YXRlTm90aWZpZXI6Om9uTGluZSgpIGNvbnN0
Cit7CisgICAgcmVnaXN0ZXJPYnNlcnZlcklmTmVjZXNzYXJ5KCk7CisgICAgaWYgKCFtX2lzT25M
aW5lSW5pdGlhbGl6ZWQpIHsKKyAgICAgICAgbV9pc09uTGluZSA9IFtbZ2V0Q1BOZXR3b3JrT2Jz
ZXJ2ZXJDbGFzcygpIHNoYXJlZE5ldHdvcmtPYnNlcnZlcl0gaXNOZXR3b3JrUmVhY2hhYmxlXTsK
KyAgICAgICAgbV9pc09uTGluZUluaXRpYWxpemVkID0gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJu
IG1faXNPbkxpbmU7Cit9CisKK3ZvaWQgc2V0T25MaW5lKGNvbnN0IE5ldHdvcmtTdGF0ZU5vdGlm
aWVyKiBub3RpZmllciwgYm9vbCBvbkxpbmUpCit7CisgICAgQVNTRVJUX0FSRyhub3RpZmllciwg
bm90aWZpZXIpOworICAgIG5vdGlmaWVyLT5tX2lzT25MaW5lSW5pdGlhbGl6ZWQgPSB0cnVlOwor
ICAgIGlmIChvbkxpbmUgPT0gbm90aWZpZXItPm1faXNPbkxpbmUpCisgICAgICAgIHJldHVybjsK
KyAgICBub3RpZmllci0+bV9pc09uTGluZSA9IG9uTGluZTsKKyAgICBub3RpZmllci0+bm90aWZ5
TmV0d29ya1N0YXRlQ2hhbmdlKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCA3ZDY5NzIxYjc5NjhkYjNkZjgwZjUwNzA4
NzM4ODRiNmE5MzEyMmJlLi5iY2Y5Y2YzODI4ZGVkY2JmNTQwNzRlMzExM2M3MzFiNTM5ZDVlYmJm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KKysrIGIv
U291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCkBAIC0zNjA0LDExICszNjA0LDkg
QEAgLSAoQk9PTClfYWxsb3dzTWVzc2FnaW5nCiAgICAgcmV0dXJuIF9wcml2YXRlLT5hbGxvd3NN
ZXNzYWdpbmc7CiB9CiAKKy8vIEZJWE1FOiBSZW1vdmUgb25jZSB0aGlzIGlzIG5vIGxvbmdlciBu
ZWNlc3NhcnkgZm9yIFVJS2l0IGJpbmFyeSBjb21wYXRpYmlsaXR5LgogLSAodm9pZClfc2V0TmV0
d29ya1N0YXRlSXNPbmxpbmU6KEJPT0wpaXNPbkxpbmUKIHsKLSAgICBXZWJUaHJlYWRSdW4oXnsK
LSAgICAgICAgbmV0d29ya1N0YXRlTm90aWZpZXIoKS5zZXRJc09uTGluZShpc09uTGluZSk7Ci0g
ICAgfSk7CiB9CiAKIC0gKHZvaWQpX3NldEZpeGVkTGF5b3V0U2l6ZTooQ0dTaXplKXNpemUKQEAg
LTM2OTcsNiArMzY5NSwxMSBAQCAtICh2b2lkKV9vdmVyZmxvd1Njcm9sbFBvc2l0aW9uQ2hhbmdl
ZFRvOihDR1BvaW50KW9mZnNldCBmb3JOb2RlOihET01Ob2RlICopZG9tTgogCiAgICAgZnJhbWUt
Pm92ZXJmbG93U2Nyb2xsUG9zaXRpb25DaGFuZ2VkRm9yTm9kZShyb3VuZGVkSW50UG9pbnQob2Zm
c2V0KSwgbm9kZSwgdXNlclNjcm9sbCk7CiB9CisKKysgKHZvaWQpX2RvTm90U3RhcnRPYnNlcnZp
bmdOZXR3b3JrUmVhY2hhYmlsaXR5Cit7CisgICAgU2V0dGluZ3M6OnNldFNob3VsZE9wdE91dE9m
TmV0d29ya1N0YXRlT2JzZXJ2YXRpb24odHJ1ZSk7Cit9CiAjZW5kaWYgLy8gUExBVEZPUk0oSU9T
KQogCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViVmlld1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViVmlld1ByaXZhdGUuaAppbmRleCA5YmNkN2U1NjA3NTkzNmJiMjE4YmU3N2I3Y2IyZDFkMDJh
NTFkMzI0Li5jOGM1M2VmMzYwYWZhNWJiZGVjNmY0NzExZTMxZTViYTQwYjk5NmQ2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdQcml2YXRlLmgKKysrIGIvU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oCkBAIC01NzIsOCArNTcyLDYg
QEAgQ291bGQgYmUgd29ydGggYWRkaW5nIHRvIHRoZSBBUEkuCiAtICh2b2lkKV9zZXRBbGxvd3NN
ZXNzYWdpbmc6KEJPT0wpYUZsYWc7CiAtIChCT09MKV9hbGxvd3NNZXNzYWdpbmc7CiAKLS0gKHZv
aWQpX3NldE5ldHdvcmtTdGF0ZUlzT25saW5lOihCT09MKWlzT25MaW5lOwotCiAtICh2b2lkKV9z
ZXRDdXN0b21GaXhlZFBvc2l0aW9uTGF5b3V0UmVjdEluV2ViVGhyZWFkOihDR1JlY3QpcmVjdCBz
eW5jaHJvbml6ZTooQk9PTClzeW5jaHJvbml6ZTsKIC0gKHZvaWQpX3NldEN1c3RvbUZpeGVkUG9z
aXRpb25MYXlvdXRSZWN0OihDR1JlY3QpcmVjdDsKIApAQCAtNTgzLDYgKzU4MSwxMyBAQCBDb3Vs
ZCBiZSB3b3J0aCBhZGRpbmcgdG8gdGhlIEFQSS4KIC0gKHZvaWQpX292ZXJmbG93U2Nyb2xsUG9z
aXRpb25DaGFuZ2VkVG86KENHUG9pbnQpb2Zmc2V0IGZvck5vZGU6KERPTU5vZGUgKilub2RlIGlz
VXNlclNjcm9sbDooQk9PTCl1c2VyU2Nyb2xsOwogCiAtIChOU0FycmF5ICopX3RvdWNoRXZlbnRS
ZWdpb25zOworCisvKiEKKyAgICBAbWV0aG9kIF9kb05vdFN0YXJ0T2JzZXJ2aW5nTmV0d29ya1Jl
YWNoYWJpbGl0eQorICAgIEBhYnN0cmFjdCBEb2VzIG5vdCBzdGFydCBvYnNlcnZhdGlvbiBvZiBu
ZXR3b3JrIHJlYWNoYWJpbGl0eSBpbiBhbnkgV2ViVmlldy4KKyAgICBAZGlzY3Vzc2lvbiBUbyB0
YWtlIGVmZmVjdCwgdGhpcyBtZXRob2QgbXVzdCBiZSBjYWxsZWQgYmVmb3JlIHRoZSBmaXJzdCBX
ZWJWaWV3IGlzIGNyZWF0ZWQuCisgKi8KKysgKHZvaWQpX2RvTm90U3RhcnRPYnNlcnZpbmdOZXR3
b3JrUmVhY2hhYmlsaXR5OwogI2VuZGlmCiAKICNpZiAhVEFSR0VUX09TX0lQSE9ORQo=
</data>
<flag name="review"
          id="249434"
          type_id="1"
          status="+"
          setter="mitz"
    />
          </attachment>
      

    </bug>

</bugzilla>