Return-Path: <oracle-l-bounce@freelists.org>
X-Original-To: oracle-l@orafaq.com
Delivered-To: oracle-l@orafaq.com
Received: from smtp-aa.freelists.org (smtp-aa.freelists.org [23.23.80.81])
 by malta2546.startdedicated.com (Postfix) with ESMTPS id 9A4D9100315764
 for <oracle-l@orafaq.com>; Sun, 10 Oct 2021 20:22:33 +0200 (CEST)
Received: from turing.freelists.org (ip-10-0-0-164.ec2.internal [10.0.0.164])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
	 key-exchange X25519 server-signature RSA-PSS (2048 bits))
 (No client certificate requested)
 by smtp-aa.freelists.org (Avenir Technologies Mail Multiplex) with ESMTPS id 4213F4099F;
 Sun, 10 Oct 2021 18:22:32 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by turing.freelists.org (Postfix) with ESMTP id 343773F7B9;
 Sun, 10 Oct 2021 18:22:32 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=freelists.org;
 s=turing; t=1633890152;
 bh=2HCD8TB4Y65Ct4wDDNoEV+41GhLb1ceWI8iP8GTSzoI=;
 h=From:Sender:Sender:From;
 b=cCjNTZLLAgThuCakaQWZ1/0mPriP6SjdrGBIeSb2vlYVoxQ1oHlcD+q9Mitb/8lZL
	 3ytH4/67xA/qhq9JDO4W0ceA+3mqgmaHVsRTWZ+h7y316JtJKZpzhf9zwRBfreHvhK
	 e2/KYDtpPK9esuiFzIZp4xkk+udOLHLtES8rGHwk=
X-Virus-Scanned: by FreeLists at turing.freelists.org
Received: from turing.freelists.org ([127.0.0.1])
 by localhost (turing.freelists.org [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id Vo0wVT-_rqlB; Sun, 10 Oct 2021 18:22:32 +0000 (UTC)
Received: from turing.freelists.org (localhost [127.0.0.1])
 by turing.freelists.org (Postfix) with ESMTP id 05B323F7BA;
 Sun, 10 Oct 2021 18:22:29 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=freelists.org;
 s=turing; t=1633890150;
 bh=2HCD8TB4Y65Ct4wDDNoEV+41GhLb1ceWI8iP8GTSzoI=;
 h=From:Sender:Sender:From;
 b=i+q9/X/9GJTpN/rrZEt7fZptbh6VLNRZ5knzAOw6VY/go83bqkbWWgInQMLogbTqX
	 0UZYSV1dBAShdTWnXGzFvTjDiJvc0yVpo5eGRF54AWPBfLYo5ge4wDUCSjaPHUA19y
	 HNnhGaoN+2RYBuB1ZS2K+ihlz0hLTReB3XmozMRM=
Received: with ECARTIS (v1.0.0; list oracle-l); Sun, 10 Oct 2021 18:22:27 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by turing.freelists.org (Postfix) with ESMTP id 75AF93F7B9
 for <oracle-l@freelists.org>; Sun, 10 Oct 2021 18:22:27 +0000 (UTC)
Authentication-Results: turing.freelists.org;
 dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=oRluO8Tl;
 dkim-atps=neutral
Received: from turing.freelists.org ([127.0.0.1])
 by localhost (turing.freelists.org [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id buKrHVHPWcRv for <oracle-l@freelists.org>;
 Sun, 10 Oct 2021 18:22:27 +0000 (UTC)
Received: from mail-qv1-f42.google.com (mail-qv1-f42.google.com [209.85.219.42])
 (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)
	 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 by turing.freelists.org (Postfix) with ESMTPS id 568CA3F5F7
 for <oracle-l@freelists.org>; Sun, 10 Oct 2021 18:22:27 +0000 (UTC)
Received: by mail-qv1-f42.google.com with SMTP id z15so9669278qvj.7
        for <oracle-l@freelists.org>; Sun, 10 Oct 2021 11:22:27 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20210112;
        h=x-gm-message-state:mime-version:references:in-reply-to:from:date
         :message-id:subject:to;
        bh=58qjVUYeMe6pPB/HBfVIHdJrDl1h43b8PyQ1hJq49Oo=;
        b=YqZACh4gbkxlIAjnnENjIB1JemJuOq6+x+bvbGDvcXa1PS5cJLPthSKVqTQlFSjGKC
         3f7jkJOA1NFCxrWXmIvnNC2mpYFXcUadxdtXUO8GPO12Cpxbb5wJ8Sri0fGqylT3hmbm
         G3gj3WsOyaJ3FgkYUm8xFJvBps9e+HnWbR/rt95geZX/X//wki5U7nUOciY9dNXKcmw0
         l5JksWs+xC23VvNhzcCZAeXZ+I5cyK6dnw67OH/HlDFxxosQLoD+3cqFepQ6XToXi/qX
         InGFYC13I9aE0TWtWZ4WqzkePWX+dK48F/s2zmNcgsR2kJIz0xfcTMP4h+PUasxa42wy
         UDYQ==
X-Gm-Message-State: AOAM533jlNsFKCwsUkKOPiP5oHDwKWczIGmDQp0NCxbicN7NOHvYGR91
 WA8AYxnYKLPQ9ND3NNVdhl1I3Wa78PYgiaPMo3mvwwdgKDns2g==
X-Google-Smtp-Source: ABdhPJwhXKhh0ng69MVM8sQyJLWxSM/axXE3Pf/fBmPej5p09ttIUMZGRvo0EXM1vpNhqmSecPUopPF7OxPHQ+53mBo=
X-Received: by 2002:a05:6214:138b:: with SMTP id g11mr20091927qvz.57.1633890146907;
 Sun, 10 Oct 2021 11:22:26 -0700 (PDT)
MIME-Version: 1.0
References: <CAEjw_fjraKwNds2y+Ftzc5V0CjP_-SE0dVzaBEmvCcrpA4i=nQ@mail.gmail.com>
 <CAEjw_fi9J0ZO8OAcvhzZmNFKp+rUx9kvZ2vry5X8-qPkdXeUqA@mail.gmail.com>
 <CAGtsp8=TPb1Nn=C_x7_MG9wFw9NUc74LCGPgrDxZxgCpoE+4mA@mail.gmail.com>
 <CA+riqSVaqDFyabwGiVJOE7WHDbXKDaahFdQOz6-J_ZoH3sBuDA@mail.gmail.com>
 <CAEjw_fgLvtZP5zv+xCf_+zmsFUydU5DAE1rQ3WWAuzZVd+ZWbg@mail.gmail.com>
 <CAGtsp8mOX+kVxhzCj+WBcia6Wj-6TN5kXpScZZFO8M2sQJ-d7w@mail.gmail.com>
 <CAEjw_fhaB-2XFOnf=NpT5vmnFp3AJiu5KDdWvFYXhAEXs21dFw@mail.gmail.com> <CAKna9VaGzWx9-Tx-wr2M8LWX5b-wgDqh-37dDsOhGFE+o-ie0w@mail.gmail.com>
In-Reply-To: <CAKna9VaGzWx9-Tx-wr2M8LWX5b-wgDqh-37dDsOhGFE+o-ie0w@mail.gmail.com>
From: Jonathan Lewis <jlewisoracle@gmail.com>
Date: Sun, 10 Oct 2021 19:22:14 +0100
Message-ID: <CAGtsp8kw7RCW6FnyDdS9VXb78-4pyH6=biUz2bxyP7MGEh=MsQ@mail.gmail.com>
Subject: Re: question on table access by index rowid batched
To: Oracle L <oracle-l@freelists.org>, Lok P <loknath.73@gmail.com>
Content-Type: multipart/alternative; boundary="000000000000cef94905ce03b15f"
X-archive-position: 81111
X-ecartis-version: Ecartis v1.0.0
Sender: oracle-l-bounce@freelists.org
Errors-to: oracle-l-bounce@freelists.org
X-original-sender: jlewisoracle@gmail.com
Precedence: normal
Reply-To: jlewisoracle@gmail.com
List-Help: <mailto:ecartis@freelists.org?Subject=help>
List-Unsubscribe: <mailto:oracle-l-request@freelists.org?Subject=unsubscribe>
List-software: Ecartis version 1.0.0
List-Id: oracle-l <oracle-l.freelists.org>
X-List-ID: oracle-l <oracle-l.freelists.org>
List-Subscribe: <mailto:oracle-l-request@freelists.org?Subject=subscribe>
List-Owner: <mailto:>
List-post: <mailto:oracle-l@freelists.org>
List-Archive: <https://www.freelists.org/archive/oracle-l>
X-list: oracle-l
--000000000000cef94905ce03b15f
Content-Type: text/plain; charset="UTF-8"

@Lok P <loknath.73@gmail.com>

It's a pity you posted just a few minutes too early (or I posted a few
minutes too late).

It's NOT the statistics collector that takes time - part of the problem is
that the plan switches two joins from nested loops that operate relatively
efficiency to hash joins that (if you want the first few rows only)
introduce a initial delay.

But the biggest change in workload/timing then comes from the way the order
of the rowsource produced at operation 4 has been changed by using two hash
joins instead of two nested loop joins - resulting in randomised I/O
against a table that appears 60 lines further down the plan.

I've finally re-discovered the note I wrote about this ordering effect:
https://jonathanlewis.wordpress.com/2007/03/05/ordering/

Regards
Jonathan Lewis



On Sun, 10 Oct 2021 at 18:59, Lok P <loknath.73@gmail.com> wrote:

> I think you are correct. As Jonathan explained, the issue here is just
> because of the extra work added by the statistics collector operation which
> does the blocking/buffering operation to decide future Joins. But yes ~131
> seconds of blocking is too much for any first_rows/oltp/search query to
> wait for. And as you pointed out in one of the cases the same table access
> by index rowid operation took 5GB and other was less . And to which
> Jonathan highlighted, the difference in data pattern made that thing
> happen(which inturn was because of the statistics collector), looks
> interesting. I have never thought of that.
>
> We also have few of our OLTP environments on 19C but there we have
> optimizer_adaptive_plans itself set as false and we were planning to enable
> it based on certain inputs from other team members. Curious to know if
> others experienced such issues with first_rows type of queries with
> adaptive plans enabled and we should stop enabling it?
>
> On Sat, Oct 9, 2021 at 9:50 PM Pap <oracle.developer35@gmail.com> wrote:
>
>> Thank you Jonathan.
>>
>> There is a difference of ~350+ seconds between the run time of both the
>> plans and out of this, ~131 seconds is contributed by the statistics
>> collector which does the additional mathematics/counting to opt for the
>> best path at that moment (must be based on the runtime/actual cardinality
>> information). This query was actually a search query and running with
>> first_rows hint and customer expecting to see the result as first ~50 odd
>> rows asap on the screen but with the optimizer_adaptive_reporting_only
>> 'false' it was using another set of mathematics(or as you mentioned
>> multipasses) in this query adding significant overhead for this quick
>> query. So is it recommended to have this parameter set as 'true' mainly in
>> the oltp kind of environment ? Or should totally turn the key driver i.e.
>> optimizer_adpative_plan as false?
>>
>> Note -- Just to note, after the upgrade , I think the infra team just
>> kept it all default i.e. optimizer_adaptive_plan- true,
>> optimizer_adaptive_reporting_only- false, optimizer_adaptive_statistics-
>> false. So wondering if it's advisable/ and safe to change few to non
>> default?
>>
>> As you rightly explained, there seems to be no role of rowid batching in
>> this performance issue. Again, not much experience in reading
>> complex execution paths, but from the path initially I was interpreting, it
>> as both plans are exactly the same ,  with just the difference in 'rowid
>> batching operation. But from your explanation, I see I was completely
>> wrong.  Now, I can see in the good plan case it has read ~28million at step
>> ~46 for index TP_PK but in the bad plan case it is not noted in the sql
>> monitor. but conversely  ,  ~5GB data being read in the bad plan, at
>> step-59 with ~661k read requests and it resulted in ~770k rows there. But
>> in case of a good plan those bytes read and number of read requests are not
>> noted. So does this point to the fact that the statistics collector is
>> really playing a role in the order in which data results out from one
>> operation/step to another?
>>
>>
>> On Sat, Oct 9, 2021 at 4:49 PM Jonathan Lewis <jlewisoracle@gmail.com>
>> wrote:
>>
>>>
>>> Remember I was talking POSSIBILITIES in my previous post, not
>>> certainties.
>>>
>>> With the extra information you have now supplied I have a better
>>> hypothesis, based on the fact that you have adaptive_plans_enabled (which I
>>> should have realised in the first place), and that the plans you've
>>> supplied are different in exactly the TYPE of reason I suggested, but not
>>> for the exact reason. My basic hypothesis now is that when you enabled
>>> adaptive plans but set it to reporting only Oracle will always include the
>>> statistics collector operations, but it will not use them (i.e. not
>>> counting etc,) to make a decision about whether to take a hash join or a
>>> nested loop join. It will simply generate a path based on its first pass
>>> calculations.
>>>
>>> (You could check this with a suitable set of examples and testing with
>>> (a) adaptive plans enable (b) adaptive plans enabled but reporting only (c)
>>> adaptive plans disabled.  You'd need to set up 4 possibilities:  nlj
>>> changing to hj due to adaptive plans, hj changing to nlj due to adaptive
>>> plans, nlj not changing, hj not changing).
>>>
>>> So Looking at your SQL Monitor reports - lines 41 and 42 as a starting
>>> point:
>>>
>>> WIth reporting only = TRUE
>>>
>>> ==============================================================================================================================================================================
>>> | Id |                      Operation                       |
>>>   Name              |  Rows   | Cost  |   Time    | Start  | Execs |   Rows
>>>   | Read  | Read  |  Mem  |
>>> |    |                                                      |
>>>                     | (Estim) |       | Active(s) | Active |       |
>>> (Actual) | Reqs  | Bytes | (Max) |
>>>
>>> ===============================================================================================================================================================================
>>> | 41 |            INDEX RANGE SCAN                          | TCX_PK
>>>                    |       1 |     2 |       279 |     +2 |    2M |
>>> 2M |       |       |     . |
>>> | 42 |           INDEX RANGE SCAN                           | TCX_PK
>>>                    |       1 |     2 |           |        |       |
>>>  |       |       |     . |
>>>
>>> With reporting only = FALSE
>>>
>>> ===============================================================================================================================================================================================
>>> | Id |                      Operation                       |
>>>   Name              |  Rows   | Cost  |   Time    | Start  | Execs |   Rows
>>>   | Read  | Read  | Write | Write |  Mem  |
>>> |    |                                                      |
>>>                     | (Estim) |       | Active(s) | Active |       |
>>> (Actual) | Reqs  | Bytes | Reqs  | Bytes | (Max) |
>>>
>>> ===============================================================================================================================================================================================
>>> | 41 |            INDEX RANGE SCAN                          | TCX_PK
>>>                    |       1 |     2 |           |        |       |
>>>  |       |       |       |       |     . |
>>> | 42 |           INDEX RANGE SCAN                           | TCX_PK
>>>                    |       1 |     2 |         1 |   +131 |     1 |
>>> 976K |       |       |       |       |     . |
>>>
>>> These two lines are the options available as a result of a statistics
>>> collector further up the plan, and one plan takes operation 41, the other
>>> takes operation 42
>>>
>>> Putting them into context (adding in some parent and sibling rows)
>>>
>>> Reporting only = true ... plan based on estimates
>>>
>>> ==============================================================================================================================================================================
>>> | Id |                      Operation                       |
>>>   Name              |  Rows   | Cost  |   Time    | Start  | Execs |   Rows
>>>   | Read  | Read  |  Mem  |
>>> |    |                                                      |
>>>                     | (Estim) |       | Active(s) | Active |       |
>>> (Actual) | Reqs  | Bytes | (Max) |
>>>
>>> ===============================================================================================================================================================================
>>> |  7 |         NESTED LOOPS OUTER                           |
>>>                     |       1 |    3M |       279 |     +2 |     1 |
>>> 2M |       |       |     . |          |                 |
>>> |  8 |          HASH JOIN OUTER                             |
>>>                     |       1 |    3M |       279 |     +2 |     1 |
>>> 2M |       |       |     . |
>>> |  9 |           NESTED LOOPS OUTER                         |
>>>                     |       1 |    3M |       279 |     +2 |     1 |
>>> 2M |       |       |     . |
>>> | 10 |            STATISTICS COLLECTOR                      |
>>>                     |         |       |       279 |     +2 |     1 |
>>> 2M |       |       |     . |
>>> | 11 |             NESTED LOOPS OUTER                       |
>>>                     |       1 |    3M |       279 |     +2 |     1 |
>>> 2M |       |       |     . |
>>>
>>> ...
>>> | 41 |            INDEX RANGE SCAN                          | TCX_PK
>>>                    |       1 |     2 |       279 |     +2 |    2M |
>>> 2M |       |       |     . |
>>> | 42 |           INDEX RANGE SCAN                           | TCX_PK
>>>                    |       1 |     2 |           |        |       |
>>>  |       |       |     . |
>>> | 43 |          TABLE ACCESS BY INDEX ROWID                 | TC
>>>                    |       1 |     2 |       279 |     +2 |    2M |
>>> 2M | 16037 | 125MB |     . |          |                 |
>>>
>>>
>>> Reporting only = false ... plan adapts to counting
>>> (OPTERATION 10 dictates a HASH JOIN where the estimated stats suggested
>>> NLJ)
>>>
>>> ===============================================================================================================================================================================================
>>> | Id |                      Operation                       |
>>>   Name              |  Rows   | Cost  |   Time    | Start  | Execs |   Rows
>>>   | Read  | Read  | Write | Write |  Mem  |
>>> |    |                                                      |
>>>                     | (Estim) |       | Active(s) | Active |       |
>>> (Actual) | Reqs  | Bytes | Reqs  | Bytes | (Max) |
>>>
>>> ===============================================================================================================================================================================================
>>> |  7 |         NESTED LOOPS OUTER                           |
>>>                     |       1 |    3M |        27 |   +131 |     1 |
>>> 2M |       |       |       |       |     . |
>>> |  8 |          HASH JOIN OUTER                             |
>>>                     |       1 |    3M |       155 |     +3 |     1 |
>>> 2M |  3035 |   1GB |  3035 |   1GB | 309MB |
>>> |  9 |           NESTED LOOPS OUTER                         |
>>>                     |       1 |    3M |       129 |     +3 |     1 |
>>> 2M |       |       |       |       |     . |
>>> | 10 |            STATISTICS COLLECTOR                      |
>>>                     |         |       |       129 |     +3 |     1 |
>>> 2M |       |       |       |       |     . |
>>> | 11 |             NESTED LOOPS OUTER                       |
>>>                     |       1 |    3M |       129 |     +3 |     1 |
>>> 2M |       |       |       |       |     . |
>>> ...
>>> | 41 |            INDEX RANGE SCAN                          | TCX_PK
>>>                    |       1 |     2 |           |        |       |
>>>  |       |       |       |       |     . |
>>> | 42 |           INDEX RANGE SCAN                           | TCX_PK
>>>                    |       1 |     2 |         1 |   +131 |     1 |
>>> 976K |       |       |       |       |     . |
>>> | 43 |          TABLE ACCESS BY INDEX ROWID                 | TC
>>>                    |       1 |     2 |        27 |   +131 |    2M |
>>> 2M | 21549 | 168MB |       |       |     . |
>>>
>>>
>>> As you can see, the ability to switch plans makes a big difference to
>>> the amount of time Oracle spends working before it starts executing step 7
>>> (start time = +2 seconds vs. +131 seconds).
>>>
>>> This one extract from the plans doesn't answer the question about why
>>> "table access by index rowid batched" has appeared; nor does it explain the
>>> total difference between the two executions because you also need to look
>>> at the statistics collector at operation 6 and the impact that has on which
>>> of operation 45/46 and 47/48 get chosen. The other point that then comes up
>>> is that the order in which data appears from a hash join is (almost
>>> certainly) different from the order it appears from a nested loop join -
>>> which means that when you use the result of the join to probe other tables
>>> by index the order of the driving data from one join may be roughly in line
>>> with the indexes and data from the next table(s) in the join and benefit
>>> from a lot of "self-induced" caching, while the other join might produce
>>> data in what is effectively a randomised order resulting in "self-flushing"
>>> and more random reads - and that might explain what happens at operations
>>> 60/61
>>>
>>> What my observations suggest is a good argument for why you had such a
>>> difference in performance, and that it had nothing to do with the batching
>>> or not of the table access by rowid.
>>>
>>> I may write this up in more detail as a blog some day, but I don't have
>>> time right now.
>>>
>>> Regards
>>> Jonathan Lewis
>>>
>>>
>>>
>>>
>>>
>>> On Fri, 8 Oct 2021 at 18:34, Pap <oracle.developer35@gmail.com> wrote:
>>>
>>>>   It's fluctuating. I am now not able to reproduce the scenario for
>>>> that same small query for which I had posted here just before.  And you are
>>>> correct , I was luckily having sql monitors saved. I am attaching those
>>>> here. If you see that, the main query was showing those rowid batched
>>>> operations when we have the  optimizer_adaptive_reporting_only set as
>>>> default/false and was taking a long time to finish and also the first few
>>>> rows were also taking longer to get produced out of the query. But the
>>>> sample small query which i had posted a cursor plan for was just showing
>>>> the opposite behaviour. That is going for a rowid batched path when
>>>> optimizer_adaptive_reporting_only sets as true.
>>>>
>>>> However,  now I am seeing that same small query in both the cases
>>>> (irrespective of value of optimizer_adaptive_reporting_only) going for
>>>> 'rowid batched' execution path. Not sure if it's just stats or
>>>> anything else influencing and I am seeing different things behaviour. Just
>>>> to note we have 'optimizer_adaptive_plans' set to true ,
>>>> 'optimizer_adaptive_statistics' set  to false. The only change we made was
>>>> moving ' optimizer_adaptive_reporting_only' from false to true.
>>>>
>>>> And Jonathan when you said the optimizer_adaptive_reporting_only = true
>>>> will introduce 'statistics collector' operation, but if you see the
>>>> attached sql monitor for the main query, i am seeing 'statistics collector'
>>>> even when optimizer_adaptive_reporting_only is = false. Is that expected
>>>> behaviour?
>>>>
>>>>
>>>>
>>>
>>>
>>>

--000000000000cef94905ce03b15f
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: base64

PGRpdiBkaXI9Imx0ciI+PGRpdj48YnI+PC9kaXY+PGRpdj48YSBjbGFzcz0iZ21haWxfcGx1c3Jl
cGx5IiBpZD0icGx1c1JlcGx5Q2hpcC00IiBocmVmPSJtYWlsdG86bG9rbmF0aC43M0BnbWFpbC5j
b20iIHRhYmluZGV4PSItMSI+QExvayBQPC9hPiA8YnI+PC9kaXY+PGRpdj48YnI+PC9kaXY+PGRp
dj5JdCYjMzk7cyBhIHBpdHkgeW91IHBvc3RlZCBqdXN0IGEgZmV3IG1pbnV0ZXMgdG9vIGVhcmx5
IChvciBJIHBvc3RlZCBhIGZldyBtaW51dGVzIHRvbyBsYXRlKS48L2Rpdj48ZGl2Pjxicj48L2Rp
dj48ZGl2Pkl0JiMzOTtzIE5PVCB0aGUgc3RhdGlzdGljcyBjb2xsZWN0b3IgdGhhdCB0YWtlcyB0
aW1lIC0gcGFydCBvZiB0aGUgcHJvYmxlbSBpcyB0aGF0IHRoZSBwbGFuIHN3aXRjaGVzIHR3byBq
b2lucyBmcm9tIG5lc3RlZCBsb29wcyB0aGF0IG9wZXJhdGUgcmVsYXRpdmVseSBlZmZpY2llbmN5
IHRvIGhhc2ggam9pbnMgdGhhdCAoaWYgeW91IHdhbnQgdGhlIGZpcnN0IGZldyByb3dzIG9ubHkp
IGludHJvZHVjZSBhIGluaXRpYWwgZGVsYXkuPC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj5CdXQg
dGhlIGJpZ2dlc3QgY2hhbmdlIGluIHdvcmtsb2FkL3RpbWluZyB0aGVuIGNvbWVzIGZyb20gdGhl
IHdheSB0aGUgb3JkZXIgb2YgdGhlIHJvd3NvdXJjZSBwcm9kdWNlZCBhdCBvcGVyYXRpb24gNCBo
YXMgYmVlbiBjaGFuZ2VkIGJ5IHVzaW5nIHR3byBoYXNoIGpvaW5zIGluc3RlYWQgb2YgdHdvIG5l
c3RlZCBsb29wIGpvaW5zIC0gcmVzdWx0aW5nIGluIHJhbmRvbWlzZWQgSS9PIGFnYWluc3QgYSB0
YWJsZSB0aGF0IGFwcGVhcnMgNjAgbGluZXMgZnVydGhlciBkb3duIHRoZSBwbGFuLjwvZGl2Pjxk
aXY+PGJyPjwvZGl2PjxkaXY+SSYjMzk7dmUgZmluYWxseSByZS1kaXNjb3ZlcmVkIHRoZSBub3Rl
IEkgd3JvdGUgYWJvdXQgdGhpcyBvcmRlcmluZyBlZmZlY3Q6IDxhIGhyZWY9Imh0dHBzOi8vam9u
YXRoYW5sZXdpcy53b3JkcHJlc3MuY29tLzIwMDcvMDMvMDUvb3JkZXJpbmcvIj5odHRwczovL2pv
bmF0aGFubGV3aXMud29yZHByZXNzLmNvbS8yMDA3LzAzLzA1L29yZGVyaW5nLzwvYT48L2Rpdj48
ZGl2Pjxicj48L2Rpdj48ZGl2PlJlZ2FyZHM8L2Rpdj48ZGl2PkpvbmF0aGFuIExld2lzPC9kaXY+
PGRpdj48YnI+PC9kaXY+PGRpdj48YnI+PC9kaXY+PC9kaXY+PGJyPjxkaXYgY2xhc3M9ImdtYWls
X3F1b3RlIj48ZGl2IGRpcj0ibHRyIiBjbGFzcz0iZ21haWxfYXR0ciI+T24gU3VuLCAxMCBPY3Qg
MjAyMSBhdCAxODo1OSwgTG9rIFAgJmx0OzxhIGhyZWY9Im1haWx0bzpsb2tuYXRoLjczQGdtYWls
LmNvbSI+bG9rbmF0aC43M0BnbWFpbC5jb208L2E+Jmd0OyB3cm90ZTo8YnI+PC9kaXY+PGJsb2Nr
cXVvdGUgY2xhc3M9ImdtYWlsX3F1b3RlIiBzdHlsZT0ibWFyZ2luOjBweCAwcHggMHB4IDAuOGV4
O2JvcmRlci1sZWZ0OjFweCBzb2xpZCByZ2IoMjA0LDIwNCwyMDQpO3BhZGRpbmctbGVmdDoxZXgi
PjxkaXYgZGlyPSJsdHIiPkkgdGhpbmsgeW91IGFyZSBjb3JyZWN0LiBBcyBKb25hdGhhbiBleHBs
YWluZWQsIHRoZSBpc3N1ZSBoZXJlIGlzIGp1c3QgYmVjYXVzZSBvZiB0aGUgZXh0cmEgd29yayBh
ZGRlZCBieSB0aGUgc3RhdGlzdGljcyBjb2xsZWN0b3Igb3BlcmF0aW9uIHdoaWNoIGRvZXMgdGhl
IGJsb2NraW5nL2J1ZmZlcmluZyBvcGVyYXRpb24gdG/CoGRlY2lkZSBmdXR1cmXCoEpvaW5zLiBC
dXQgeWVzIH4xMzEgc2Vjb25kcyBvZiBibG9ja2luZyBpcyB0b28gbXVjaCBmb3IgYW55IGZpcnN0
X3Jvd3Mvb2x0cC9zZWFyY2ggcXVlcnkgdG8gd2FpdCBmb3IuIEFuZCBhcyB5b3UgcG9pbnRlZCBv
dXQgaW4gb25lIG9mIHRoZSBjYXNlcyB0aGUgc2FtZSB0YWJsZSBhY2Nlc3MgYnkgaW5kZXggcm93
aWQgb3BlcmF0aW9uIHRvb2sgNUdCIGFuZCBvdGhlcsKgd2FzIGxlc3MgLiBBbmQgdG8gd2hpY2gg
Sm9uYXRoYW4gaGlnaGxpZ2h0ZWQsIHRoZSBkaWZmZXJlbmNlIGluIGRhdGEgcGF0dGVybiBtYWRl
IHRoYXQgdGhpbmcgaGFwcGVuKHdoaWNoIGludHVybiB3YXMgYmVjYXVzZSBvZiB0aGUgc3RhdGlz
dGljcyBjb2xsZWN0b3IpLCBsb29rcyBpbnRlcmVzdGluZy4gSSBoYXZlIG5ldmVyIHRob3VnaHQg
b2YgdGhhdC48ZGl2Pjxicj48L2Rpdj48ZGl2PldlIGFsc28gaGF2ZSBmZXcgb2Ygb3VyIE9MVFAg
ZW52aXJvbm1lbnRzwqBvbiAxOUMgYnV0IHRoZXJlIHdlIGhhdmUgb3B0aW1pemVyX2FkYXB0aXZl
X3BsYW5zIGl0c2VsZiBzZXQgYXMgZmFsc2UgYW5kIHdlIHdlcmUgcGxhbm5pbmcgdG8gZW5hYmxl
IGl0IGJhc2VkIG9uIGNlcnRhaW4gaW5wdXRzIGZyb20gb3RoZXIgdGVhbcKgbWVtYmVycy4gQ3Vy
aW91cyB0byBrbm93IGlmIG90aGVycyBleHBlcmllbmNlZCBzdWNoIGlzc3VlcyB3aXRoIGZpcnN0
X3Jvd3MgdHlwZSBvZiBxdWVyaWVzIHdpdGggYWRhcHRpdmUgcGxhbnMgZW5hYmxlZCBhbmQgd2Ug
c2hvdWxkIHN0b3AgZW5hYmxpbmcgaXQ/PGJyPjwvZGl2PjwvZGl2Pjxicj48ZGl2IGNsYXNzPSJn
bWFpbF9xdW90ZSI+PGRpdiBkaXI9Imx0ciIgY2xhc3M9ImdtYWlsX2F0dHIiPk9uIFNhdCwgT2N0
IDksIDIwMjEgYXQgOTo1MCBQTSBQYXAgJmx0OzxhIGhyZWY9Im1haWx0bzpvcmFjbGUuZGV2ZWxv
cGVyMzVAZ21haWwuY29tIiB0YXJnZXQ9Il9ibGFuayI+b3JhY2xlLmRldmVsb3BlcjM1QGdtYWls
LmNvbTwvYT4mZ3Q7IHdyb3RlOjxicj48L2Rpdj48YmxvY2txdW90ZSBjbGFzcz0iZ21haWxfcXVv
dGUiIHN0eWxlPSJtYXJnaW46MHB4IDBweCAwcHggMC44ZXg7Ym9yZGVyLWxlZnQ6MXB4IHNvbGlk
IHJnYigyMDQsMjA0LDIwNCk7cGFkZGluZy1sZWZ0OjFleCI+PGRpdiBkaXI9Imx0ciI+VGhhbmsg
eW91IEpvbmF0aGFuLsKgPGRpdj48YnI+PGRpdj5UaGVyZSBpcyBhIGRpZmZlcmVuY2Ugb2YgfjM1
MCsgc2Vjb25kcyBiZXR3ZWVuIHRoZSBydW4gdGltZSBvZiBib3RoIHRoZSBwbGFucyBhbmQgb3V0
IG9mIHRoaXMsIH4xMzEgc2Vjb25kcyBpcyBjb250cmlidXRlZMKgYnkgdGhlIHN0YXRpc3RpY3Mg
Y29sbGVjdG9yIHdoaWNoIGRvZXMgdGhlIGFkZGl0aW9uYWwgbWF0aGVtYXRpY3MvY291bnRpbmcg
dG8gb3B0IGZvciB0aGUgYmVzdCBwYXRoIGF0IHRoYXQgbW9tZW50IChtdXN0IGJlIGJhc2VkIG9u
IHRoZSBydW50aW1lL2FjdHVhbCBjYXJkaW5hbGl0eSBpbmZvcm1hdGlvbikuIFRoaXMgcXVlcnkg
d2FzIGFjdHVhbGx5IGEgc2VhcmNoIHF1ZXJ5IGFuZCBydW5uaW5nIHdpdGggZmlyc3Rfcm93cyBo
aW50IGFuZCBjdXN0b21lciBleHBlY3RpbmcgdG8gc2VlIHRoZSByZXN1bHQgYXMgZmlyc3QgfjUw
IG9kZCByb3dzIGFzYXAgb24gdGhlIHNjcmVlbiBidXQgd2l0aCB0aGUgb3B0aW1pemVyX2FkYXB0
aXZlX3JlcG9ydGluZ19vbmx5ICYjMzk7ZmFsc2UmIzM5OyBpdCB3YXMgdXNpbmcgYW5vdGhlciBz
ZXQgb2YgbWF0aGVtYXRpY3Mob3IgYXMgeW91IG1lbnRpb25lZCBtdWx0aXBhc3NlcykgaW4gdGhp
cyBxdWVyeSBhZGRpbmcgc2lnbmlmaWNhbnQgb3ZlcmhlYWQgZm9yIHRoaXMgcXVpY2sgcXVlcnku
IFNvIGlzIGl0IHJlY29tbWVuZGVkIHRvIGhhdmUgdGhpcyBwYXJhbWV0ZXIgc2V0IGFzICYjMzk7
dHJ1ZSYjMzk7IG1haW5seSBpbiB0aGUgb2x0cCBraW5kIG9mIGVudmlyb25tZW50ID8gT3Igc2hv
dWxkwqB0b3RhbGx5IHR1cm4gdGhlIGtleSBkcml2ZXIgaS5lLiBvcHRpbWl6ZXJfYWRwYXRpdmVf
cGxhbiBhcyBmYWxzZT/CoDxkaXY+PGJyPjxkaXY+Tm90ZSAtLSBKdXN0IHRvIG5vdGUsIGFmdGVy
IHRoZSB1cGdyYWRlICwgSSB0aGluayB0aGUgaW5mcmEgdGVhbSBqdXN0IGtlcHQgaXQgYWxsIGRl
ZmF1bHTCoGkuZS4gb3B0aW1pemVyX2FkYXB0aXZlX3BsYW4tIHRydWUsIG9wdGltaXplcl9hZGFw
dGl2ZV9yZXBvcnRpbmdfb25seS0gZmFsc2UsIG9wdGltaXplcl9hZGFwdGl2ZV9zdGF0aXN0aWNz
LSBmYWxzZS4gU28gd29uZGVyaW5nIGlmIGl0JiMzOTtzIGFkdmlzYWJsZS8gYW5kIHNhZmUgdG8g
Y2hhbmdlIGZldyB0byBub24gZGVmYXVsdD88L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2Pjxi
cj48L2Rpdj48ZGl2PkFzIHlvdSByaWdodGx5IGV4cGxhaW5lZCwgdGhlcmUgc2VlbXMgdG8gYmUg
bm8gcm9sZSBvZiByb3dpZCBiYXRjaGluZyBpbiB0aGlzIHBlcmZvcm1hbmNlIGlzc3VlLiBBZ2Fp
biwgbm90IG11Y2ggZXhwZXJpZW5jZSBpbiByZWFkaW5nIGNvbXBsZXjCoGV4ZWN1dGlvbiBwYXRo
cywgYnV0IGZyb20gdGhlIHBhdGggaW5pdGlhbGx5IEkgd2FzIGludGVycHJldGluZywgaXQgYXMg
Ym90aCBwbGFucyBhcmUgZXhhY3RseSB0aGUgc2FtZcKgLMKgIHdpdGgganVzdCB0aGUgZGlmZmVy
ZW5jZSBpbiAmIzM5O3Jvd2lkIGJhdGNoaW5nIG9wZXJhdGlvbi4gQnV0IGZyb20geW91ciBleHBs
YW5hdGlvbiwgSSBzZWUgSSB3YXPCoGNvbXBsZXRlbHkgd3JvbmcuwqDCoE5vdywgSSBjYW4gc2Vl
IGluIHRoZSBnb29kIHBsYW4gY2FzZSBpdCBoYXMgcmVhZCB+MjhtaWxsaW9uIGF0IHN0ZXAgfjQ2
IGZvciBpbmRleCBUUF9QSyBidXQgaW4gdGhlIGJhZCBwbGFuIGNhc2UgaXQgaXPCoG5vdCBub3Rl
ZCBpbiB0aGUgc3FsIG1vbml0b3IuIGJ1dCBjb252ZXJzZWx5wqAgLMKgIH41R0IgZGF0YSBiZWlu
ZyByZWFkIGluIHRoZSBiYWQgcGxhbiwgYXQgc3RlcC01OSB3aXRoIH42NjFrIHJlYWQgcmVxdWVz
dHMgYW5kIGl0IHJlc3VsdGVkIGluwqB+NzcwayByb3dzIHRoZXJlLiBCdXQgaW4gY2FzZSBvZiBh
IGdvb2QgcGxhbiB0aG9zZSBieXRlcyByZWFkIGFuZCBudW1iZXIgb2YgcmVhZCByZXF1ZXN0cyBh
cmUgbm90IG5vdGVkLiBTbyBkb2VzIHRoaXMgcG9pbnQgdG8gdGhlIGZhY3QgdGhhdCB0aGUgc3Rh
dGlzdGljcyBjb2xsZWN0b3IgaXMgcmVhbGx5IHBsYXlpbmcgYSByb2xlIGluIHRoZSBvcmRlciBp
biB3aGljaCBkYXRhIHJlc3VsdHMgb3V0IGZyb20gb25lIG9wZXJhdGlvbi9zdGVwIHRvIGFub3Ro
ZXI/PC9kaXY+PGRpdj48YnI+PC9kaXY+PC9kaXY+PGJyPjxkaXYgY2xhc3M9ImdtYWlsX3F1b3Rl
Ij48ZGl2IGRpcj0ibHRyIiBjbGFzcz0iZ21haWxfYXR0ciI+T24gU2F0LCBPY3QgOSwgMjAyMSBh
dCA0OjQ5IFBNIEpvbmF0aGFuIExld2lzICZsdDs8YSBocmVmPSJtYWlsdG86amxld2lzb3JhY2xl
QGdtYWlsLmNvbSIgdGFyZ2V0PSJfYmxhbmsiPmpsZXdpc29yYWNsZUBnbWFpbC5jb208L2E+Jmd0
OyB3cm90ZTo8YnI+PC9kaXY+PGJsb2NrcXVvdGUgY2xhc3M9ImdtYWlsX3F1b3RlIiBzdHlsZT0i
bWFyZ2luOjBweCAwcHggMHB4IDAuOGV4O2JvcmRlci1sZWZ0OjFweCBzb2xpZCByZ2IoMjA0LDIw
NCwyMDQpO3BhZGRpbmctbGVmdDoxZXgiPjxkaXYgZGlyPSJsdHIiPjxkaXYgZGlyPSJsdHIiPjxk
aXY+PGJyPjwvZGl2PjxkaXY+UmVtZW1iZXIgSSB3YXMgdGFsa2luZyBQT1NTSUJJTElUSUVTIGlu
IG15IHByZXZpb3VzIHBvc3QsIG5vdCBjZXJ0YWludGllcy48L2Rpdj48ZGl2Pjxicj48L2Rpdj48
ZGl2PldpdGggdGhlIGV4dHJhIGluZm9ybWF0aW9uIHlvdSBoYXZlIG5vdyBzdXBwbGllZCBJIGhh
dmUgYSBiZXR0ZXIgaHlwb3RoZXNpcywgYmFzZWQgb24gdGhlIGZhY3QgdGhhdCB5b3UgaGF2ZSBh
ZGFwdGl2ZV9wbGFuc19lbmFibGVkICh3aGljaCBJIHNob3VsZCBoYXZlIHJlYWxpc2VkIGluIHRo
ZSBmaXJzdCBwbGFjZSksIGFuZCB0aGF0IHRoZSBwbGFucyB5b3UmIzM5O3ZlIHN1cHBsaWVkIGFy
ZSBkaWZmZXJlbnQgaW4gZXhhY3RseSB0aGUgVFlQRSBvZiByZWFzb24gSSBzdWdnZXN0ZWQsIGJ1
dCBub3QgZm9yIHRoZSBleGFjdCByZWFzb24uIE15IGJhc2ljIGh5cG90aGVzaXMgbm93IGlzIHRo
YXQgd2hlbiB5b3UgZW5hYmxlZCBhZGFwdGl2ZSBwbGFucyBidXQgc2V0IGl0IHRvIHJlcG9ydGlu
ZyBvbmx5IE9yYWNsZSB3aWxsIGFsd2F5cyBpbmNsdWRlIHRoZSBzdGF0aXN0aWNzIGNvbGxlY3Rv
ciBvcGVyYXRpb25zLCBidXQgaXQgd2lsbCBub3QgdXNlIHRoZW0gKGkuZS4gbm90IGNvdW50aW5n
IGV0YywpIHRvIG1ha2UgYSBkZWNpc2lvbiBhYm91dCB3aGV0aGVyIHRvIHRha2UgYSBoYXNoIGpv
aW4gb3IgYSBuZXN0ZWQgbG9vcCBqb2luLiBJdCB3aWxsIHNpbXBseSBnZW5lcmF0ZSBhIHBhdGgg
YmFzZWQgb24gaXRzIGZpcnN0IHBhc3MgY2FsY3VsYXRpb25zLiA8YnI+PC9kaXY+PGRpdj48YnI+
PC9kaXY+PGRpdj4oWW91IGNvdWxkIGNoZWNrIHRoaXMgd2l0aCBhIHN1aXRhYmxlIHNldCBvZiBl
eGFtcGxlcyBhbmQgdGVzdGluZyB3aXRoIChhKSBhZGFwdGl2ZSBwbGFucyBlbmFibGUgKGIpIGFk
YXB0aXZlIHBsYW5zIGVuYWJsZWQgYnV0IHJlcG9ydGluZyBvbmx5IChjKSBhZGFwdGl2ZSBwbGFu
cyBkaXNhYmxlZC7CoCBZb3UmIzM5O2QgbmVlZCB0byBzZXQgdXAgNCBwb3NzaWJpbGl0aWVzOsKg
IG5saiBjaGFuZ2luZyB0byBoaiBkdWUgdG8gYWRhcHRpdmUgcGxhbnMsIGhqIGNoYW5naW5nIHRv
IG5saiBkdWUgdG8gYWRhcHRpdmUgcGxhbnMsIA0KbmxqIG5vdCBjaGFuZ2luZywgaGogbm90IGNo
YW5naW5nKS48YnI+PC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj5TbyBMb29raW5nIGF0IHlvdXIg
U1FMIE1vbml0b3IgcmVwb3J0cyAtIGxpbmVzIDQxIGFuZCA0MiBhcyBhIHN0YXJ0aW5nIHBvaW50
OjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+V0l0aCByZXBvcnRpbmcgb25seSA9IFRSVUU8YnI+
PC9kaXY+PGRpdj49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT08YnI+fCBJZCB8IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg
T3BlcmF0aW9uIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHwgwqAgwqAgwqAgwqAg
wqAgwqAgTmFtZSDCoCDCoCDCoCDCoCDCoCDCoCDCoHwgwqBSb3dzIMKgIHwgQ29zdCDCoHwgwqAg
VGltZSDCoCDCoHwgU3RhcnQgwqB8IEV4ZWNzIHwgwqAgUm93cyDCoCB8IFJlYWQgwqB8IFJlYWQg
wqB8IMKgTWVtIMKgfDxicj58IMKgIMKgfCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC
oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoHwgwqAgwqAg
wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfCAoRXN0aW0pIHwgwqAgwqAg
wqAgfCBBY3RpdmUocykgfCBBY3RpdmUgfCDCoCDCoCDCoCB8IChBY3R1YWwpIHwgUmVxcyDCoHwg
Qnl0ZXMgfCAoTWF4KSB8PGJyPj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT08YnI+fCA0MSB8IMKgIMKgIMKgIMKgIMKgIMKgSU5ERVgg
UkFOR0UgU0NBTiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoHwgVENYX1BL
IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgfCDCoCDCoCDCoCAxIHwgwqAgwqAg
MiB8IMKgIMKgIMKgIDI3OSB8IMKgIMKgICsyIHwgwqAgwqAyTSB8IMKgIMKgIMKgIDJNIHwgwqAg
wqAgwqAgfCDCoCDCoCDCoCB8IMKgIMKgIC4gfDxicj58IDQyIHwgwqAgwqAgwqAgwqAgwqAgSU5E
RVggUkFOR0UgU0NBTiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB8IFRD
WF9QSyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoHwgwqAgwqAgwqAgMSB8IMKg
IMKgIDIgfCDCoCDCoCDCoCDCoCDCoCB8IMKgIMKgIMKgIMKgfCDCoCDCoCDCoCB8IMKgIMKgIMKg
IMKgIMKgfCDCoCDCoCDCoCB8IMKgIMKgIMKgIHwgwqAgwqAgLiB8PC9kaXY+PGRpdj48YnI+PC9k
aXY+PGRpdj5XaXRoIHJlcG9ydGluZyBvbmx5ID0gRkFMU0U8YnI+PC9kaXY+PGRpdj49PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PTxicj58IElkIHwgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBP
cGVyYXRpb24gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfCDCoCDCoCDCoCDCoCDC
oCDCoCBOYW1lIMKgIMKgIMKgIMKgIMKgIMKgIMKgfCDCoFJvd3MgwqAgfCBDb3N0IMKgfCDCoCBU
aW1lIMKgIMKgfCBTdGFydCDCoHwgRXhlY3MgfCDCoCBSb3dzIMKgIHwgUmVhZCDCoHwgUmVhZCDC
oHwgV3JpdGUgfCBXcml0ZSB8IMKgTWVtIMKgfDxicj58IMKgIMKgfCDCoCDCoCDCoCDCoCDCoCDC
oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC
oCDCoCDCoHwgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfCAo
RXN0aW0pIHwgwqAgwqAgwqAgfCBBY3RpdmUocykgfCBBY3RpdmUgfCDCoCDCoCDCoCB8IChBY3R1
YWwpIHwgUmVxcyDCoHwgQnl0ZXMgfCBSZXFzIMKgfCBCeXRlcyB8IChNYXgpIHw8YnI+PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT08YnI+fCA0MSB8IMKgIMKgIMKgIMKgIMKgIMKgSU5ERVggUkFOR0UgU0NB
TiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoHwgVENYX1BLIMKgIMKgIMKg
IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgfCDCoCDCoCDCoCAxIHwgwqAgwqAgMiB8IMKgIMKg
IMKgIMKgIMKgIHwgwqAgwqAgwqAgwqB8IMKgIMKgIMKgIHwgwqAgwqAgwqAgwqAgwqB8IMKgIMKg
IMKgIHwgwqAgwqAgwqAgfCDCoCDCoCDCoCB8IMKgIMKgIMKgIHwgwqAgwqAgLiB8PGJyPnwgNDIg
fCDCoCDCoCDCoCDCoCDCoCBJTkRFWCBSQU5HRSBTQ0FOIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg
IMKgIMKgIMKgIMKgIMKgIHwgVENYX1BLIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg
IMKgfCDCoCDCoCDCoCAxIHwgwqAgwqAgMiB8IMKgIMKgIMKgIMKgIDEgfCDCoCArMTMxIHwgwqAg
wqAgMSB8IMKgIMKgIDk3NksgfCDCoCDCoCDCoCB8IMKgIMKgIMKgIHwgwqAgwqAgwqAgfCDCoCDC
oCDCoCB8IMKgIMKgIC4gfDxicj48L2Rpdj48ZGl2Pjxicj48L2Rpdj5UaGVzZSB0d28gbGluZXMg
YXJlIHRoZSBvcHRpb25zIGF2YWlsYWJsZSBhcyBhIHJlc3VsdCBvZiBhIHN0YXRpc3RpY3MgY29s
bGVjdG9yIGZ1cnRoZXIgdXAgdGhlIHBsYW4sIGFuZCBvbmUgcGxhbiB0YWtlcyBvcGVyYXRpb24g
NDEsIHRoZSBvdGhlciB0YWtlcyBvcGVyYXRpb24gNDI8YnI+PC9kaXY+PGRpdiBkaXI9Imx0ciI+
PGJyPjwvZGl2PjxkaXY+UHV0dGluZyB0aGVtIGludG8gY29udGV4dCAoYWRkaW5nIGluIHNvbWUg
cGFyZW50IGFuZCBzaWJsaW5nIHJvd3MpPC9kaXY+PGRpdj48c3BhbiBzdHlsZT0iZm9udC1mYW1p
bHk6bW9ub3NwYWNlIj48YnI+PC9zcGFuPjwvZGl2PjxkaXY+PHNwYW4gc3R5bGU9ImZvbnQtZmFt
aWx5Om1vbm9zcGFjZSI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OmFyaWFsLHNhbnMtc2VyaWYi
PlJlcG9ydGluZyBvbmx5ID0gdHJ1ZSAuLi4gcGxhbiBiYXNlZCBvbiBlc3RpbWF0ZXM8L3NwYW4+
PGJyPj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PTxicj58IElkIHwgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBPcGVyYXRp
b24gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfCDCoCDCoCDCoCDCoCDCoCDCoCBO
YW1lIMKgIMKgIMKgIMKgIMKgIMKgIMKgfCDCoFJvd3MgwqAgfCBDb3N0IMKgfCDCoCBUaW1lIMKg
IMKgfCBTdGFydCDCoHwgRXhlY3MgfCDCoCBSb3dzIMKgIHwgUmVhZCDCoHwgUmVhZCDCoHwgwqBN
ZW0gwqB8PGJyPnwgwqAgwqB8IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg
IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgfCDCoCDCoCDCoCDCoCDC
oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB8IChFc3RpbSkgfCDCoCDCoCDCoCB8IEFj
dGl2ZShzKSB8IEFjdGl2ZSB8IMKgIMKgIMKgIHwgKEFjdHVhbCkgfCBSZXFzIMKgfCBCeXRlcyB8
IChNYXgpIHw8YnI+PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PTxicj58IMKgNyB8IMKgIMKgIMKgIMKgIE5FU1RFRCBMT09QUyBPVVRF
UiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB8IMKgIMKgIMKgIMKgIMKg
IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHwgwqAgwqAgwqAgMSB8IMKgIMKgM00gfCDC
oCDCoCDCoCAyNzkgfCDCoCDCoCArMiB8IMKgIMKgIDEgfCDCoCDCoCDCoCAyTSB8IMKgIMKgIMKg
IHwgwqAgwqAgwqAgfCDCoCDCoCAuIHwgwqAgwqAgwqAgwqAgwqB8IMKgIMKgIMKgIMKgIMKgIMKg
IMKgIMKgIHw8YnI+fCDCoDggfCDCoCDCoCDCoCDCoCDCoEhBU0ggSk9JTiBPVVRFUiDCoCDCoCDC
oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB8IMKgIMKgIMKgIMKgIMKgIMKgIMKg
IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHwgwqAgwqAgwqAgMSB8IMKgIMKgM00gfCDCoCDCoCDC
oCAyNzkgfCDCoCDCoCArMiB8IMKgIMKgIDEgfCDCoCDCoCDCoCAyTSB8IMKgIMKgIMKgIHwgwqAg
wqAgwqAgfCDCoCDCoCAuIHw8YnI+fCDCoDkgfCDCoCDCoCDCoCDCoCDCoCBORVNURUQgTE9PUFMg
T1VURVIgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfCDCoCDCoCDCoCDCoCDC
oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB8IMKgIMKgIMKgIDEgfCDCoCDCoDNNIHwg
wqAgwqAgwqAgMjc5IHwgwqAgwqAgKzIgfCDCoCDCoCAxIHwgwqAgwqAgwqAgMk0gfCDCoCDCoCDC
oCB8IMKgIMKgIMKgIHwgwqAgwqAgLiB8PGJyPnwgMTAgfCDCoCDCoCDCoCDCoCDCoCDCoFNUQVRJ
U1RJQ1MgQ09MTEVDVE9SIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgfCDCoCDCoCDC
oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB8IMKgIMKgIMKgIMKgIHwgwqAg
wqAgwqAgfCDCoCDCoCDCoCAyNzkgfCDCoCDCoCArMiB8IMKgIMKgIDEgfCDCoCDCoCDCoCAyTSB8
IMKgIMKgIMKgIHwgwqAgwqAgwqAgfCDCoCDCoCAuIHw8YnI+fCAxMSB8IMKgIMKgIMKgIMKgIMKg
IMKgIE5FU1RFRCBMT09QUyBPVVRFUiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB8
IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHwgwqAgwqAgwqAg
MSB8IMKgIMKgM00gfCDCoCDCoCDCoCAyNzkgfCDCoCDCoCArMiB8IMKgIMKgIDEgfCDCoCDCoCDC
oCAyTSB8IMKgIMKgIMKgIHwgwqAgwqAgwqAgfCDCoCDCoCAuIHw8YnI+PGJyPi4uLjxicj58IDQx
IHwgwqAgwqAgwqAgwqAgwqAgwqBJTkRFWCBSQU5HRSBTQ0FOIMKgIMKgIMKgIMKgIMKgIMKgIMKg
IMKgIMKgIMKgIMKgIMKgIMKgfCBUQ1hfUEsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg
wqAgwqB8IMKgIMKgIMKgIDEgfCDCoCDCoCAyIHwgwqAgwqAgwqAgMjc5IHwgwqAgwqAgKzIgfCDC
oCDCoDJNIHwgwqAgwqAgwqAgMk0gfCDCoCDCoCDCoCB8IMKgIMKgIMKgIHwgwqAgwqAgLiB8PGJy
PnwgNDIgfCDCoCDCoCDCoCDCoCDCoCBJTkRFWCBSQU5HRSBTQ0FOIMKgIMKgIMKgIMKgIMKgIMKg
IMKgIMKgIMKgIMKgIMKgIMKgIMKgIHwgVENYX1BLIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg
IMKgIMKgIMKgfCDCoCDCoCDCoCAxIHwgwqAgwqAgMiB8IMKgIMKgIMKgIMKgIMKgIHwgwqAgwqAg
wqAgwqB8IMKgIMKgIMKgIHwgwqAgwqAgwqAgwqAgwqB8IMKgIMKgIMKgIHwgwqAgwqAgwqAgfCDC
oCDCoCAuIHw8YnI+fCA0MyB8IMKgIMKgIMKgIMKgIMKgVEFCTEUgQUNDRVNTIEJZIElOREVYIFJP
V0lEIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHwgVEMgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg
wqAgwqAgwqAgwqAgwqAgwqB8IMKgIMKgIMKgIDEgfCDCoCDCoCAyIHwgwqAgwqAgwqAgMjc5IHwg
wqAgwqAgKzIgfCDCoCDCoDJNIHwgwqAgwqAgwqAgMk0gfCAxNjAzNyB8IDEyNU1CIHwgwqAgwqAg
LiB8IMKgIMKgIMKgIMKgIMKgfCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB8PGJyPjxicj48YnI+
PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OmFyaWFsLHNhbnMtc2VyaWYiPlJlcG9ydGluZyBvbmx5
ID0gZmFsc2UgLi4uIHBsYW4gYWRhcHRzIHRvIGNvdW50aW5nPGJyPihPUFRFUkFUSU9OIDEwIGRp
Y3RhdGVzIGEgSEFTSCBKT0lOIHdoZXJlIHRoZSBlc3RpbWF0ZWQgc3RhdHMgc3VnZ2VzdGVkIE5M
Sik8L3NwYW4+PGJyPj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PGJyPnwgSWQgfCDCoCDCoCDCoCDCoCDC
oCDCoCDCoCDCoCDCoCDCoCDCoE9wZXJhdGlvbiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC
oCDCoCB8IMKgIMKgIMKgIMKgIMKgIMKgIE5hbWUgwqAgwqAgwqAgwqAgwqAgwqAgwqB8IMKgUm93
cyDCoCB8IENvc3QgwqB8IMKgIFRpbWUgwqAgwqB8IFN0YXJ0IMKgfCBFeGVjcyB8IMKgIFJvd3Mg
wqAgfCBSZWFkIMKgfCBSZWFkIMKgfCBXcml0ZSB8IFdyaXRlIHwgwqBNZW0gwqB8PGJyPnwgwqAg
wqB8IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg
IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgfCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC
oCDCoCDCoCDCoCDCoCDCoCB8IChFc3RpbSkgfCDCoCDCoCDCoCB8IEFjdGl2ZShzKSB8IEFjdGl2
ZSB8IMKgIMKgIMKgIHwgKEFjdHVhbCkgfCBSZXFzIMKgfCBCeXRlcyB8IFJlcXMgwqB8IEJ5dGVz
IHwgKE1heCkgfDxicj49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PTxicj58IMKgNyB8IMKgIMKgIMKgIMKg
IE5FU1RFRCBMT09QUyBPVVRFUiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC
oCB8IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHwgwqAgwqAg
wqAgMSB8IMKgIMKgM00gfCDCoCDCoCDCoCDCoDI3IHwgwqAgKzEzMSB8IMKgIMKgIDEgfCDCoCDC
oCDCoCAyTSB8IMKgIMKgIMKgIHwgwqAgwqAgwqAgfCDCoCDCoCDCoCB8IMKgIMKgIMKgIHwgwqAg
wqAgLiB8PGJyPnwgwqA4IHwgwqAgwqAgwqAgwqAgwqBIQVNIIEpPSU4gT1VURVIgwqAgwqAgwqAg
wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC
oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB8IMKgIMKgIMKgIDEgfCDCoCDCoDNNIHwgwqAgwqAgwqAg
MTU1IHwgwqAgwqAgKzMgfCDCoCDCoCAxIHwgwqAgwqAgwqAgMk0gfCDCoDMwMzUgfCDCoCAxR0Ig
fCDCoDMwMzUgfCDCoCAxR0IgfCAzMDlNQiB8PGJyPnwgwqA5IHwgwqAgwqAgwqAgwqAgwqAgTkVT
VEVEIExPT1BTIE9VVEVSIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHwgwqAg
wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfCDCoCDCoCDCoCAxIHwg
wqAgwqAzTSB8IMKgIMKgIMKgIDEyOSB8IMKgIMKgICszIHwgwqAgwqAgMSB8IMKgIMKgIMKgIDJN
IHwgwqAgwqAgwqAgfCDCoCDCoCDCoCB8IMKgIMKgIMKgIHwgwqAgwqAgwqAgfCDCoCDCoCAuIHw8
YnI+fCAxMCB8IMKgIMKgIMKgIMKgIMKgIMKgU1RBVElTVElDUyBDT0xMRUNUT1IgwqAgwqAgwqAg
wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqB8IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg
IMKgIMKgIMKgIMKgIHwgwqAgwqAgwqAgwqAgfCDCoCDCoCDCoCB8IMKgIMKgIMKgIDEyOSB8IMKg
IMKgICszIHwgwqAgwqAgMSB8IMKgIMKgIMKgIDJNIHwgwqAgwqAgwqAgfCDCoCDCoCDCoCB8IMKg
IMKgIMKgIHwgwqAgwqAgwqAgfCDCoCDCoCAuIHw8YnI+fCAxMSB8IMKgIMKgIMKgIMKgIMKgIMKg
IE5FU1RFRCBMT09QUyBPVVRFUiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB8IMKg
IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHwgwqAgwqAgwqAgMSB8
IMKgIMKgM00gfCDCoCDCoCDCoCAxMjkgfCDCoCDCoCArMyB8IMKgIMKgIDEgfCDCoCDCoCDCoCAy
TSB8IMKgIMKgIMKgIHwgwqAgwqAgwqAgfCDCoCDCoCDCoCB8IMKgIMKgIMKgIHwgwqAgwqAgLiB8
PGJyPi4uLjxicj58IDQxIHwgwqAgwqAgwqAgwqAgwqAgwqBJTkRFWCBSQU5HRSBTQ0FOIMKgIMKg
IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgfCBUQ1hfUEsgwqAgwqAgwqAgwqAgwqAg
wqAgwqAgwqAgwqAgwqAgwqAgwqB8IMKgIMKgIMKgIDEgfCDCoCDCoCAyIHwgwqAgwqAgwqAgwqAg
wqAgfCDCoCDCoCDCoCDCoHwgwqAgwqAgwqAgfCDCoCDCoCDCoCDCoCDCoHwgwqAgwqAgwqAgfCDC
oCDCoCDCoCB8IMKgIMKgIMKgIHwgwqAgwqAgwqAgfCDCoCDCoCAuIHw8YnI+fCA0MiB8IMKgIMKg
IMKgIMKgIMKgIElOREVYIFJBTkdFIFNDQU4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg
wqAgwqAgwqAgfCBUQ1hfUEsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqB8IMKg
IMKgIMKgIDEgfCDCoCDCoCAyIHwgwqAgwqAgwqAgwqAgMSB8IMKgICsxMzEgfCDCoCDCoCAxIHwg
wqAgwqAgOTc2SyB8IMKgIMKgIMKgIHwgwqAgwqAgwqAgfCDCoCDCoCDCoCB8IMKgIMKgIMKgIHwg
wqAgwqAgLiB8PGJyPnwgNDMgfCDCoCDCoCDCoCDCoCDCoFRBQkxFIEFDQ0VTUyBCWSBJTkRFWCBS
T1dJRCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB8IFRDIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg
IMKgIMKgIMKgIMKgIMKgIMKgfCDCoCDCoCDCoCAxIHwgwqAgwqAgMiB8IMKgIMKgIMKgIMKgMjcg
fCDCoCArMTMxIHwgwqAgwqAyTSB8IMKgIMKgIMKgIDJNIHwgMjE1NDkgfCAxNjhNQiB8IMKgIMKg
IMKgIHwgwqAgwqAgwqAgfCDCoCDCoCAuIHw8YnI+PC9zcGFuPjwvZGl2PjxkaXYgZGlyPSJsdHIi
Pjxicj48L2Rpdj48ZGl2IGRpcj0ibHRyIj48ZGl2Pjxicj48L2Rpdj48ZGl2PkFzIHlvdSBjYW4g
c2VlLCB0aGUgYWJpbGl0eSB0byBzd2l0Y2ggcGxhbnMgbWFrZXMgYSBiaWcgZGlmZmVyZW5jZSB0
byB0aGUgYW1vdW50IG9mIHRpbWUgT3JhY2xlIHNwZW5kcyB3b3JraW5nIGJlZm9yZSBpdCBzdGFy
dHMgZXhlY3V0aW5nIHN0ZXAgNyAoc3RhcnQgdGltZSA9ICsyIHNlY29uZHMgdnMuICsxMzEgc2Vj
b25kcykuPC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj5UaGlzIG9uZSBleHRyYWN0IGZyb20gdGhl
IHBsYW5zIGRvZXNuJiMzOTt0IGFuc3dlciB0aGUgcXVlc3Rpb24gYWJvdXQgd2h5ICZxdW90O3Rh
YmxlIGFjY2VzcyBieSBpbmRleCByb3dpZCBiYXRjaGVkJnF1b3Q7IGhhcyBhcHBlYXJlZDsgbm9y
IGRvZXMgaXQgZXhwbGFpbiB0aGUgdG90YWwgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSB0d28gZXhl
Y3V0aW9ucyBiZWNhdXNlIHlvdSBhbHNvIG5lZWQgdG8gbG9vayBhdCB0aGUgc3RhdGlzdGljcyBj
b2xsZWN0b3IgYXQgb3BlcmF0aW9uIDYgYW5kIHRoZSBpbXBhY3QgdGhhdCBoYXMgb24gd2hpY2gg
b2Ygb3BlcmF0aW9uIDQ1LzQ2IGFuZCA0Ny80OCBnZXQgY2hvc2VuLiBUaGUgb3RoZXIgcG9pbnQg
dGhhdCB0aGVuIGNvbWVzIHVwIGlzIHRoYXQgdGhlIG9yZGVyIGluIHdoaWNoIGRhdGEgYXBwZWFy
cyBmcm9tIGEgaGFzaCBqb2luIGlzIChhbG1vc3QgY2VydGFpbmx5KSBkaWZmZXJlbnQgZnJvbSB0
aGUgb3JkZXIgaXQgYXBwZWFycyBmcm9tIGEgbmVzdGVkIGxvb3Agam9pbiAtIHdoaWNoIG1lYW5z
IHRoYXQgd2hlbiB5b3UgdXNlIHRoZSByZXN1bHQgb2YgdGhlIGpvaW4gdG8gcHJvYmUgb3RoZXIg
dGFibGVzIGJ5IGluZGV4IHRoZSBvcmRlciBvZiB0aGUgZHJpdmluZyBkYXRhIGZyb20gb25lIGpv
aW4gbWF5IGJlIHJvdWdobHkgaW4gbGluZSB3aXRoIHRoZSBpbmRleGVzIGFuZCBkYXRhIGZyb20g
dGhlIG5leHQgdGFibGUocykgaW4gdGhlIGpvaW4gYW5kIGJlbmVmaXQgZnJvbSBhIGxvdCBvZiAm
cXVvdDtzZWxmLWluZHVjZWQmcXVvdDsgY2FjaGluZywgd2hpbGUgdGhlIG90aGVyIGpvaW4gbWln
aHQgcHJvZHVjZSBkYXRhIGluIHdoYXQgaXMgZWZmZWN0aXZlbHkgYSByYW5kb21pc2VkIG9yZGVy
IHJlc3VsdGluZyBpbiAmcXVvdDtzZWxmLWZsdXNoaW5nJnF1b3Q7IGFuZCBtb3JlIHJhbmRvbSBy
ZWFkcyAtIGFuZCB0aGF0IG1pZ2h0IGV4cGxhaW4gd2hhdCBoYXBwZW5zIGF0IG9wZXJhdGlvbnMg
NjAvNjE8L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PldoYXQgbXkgb2JzZXJ2YXRpb25zIHN1Z2dl
c3QgaXMgYSBnb29kIGFyZ3VtZW50IGZvciB3aHkgeW91IGhhZCBzdWNoIGEgZGlmZmVyZW5jZSBp
biBwZXJmb3JtYW5jZSwgYW5kIHRoYXQgaXQgaGFkIG5vdGhpbmcgdG8gZG8gd2l0aCB0aGUgYmF0
Y2hpbmcgb3Igbm90IG9mIHRoZSB0YWJsZSBhY2Nlc3MgYnkgcm93aWQuPC9kaXY+PGRpdj48YnI+
PC9kaXY+PGRpdj5JIG1heSB3cml0ZSB0aGlzIHVwIGluIG1vcmUgZGV0YWlsIGFzIGEgYmxvZyBz
b21lIGRheSwgYnV0IEkgZG9uJiMzOTt0IGhhdmUgdGltZSByaWdodCBub3cuPC9kaXY+PGRpdj48
YnI+PC9kaXY+PGRpdj5SZWdhcmRzPC9kaXY+PGRpdj5Kb25hdGhhbiBMZXdpczwvZGl2PjxkaXY+
PGJyPjwvZGl2PjxkaXY+PGJyPjwvZGl2Pjxicj48ZGl2PiA8YnI+PC9kaXY+PC9kaXY+PGJyPjxk
aXYgY2xhc3M9ImdtYWlsX3F1b3RlIj48ZGl2IGRpcj0ibHRyIiBjbGFzcz0iZ21haWxfYXR0ciI+
T24gRnJpLCA4IE9jdCAyMDIxIGF0IDE4OjM0LCBQYXAgJmx0OzxhIGhyZWY9Im1haWx0bzpvcmFj
bGUuZGV2ZWxvcGVyMzVAZ21haWwuY29tIiB0YXJnZXQ9Il9ibGFuayI+b3JhY2xlLmRldmVsb3Bl
cjM1QGdtYWlsLmNvbTwvYT4mZ3Q7IHdyb3RlOjxicj48L2Rpdj48YmxvY2txdW90ZSBjbGFzcz0i
Z21haWxfcXVvdGUiIHN0eWxlPSJtYXJnaW46MHB4IDBweCAwcHggMC44ZXg7Ym9yZGVyLWxlZnQ6
MXB4IHNvbGlkIHJnYigyMDQsMjA0LDIwNCk7cGFkZGluZy1sZWZ0OjFleCI+PGRpdiBkaXI9Imx0
ciI+wqAgSXQmIzM5O3MgZmx1Y3R1YXRpbmcuIEkgYW0gbm93IG5vdCBhYmxlIHRvIHJlcHJvZHVj
ZSB0aGUgc2NlbmFyaW/CoGZvciB0aGF0IHNhbWUgc21hbGwgcXVlcnkgZm9yIHdoaWNoIEkgaGFk
IHBvc3RlZCBoZXJlIGp1c3QgYmVmb3JlLsKgIEFuZCB5b3UgYXJlIGNvcnJlY3QgLCBJIHdhcyBs
dWNraWx5IGhhdmluZyBzcWwgbW9uaXRvcnMgc2F2ZWQuIEkgYW0gYXR0YWNoaW5nIHRob3NlIGhl
cmUuwqBJZiB5b3Ugc2VlIHRoYXQsIHRoZSBtYWluIHF1ZXJ5IHdhcyBzaG93aW5nIHRob3NlIHJv
d2lkIGJhdGNoZWQgb3BlcmF0aW9ucyB3aGVuIHdlIGhhdmUgdGhlwqANCg0Kb3B0aW1pemVyX2Fk
YXB0aXZlX3JlcG9ydGluZ19vbmx5IHNldCBhcyBkZWZhdWx0L2ZhbHNlIGFuZCB3YXMgdGFraW5n
IGEgbG9uZyB0aW1lIHRvIGZpbmlzaCBhbmQgYWxzbyB0aGUgZmlyc3QgZmV3IHJvd3Mgd2VyZSBh
bHNvIHRha2luZyBsb25nZXIgdG8gZ2V0IHByb2R1Y2VkIG91dMKgb2YgdGhlIHF1ZXJ5LiBCdXQg
dGhlIHNhbXBsZSBzbWFsbCBxdWVyeSB3aGljaCBpIGhhZCBwb3N0ZWQgYSBjdXJzb3IgcGxhbiBm
b3Igd2FzIGp1c3Qgc2hvd2luZyB0aGXCoG9wcG9zaXRlIGJlaGF2aW91ci4gVGhhdCBpcyBnb2lu
ZyBmb3IgYSByb3dpZCBiYXRjaGVkIHBhdGggd2hlbiBvcHRpbWl6ZXJfYWRhcHRpdmVfcmVwb3J0
aW5nX29ubHkgc2V0cyBhcyB0cnVlLjxkaXY+PGJyPjwvZGl2PjxkaXY+SG93ZXZlcizCoCBub3cg
SSBhbSBzZWVpbmcgdGhhdCBzYW1lIHNtYWxsIHF1ZXJ5IGluIGJvdGggdGhlIGNhc2VzIChpcnJl
c3BlY3RpdmUgb2YgdmFsdWUgb2Ygb3B0aW1pemVyX2FkYXB0aXZlX3JlcG9ydGluZ19vbmx5KSBn
b2luZyBmb3IgJiMzOTtyb3dpZCBiYXRjaGVkJiMzOTsgZXhlY3V0aW9uIHBhdGguIE5vdCBzdXJl
IGlmIGl0JiMzOTtzIGp1c3Qgc3RhdHMgb3IgYW55dGhpbmfCoGVsc2UgaW5mbHVlbmNpbmcgYW5k
IEkgYW3CoHNlZWluZyBkaWZmZXJlbnQgdGhpbmdzwqBiZWhhdmlvdXIuIEp1c3QgdG8gbm90ZSB3
ZSBoYXZlICYjMzk7b3B0aW1pemVyX2FkYXB0aXZlX3BsYW5zJiMzOTsgc2V0IHRvIHRydWUgLCAm
IzM5O29wdGltaXplcl9hZGFwdGl2ZV9zdGF0aXN0aWNzJiMzOTsgc2V0wqAgdG8gZmFsc2UuIFRo
ZSBvbmx5IGNoYW5nZSB3ZSBtYWRlIHdhcyBtb3ZpbmcgJiMzOTsNCg0Kb3B0aW1pemVyX2FkYXB0
aXZlX3JlcG9ydGluZ19vbmx5JiMzOTsgZnJvbSBmYWxzZSB0byB0cnVlLjwvZGl2PjxkaXY+PGRp
dj48ZGl2Pjxicj48L2Rpdj48ZGl2PkFuZCBKb25hdGhhbiB3aGVuIHlvdSBzYWlkIHRoZSBvcHRp
bWl6ZXJfYWRhcHRpdmVfcmVwb3J0aW5nX29ubHkgPSB0cnVlIHdpbGwgaW50cm9kdWNlICYjMzk7
c3RhdGlzdGljcyBjb2xsZWN0b3ImIzM5OyBvcGVyYXRpb24sIGJ1dCBpZiB5b3Ugc2VlIHRoZSBh
dHRhY2hlZCBzcWwgbW9uaXRvciBmb3IgdGhlIG1haW4gcXVlcnksIGkgYW0gc2VlaW5nICYjMzk7
c3RhdGlzdGljcyBjb2xsZWN0b3ImIzM5OyBldmVuIHdoZW4gb3B0aW1pemVyX2FkYXB0aXZlX3Jl
cG9ydGluZ19vbmx5IGlzID0gZmFsc2UuIElzIHRoYXQgZXhwZWN0ZWQgYmVoYXZpb3VyP8KgPC9k
aXY+PC9kaXY+PC9kaXY+PC9kaXY+PGJyPjxkaXYgY2xhc3M9ImdtYWlsX3F1b3RlIj48YnI+PC9k
aXY+DQo8L2Jsb2NrcXVvdGU+PC9kaXY+DQo8ZGl2Pjxicj48L2Rpdj48ZGl2Pjxicj48L2Rpdj48
ZGl2Pjxicj48L2Rpdj48L2Rpdj4NCjwvYmxvY2txdW90ZT48L2Rpdj4NCjwvYmxvY2txdW90ZT48
L2Rpdj4NCjwvYmxvY2txdW90ZT48L2Rpdj4NCg==
--000000000000cef94905ce03b15f--

--
http://www.freelists.org/webpage/oracle-l



