PK fUIoa,mimetypeapplication/epub+zipPKfUIOEBPS/rarmonitor.htm Monitoring a Replication Environment

10 Monitoring a Replication Environment

This chapter illustrates how to monitor a replication a replication environment using the data dictionary.

This chapter contains these topics:


Note:

The Advanced Replication interface in Oracle Enterprise Manager is also an excellent way to monitor a replication environment. Most of the information obtained by the queries in this chapter can be found by using the Advanced Replication interface. See the Advanced Replication interface online Help for more information.

Monitoring Master Replication Environments

This section contains queries that you can run to display information about a master replication environment. The replication environment can be a multimaster environment, a master materialized view environment, or a hybrid environment that includes multiple master sites and materialized views.

This section contains the following topics:

Monitoring Master Sites

This section contains queries that you can run to display information about master sites.

Listing General Information About a Master Site

You can find the following general information about a master site by running the query in this section:

  • The number of administrative requests.

  • The number of administrative request errors.

  • The number of unpropagated deferred transaction-destination pairs. Each deferred transaction can have multiple destinations to which it will be propagated, and each destination is a single deferred transaction-destination pair.

For example, if there are ten deferred transactions and each one must be propagated to three sites, then there are 30 deferred transaction-pairs returned by this query. After some time, if the first deferred transaction is propagated to two of the three destination sites, then there are still ten deferred transactions, but there are two fewer deferred-transaction pairs, and this query returns 28 unpropagated deferred transaction-pairs. In this case, the first deferred transaction only has one transaction-pair remaining.

  • The number of deferred transaction errors (error transactions).

  • The number of successfully propagated transactions that are still in the queue. These transactions should be purged from the queue.

Run the following query to list this information for the current master site:

COLUMN GLOBAL_NAME HEADING 'Database' FORMAT A25
COLUMN ADMIN_REQUESTS HEADING 'Admin|Reqests' FORMAT 9999
COLUMN STATUS HEADING 'Admin|Errors' FORMAT 9999
COLUMN TRAN HEADING 'Def|Trans|Pairs' FORMAT 9999
COLUMN ERRORS HEADING 'Def|Trans|Errors' FORMAT 9999
COLUMN COMPLETE HEADING 'Propagated|Trans' FORMAT 9999

SELECT G.GLOBAL_NAME, D.ADMIN_REQUESTS, E.STATUS, DT.TRAN, DE.ERRORS, C.COMPLETE  
    FROM (SELECT GLOBAL_NAME FROM GLOBAL_NAME) G, 
      (SELECT COUNT(ID) ADMIN_REQUESTS FROM DBA_REPCATLOG) D, 
      (SELECT COUNT(STATUS) STATUS FROM DBA_REPCATLOG WHERE STATUS = 'ERROR') E,     
      (SELECT COUNT(*) TRAN FROM DEFTRANDEST) DT, 
      (SELECT COUNT(*) ERRORS FROM DEFERROR) DE,      
      (SELECT COUNT(A.DEFERRED_TRAN_ID) COMPLETE FROM DEFTRAN A         
    WHERE A.DEFERRED_TRAN_ID NOT IN (
      SELECT B.DEFERRED_TRAN_ID FROM DEFTRANDEST B)) C; 

Your output looks similar to the following:

                                           Def    Def
                            Admin  Admin Trans  Trans Propagated
Database                  Reqests Errors Pairs Errors      Trans
------------------------- ------- ------ ----- ------ ----------
ORC1.EXAMPLE.COM                5      0    37      0         53

Note:

This query can be expensive if you have a large number of transactions in the deferred transactions queue.

Monitoring Master Groups

This section contains queries that you can run to display information about the master groups at a replication site.

Listing the Master Sites Participating in a Master Group

Run the following query to list the master sites for each master group at a replication site and indicate which master site is the master definition site for each master group:

COLUMN GNAME HEADING 'Master Group' FORMAT A20
COLUMN DBLINK HEADING 'Sites' FORMAT A25
COLUMN MASTERDEF HEADING 'Master|Definition|Site?' FORMAT A10

SELECT GNAME, DBLINK, MASTERDEF
    FROM DBA_REPSITES 
    WHERE MASTER = 'Y' 
    AND GNAME NOT IN (SELECT GNAME FROM DBA_REPSITES WHERE SNAPMASTER = 'Y')    
    ORDER BY GNAME;

The subquery in the SELECT statement ensures that materialized view groups do not appear in the output. Your output looks similar to the following:

                                               Master
                                               Definition
Master Group         Sites                     Site?
-------------------- ------------------------- ----------
HR_REPG              ORC1.EXAMPLE.COM          Y
HR_REPG              ORC2.EXAMPLE.COM          N
HR_REPG              ORC3.EXAMPLE.COM          N

This list indicates that orc1.example.com is the master definition site for the hr_repg master group, which also includes the master sites orc2.example.com and orc3.example.com.

Listing General Information About Master Groups

You can use the query in this section to list the following general information about the master groups at a master site:

  • The name of each master group.

  • The number of unpropagated deferred transaction-destination pairs. Each deferred transaction can have multiple destinations to which it will be propagated, and each destination is a single deferred transaction-destination pair.

For example, if there are ten deferred transactions and each one must be propagated to three sites, then there are 30 deferred transaction-pairs returned by this query. After some time, if the first deferred transaction is propagated to two of the three destination sites, then there are still ten deferred transactions, but there are two fewer deferred-transaction pairs, and this query returns 28 unpropagated deferred transaction-pairs. In this case, the first deferred transaction only has one transaction-pair remaining.

  • The number of deferred transaction errors (error transactions) for each master group

  • The number of administrative requests for each master group

  • The number of administrative request errors for each master group

Run the following query to list this information:

COLUMN GNAME HEADING 'Master Group' FORMAT A15
COLUMN deftran HEADING 'Number of|Deferred|Transaction|Pairs' FORMAT 9999
COLUMN deftranerror HEADING 'Number of|Deferred|Transaction|Errors' FORMAT 9999
COLUMN adminreq HEADING 'Number of|Administrative|Requests' FORMAT 9999
COLUMN adminreqerror HEADING 'Number of|Administrative|Request|Errors' 
COLUMN adminreqerror FORMAT 9999

SELECT G.GNAME, 
       NVL(T.CNT1, 0) deftran, 
       NVL(IE.CNT2, 0) deftranerror, 
       NVL(A.CNT3, 0) adminreq, 
       NVL(B.CNT4, 0) adminreqerror
    FROM 
    (SELECT DISTINCT GNAME FROM DBA_REPGROUP WHERE MASTER='Y') G, 
    (SELECT DISTINCT RO.GNAME, COUNT(DISTINCT D.DEFERRED_TRAN_ID) CNT1 
        FROM  DBA_REPOBJECT RO, DEFCALL D, DEFTRANDEST TD   
        WHERE RO.SNAME = D.SCHEMANAME 
        AND RO.ONAME = D.PACKAGENAME 
        AND RO.TYPE IN ('TABLE', 'PACKAGE', 'MATERIALIZED VIEW')
        AND TD.DEFERRED_TRAN_ID = D.DEFERRED_TRAN_ID    
        GROUP BY RO.GNAME ) T, 
    (SELECT DISTINCT RO.GNAME, COUNT(DISTINCT E.DEFERRED_TRAN_ID) CNT2 
        FROM DBA_REPOBJECT RO, DEFCALL D, DEFERROR E   
        WHERE RO.SNAME = D.SCHEMANAME 
        AND RO.ONAME = D.PACKAGENAME    
        AND RO.TYPE IN ('TABLE', 'PACKAGE', 'MATERIALIZED VIEW') 
        AND E.DEFERRED_TRAN_ID = D.DEFERRED_TRAN_ID     
        AND E.CALLNO = D.CALLNO   
        GROUP BY RO.GNAME ) IE, 
    (SELECT GNAME, COUNT(*) CNT3 FROM DBA_REPCATLOG GROUP BY GNAME) A, 
    (SELECT GNAME, COUNT(*) CNT4 FROM DBA_REPCATLOG 
        WHERE STATUS = 'ERROR'
        GROUP BY GNAME) B WHERE G.GNAME = IE.GNAME (+) 
        AND G.GNAME = T.GNAME (+) 
        AND G.GNAME = A.GNAME (+) 
        AND G.GNAME = B.GNAME (+) ORDER BY G.GNAME; 

Your output looks similar to the following:

                  Number of   Number of                     Number of
                   Deferred    Deferred      Number of Administrative
                Transaction Transaction Administrative        Request
Master Group          Pairs      Errors       Requests         Errors
--------------- ----------- ----------- -------------- --------------
HR_REPG                  54           0              0              0
OE_RG                    33           1              5              0

Note:

This query can be expensive if you have a large number of transactions waiting to be propagated.

Monitoring Masters

A master can be either a master site or a master materialized view site. This section contains queries that you can run to display information about masters.

Listing Information About Materialized Views Based on a Master

If you have materialized view sites based on a master, then you can use the query in this section to list the following information about the master:

  • The number of replication groups at a master. The replication groups can be either master groups or materialized view groups.

  • The number of registered materialized view groups based on the replication groups at the master.

  • The number of registered materialized views based on objects at the master. The objects can be either master tables or master materialized views.

  • The number of materialized view logs at the master.

  • The number of deployment templates at the master.

Run the following query to list this information:

COLUMN repgroup HEADING 'Number of|Replication|Groups' FORMAT 9999
COLUMN mvgroup HEADING 'Number of|Registered|MV Groups' FORMAT 9999
COLUMN mv HEADING 'Number of|Registered MVs' FORMAT 9999
COLUMN mvlog HEADING 'Number of|MV Logs' FORMAT 9999
COLUMN template HEADING 'Number of|Templates' FORMAT 9999

SELECT A.REPGROUP repgroup, 
       B.MVGROUP mvgroup, 
       C.MV mv, 
       D.MVLOG mvlog, 
       E.TEMPLATE template
    FROM (SELECT COUNT(G.GNAME) REPGROUP 
             FROM DBA_REPGROUP G, DBA_REPSITES S 
             WHERE G.MASTER = 'Y' 
             AND S.MASTER = 'Y' 
             AND G.GNAME = S.GNAME 
             AND S.MY_DBLINK = 'Y') A, 
         (SELECT COUNT(*) MVGROUP 
             FROM DBA_REGISTERED_MVIEW_GROUPS) B, 
         (SELECT COUNT(*) MV 
             FROM DBA_REGISTERED_MVIEWS) C,  
         (SELECT COUNT(*) MVLOG 
             FROM (SELECT 1 FROM DBA_MVIEW_LOGS
             GROUP BY LOG_OWNER, LOG_TABLE)) D,
         (SELECT COUNT(*) TEMPLATE FROM DBA_REPCAT_REFRESH_TEMPLATES) E;

Your output looks similar to the following:

  Number of  Number of
Replication Registered      Number of Number of Number of
     Groups  MV Groups Registered MVs   MV Logs Templates
----------- ---------- -------------- --------- ---------
          1          5             27         6         3

Listing Information About the Materialized View Logs at a Master

A materialized view log enables you to perform a fast refresh on materialized views based on a master. A master can be a master table or a master materialized view. If you have materialized view logs based at a master, then you can use the query in this section to list the following information about them:

  • The name of each log table that stores the materialized view log data

  • The owner of each materialized view log

  • The master on which each materialized view log is based

  • Whether a materialized view log is a row id materialized view log

  • Whether a materialized view log is a primary key materialized view log

  • Whether the materialized view log is an object id materialized view log

  • Whether a materialized view log has filter columns

Run the following query to list this information:

COLUMN LOG_TABLE HEADING 'Log Table' FORMAT A20
COLUMN LOG_OWNER HEADING 'Log|Owner' FORMAT A5
COLUMN MASTER HEADING 'Master' FORMAT A15
COLUMN ROWIDS HEADING 'Row|ID?' FORMAT A3
COLUMN PRIMARY_KEY HEADING 'Primary|Key?' FORMAT A7
COLUMN OBJECT_ID HEADING 'Object|ID?' FORMAT A6
COLUMN FILTER_COLUMNS HEADING 'Filter|Columns?' FORMAT A8

SELECT DISTINCT LOG_TABLE, 
       LOG_OWNER, 
       MASTER, 
       ROWIDS, 
       PRIMARY_KEY, 
       OBJECT_ID,
       FILTER_COLUMNS 
    FROM DBA_MVIEW_LOGS 
    ORDER BY 1;

Your output looks similar to the following:

                     Log                   Row Primary Object Filter
Log Table            Owner Master          ID? Key?    ID?    Columns?
-------------------- ----- --------------- --- ------- ------ --------
MLOG$_COUNTRIES      HR    COUNTRIES       NO  YES     NO     NO
MLOG$_DEPARTMENTS    HR    DEPARTMENTS     NO  YES     NO     NO
MLOG$_EMPLOYEES      HR    EMPLOYEES       NO  YES     NO     NO
MLOG$_JOBS           HR    JOBS            NO  YES     NO     NO
MLOG$_JOB_HISTORY    HR    JOB_HISTORY     NO  YES     NO     NO
MLOG$_LOCATIONS      HR    LOCATIONS       NO  YES     NO     NO
MLOG$_REGIONS        HR    REGIONS         NO  YES     NO     NO

See Also:

Oracle Database Advanced Replication for information about materialized view logs

Listing the Materialized Views that Use a Materialized View Log

More than one materialized view can use a materialized view log. If you have materialized view logs based at a master, then you can use the query in this section to list the following the materialized views that use each log:

  • The name of each log table that stores the materialized view log data

  • The owner of each materialized view log

  • The master on which each materialized view log is based

  • The materialized view identification number of each materialized view that uses the materialized view log

  • The name of each materialized view that uses the materialized view log

Run the following query to list this information:

COLUMN LOG_TABLE HEADING 'Mview|Log Table' FORMAT A20
COLUMN LOG_OWNER HEADING 'Mview|Log Owner' FORMAT A10
COLUMN MASTER HEADING 'Master' FORMAT A20
COLUMN MVIEW_ID HEADING 'Mview|ID' FORMAT 9999
COLUMN NAME HEADING 'Mview Name' FORMAT A20

SELECT L.LOG_TABLE, L.LOG_OWNER, B.MASTER, B.MVIEW_ID, R.NAME  
FROM ALL_MVIEW_LOGS L, ALL_BASE_TABLE_MVIEWS B, ALL_REGISTERED_MVIEWS R
WHERE B.MVIEW_ID = R.MVIEW_ID
AND B.OWNER = L.LOG_OWNER
AND B.MASTER = L.MASTER;

Your output looks similar to the following:

Mview                Mview                           Mview
Log Table            Log Owner  Master                  ID Mview Name
-------------------- ---------- -------------------- ----- --------------------
MLOG$_COUNTRIES      HR         COUNTRIES               21 COUNTRIES_MV1
MLOG$_DEPARTMENTS    HR         DEPARTMENTS             22 DEPARTMENTS_MV1
MLOG$_EMPLOYEES      HR         EMPLOYEES               23 EMPLOYEES_MV1
MLOG$_JOBS           HR         JOBS                    24 JOBS_MV1
MLOG$_JOB_HISTORY    HR         JOB_HISTORY             25 JOB_HISTORY_MV1
MLOG$_LOCATIONS      HR         LOCATIONS               26 LOCATIONS_MV1
MLOG$_REGIONS        HR         REGIONS                 27 REGIONS_MV1

Listing Information About the Deployment Templates at a Master

Deployment templates enable you to create multiple materialized view environments quickly. They also enable you to use variables to customize each materialized view environment for its individual needs. You can use the query in this section to list the following information about the deployment templates at a master:

  • The name of each deployment template

  • The owner of each deployment template

  • Whether a deployment template is public

  • The number of instantiated materialized view sites based on each deployment template

  • The comment associated with each deployment template

Run the following query to list this information:

COLUMN REFRESH_TEMPLATE_NAME HEADING 'Template|Name' FORMAT A10
COLUMN OWNER HEADING 'Owner' FORMAT A10
COLUMN PUBLIC_TEMPLATE HEADING 'Public?' FORMAT A7
COLUMN INSTANTIATED HEADING 'Number of|Instantiated|Sites' FORMAT 9999
COLUMN TEMPLATE_COMMENT HEADING 'Comment' FORMAT A35

SELECT DISTINCT RT.REFRESH_TEMPLATE_NAME, 
       OWNER,
       PUBLIC_TEMPLATE, 
       RS.INSTANTIATED, 
       RT.TEMPLATE_COMMENT 
    FROM DBA_REPCAT_REFRESH_TEMPLATES RT,  
    (SELECT Y.REFRESH_TEMPLATE_NAME, COUNT(X.STATUS) INSTANTIATED  
        FROM DBA_REPCAT_TEMPLATE_SITES X, DBA_REPCAT_REFRESH_TEMPLATES Y 
        WHERE X.REFRESH_TEMPLATE_NAME(+) = Y.REFRESH_TEMPLATE_NAME 
        GROUP BY Y.REFRESH_TEMPLATE_NAME) RS 
        WHERE RT.REFRESH_TEMPLATE_NAME(+) = RS.REFRESH_TEMPLATE_NAME 
        ORDER BY 1;

Your output looks similar to the following:

                                 Number of
Template                      Instantiated
Name       Owner      Public?        Sites Comment
---------- ---------- ------- ------------ -----------------------------------
HR_REFG_DT HR         N                  2 Human Resources Deployment Template

The N in the Public? column means that the deployment template is private. Therefore, it can only be instantiated by authorized users. A Y in this column means that the deployment template is public. Any user can instantiate a public deployment template.

Monitoring Materialized View Sites

This section contains queries that you can run to display information about the materialized view sites. This section contains the following topics:

Listing General Information About a Materialized View Site

You can use the query in this section to list the following general information about the current materialized view site:

  • The number of materialized view groups at the site

  • The number of materialized views at the site

  • The number of refresh groups at the site

Run the following query to list this information:

COLUMN MVGROUP HEADING 'Number of|Materialized|View Groups' FORMAT 9999
COLUMN MV HEADING 'Number of|Materialized|Views' FORMAT 9999
COLUMN RGROUP HEADING 'Number of|Refresh Groups' FORMAT 9999

SELECT A.MVGROUP, B.MV, C.RGROUP 
    FROM 
    (SELECT COUNT(S.GNAME) MVGROUP 
        FROM DBA_REPSITES S
        WHERE S.SNAPMASTER = 'Y') A, 
     (SELECT COUNT(*) MV 
        FROM DBA_MVIEWS) B, 
     (SELECT COUNT(*) RGROUP 
        FROM DBA_REFRESH) C;

Your output looks similar to the following:

   Number of    Number of
Materialized Materialized      Number of
 View Groups        Views Refresh Groups
------------ ------------ --------------
           5           25              5

Listing General Information About Materialized View Groups

You can use the query in this section to list the following general information about the materialized view groups at the current materialized view site:

  • The name of each materialized view group

  • The master of each materialized view group

  • The method of propagation to a materialized view group's master, either asynchronous or synchronous

  • The comment associated with each materialized view group

Run the following query to list this information:

COLUMN GNAME HEADING 'Group Name' FORMAT A10
COLUMN DBLINK HEADING 'Master' FORMAT A25
COLUMN Propagation HEADING 'Propagation|Method' FORMAT A12
COLUMN SCHEMA_COMMENT HEADING 'Comment' FORMAT A30

SELECT S.GNAME, 
       S.DBLINK, 
       DECODE(S.PROP_UPDATES, 
              0, 'ASYNCHRONOUS', 
              1, 'SYNCHRONOUS') Propagation,
       G.SCHEMA_COMMENT 
    FROM DBA_REPSITES S, DBA_REPGROUP G
    WHERE S.GNAME = G.GNAME
    AND S.SNAPMASTER = 'Y';

Your output looks similar to the following:

                                     Propagation
Group Name Master                    Method       Comment
---------- ------------------------- ------------ ------------------------------
HR_REPG    ORC1.EXAMPLE.COM          ASYNCHRONOUS

Listing Information About Materialized Views

This section contains queries that you can run to display information about the materialized views at a replication site.

Listing Master Information For Materialized Views

The following query shows the master for each materialized view at a replication site and whether the materialized view can be fast refreshed:

COLUMN MVIEW_NAME HEADING 'Materialized|View Name' FORMAT A15
COLUMN OWNER HEADING 'Owner' FORMAT A10
COLUMN MASTER_LINK HEADING 'Master Link' FORMAT A30
COLUMN Fast_Refresh HEADING 'Fast|Refreshable?' FORMAT A16

SELECT MVIEW_NAME, 
       OWNER, 
       MASTER_LINK,  
       DECODE(FAST_REFRESHABLE, 
              'NO', 'NO',
              'DML', 'YES',    
              'DIRLOAD', 'DIRECT LOAD ONLY',
              'DIRLOAD_DML', 'YES',
              'DIRLOAD_LIMITEDDML', 'LIMITED') Fast_Refresh
    FROM DBA_MVIEWS;

Your output looks similar to the following:

Materialized                                              Fast
View Name       Owner      Master Link                    Refreshable?
--------------- ---------- ------------------------------ ----------------
COUNTRIES_MV1   HR         @ORC1EXAMPLE.COM               YES
DEPARTMENTS_MV1 HR         @ORC1EXAMPLE.COM               YES
EMPLOYEES_MV1   HR         @ORC1EXAMPLE.COM               YES
JOBS_MV1        HR         @ORC1EXAMPLE.COM               YES
JOB_HISTORY_MV1 HR         @ORC1EXAMPLE.COM               YES
LOCATIONS_MV1   HR         @ORC1EXAMPLE.COM               YES
REGIONS_MV1     HR         @ORC1EXAMPLE.COM               YES

Listing the Properties of Materialized Views

You can use the query in this section to list the following information about the materialized views at the current replication site:

  • The name of each materialized view

  • The owner of each materialized view

  • The refresh method used by each materialized view: COMPLETE, FORCE, FAST, or NEVER

  • Whether a materialized view is updatable

  • The last date on which each materialized view was refreshed

Run the following query to list this information:

COLUMN MVIEW_NAME HEADING 'Materialized|View Name' FORMAT A15
COLUMN OWNER HEADING 'Owner' FORMAT A10
COLUMN REFRESH_METHOD HEADING 'Refresh|Method' FORMAT A10
COLUMN UPDATABLE HEADING 'Updatable?' FORMAT A10
COLUMN LAST_REFRESH_DATE HEADING 'Last|Refresh|Date'
COLUMN LAST_REFRESH_TYPE HEADING 'Last|Refresh|Type' FORMAT A15

SELECT MVIEW_NAME, 
       OWNER,
       REFRESH_METHOD, 
       UPDATABLE, 
       LAST_REFRESH_DATE, 
       LAST_REFRESH_TYPE
    FROM DBA_MVIEWS; 

Your output looks similar to the following:

                                                 Last      Last
Materialized               Refresh               Refresh   Refresh
View Name       Owner      Method     Updatable? Date      Type
--------------- ---------- ---------- ---------- --------- ---------------
COUNTRIES_MV1   HR         FAST       Y          21-OCT-03 FAST
DEPARTMENTS_MV1 HR         FAST       Y          21-OCT-03 FAST
EMPLOYEES_MV1   HR         FAST       Y          21-OCT-03 FAST
JOBS_MV1        HR         FAST       Y          21-OCT-03 FAST
JOB_HISTORY_MV1 HR         FAST       Y          21-OCT-03 FAST
LOCATIONS_MV1   HR         FAST       Y          21-OCT-03 FAST
REGIONS_MV1     HR         FAST       Y          21-OCT-03 FAST

Listing Information About the Refresh Groups at a Materialized View Site

Each refresh group at a materialized view site is associated with a refresh job that refreshes the materialized views in the refresh group at a set interval. You can query the DBA_REFRESH data dictionary view to list the following information about the refresh jobs at a materialized view site:

  • The name of the refresh group.

  • The owner of the refresh group.

  • Whether the refresh job is broken.

  • The next date and time when the refresh job will run.

  • The current interval setting for the refresh job. The interval setting specifies the amount of time between the start of a job and the next start of the same job.

The following query displays this information:

COLUMN RNAME HEADING 'Refresh|Group|Name' FORMAT A10
COLUMN ROWNER HEADING 'Refresh|Group|Owner' FORMAT A10
COLUMN BROKEN HEADING 'Broken?' FORMAT A7
COLUMN next_refresh HEADING 'Next Refresh'
COLUMN INTERVAL HEADING 'Interval' FORMAT A20

SELECT RNAME, 
               ROWNER, 
       BROKEN, 
       TO_CHAR(NEXT_DATE, 'DD-MON-YYYY HH:MI:SS AM') next_refresh, 
       INTERVAL 
    FROM DBA_REFRESH 
    ORDER BY 1;

Your output looks similar to the following:

Refresh    Refresh
Group      Group
Name       Owner      Broken? Next Refresh            Interval
---------- ---------- ------- ----------------------- --------------------
HR_REFG    MVIEWADMIN N       24-OCT-2003 07:18:44 AM SYSDATE + 1/24

The N in the Broken? column means that the job is not broken. Therefore, the refresh job will run at the next start time. A Y in this column means that the job is broken.

Determining the Job ID for Each Refresh Job at a Materialized View Site

You can use the query in this section to list the following information about the refresh jobs at a materialized view site:

  • The job identification number of each refresh job. Each job created by the DBMS_JOB package is assigned a unique identification number.

  • The privilege schema, which is the schema whose default privileges apply to the job.

  • The schema that owns each refresh job. Typically, the materialized view administrator owns a refresh job. A common user name for the materialized view administrator is mviewadmin.

  • The name of the refresh group that the job refreshes.

  • The status of the refresh job, either normal or broken.

The following query displays this information:

COLUMN JOB HEADING 'Job ID' FORMAT 999999
COLUMN PRIV_USER HEADING 'Privilege|Schema' FORMAT A10
COLUMN RNAME HEADING 'Refresh|Group|Name' FORMAT A10
COLUMN ROWNER HEADING 'Refresh|Group|Owner' FORMAT A10
COLUMN BROKEN HEADING 'Broken?' FORMAT A7

SELECT J.JOB, 
       J.PRIV_USER, 
       R.ROWNER, 
       R.RNAME, 
       J.BROKEN
    FROM DBA_REFRESH R, DBA_JOBS J 
    WHERE R.JOB = J.JOB
    ORDER BY 1;

Your output looks similar to the following:

                   Refresh    Refresh
        Privilege  Group      Group
 Job ID Schema     Owner      Name       Broken?
------- ---------- ---------- ---------- -------
     21 MVIEWADMIN MVIEWADMIN HR_REFG    N

The N in the Broken? column means that the job is not broken. Therefore, the job will run at the next start time. A Y in this column means that the job is broken.

Determining Which Materialized Views Are Currently Refreshing

The following query shows the materialized views that are currently refreshing:

COLUMN SID HEADING 'Session|Identifier' FORMAT 9999
COLUMN SERIAL# HEADING 'Serial|Number' FORMAT 999999
COLUMN CURRMVOWNER HEADING 'Owner' FORMAT A15
COLUMN CURRMVNAME HEADING 'Materialized|View' FORMAT A25

SELECT * FROM V$MVREFRESH;

Your output looks similar to the following:

   Session  Serial                 Materialized
Identifier  Number Owner           View
---------- ------- --------------- -------------------------
        19     233 HR              COUNTRIES_MV
         5     647 HR              EMPLOYEES_MV

Note:

The V$MVREFRESH dynamic performance view does not contain information about updatable materialized views when the materialized views' deferred transactions are being pushed to its master.

Monitoring Administrative Requests

This section contains queries that you can run to display information about the administrative requests at a master site. This section contains the following topics:

Listing General Information About Administrative Requests

You can use the query in this section to list the following general information about the administrative requests at a master site:

  • The identification number of each administrative request

  • The action requested by each administrative request

  • The status of each request

  • The master site where the request is being executed

The following query displays this information:

COLUMN ID HEADING 'Admin|Request|ID' FORMAT 999999
COLUMN REQUEST HEADING 'Request' FORMAT A25
COLUMN STATUS HEADING 'Status' FORMAT A15
COLUMN MASTER HEADING 'Master|Site' FORMAT A25

SELECT ID, REQUEST, STATUS, MASTER FROM DBA_REPCATLOG;

Your output looks similar to the following:

  Admin
Request                                           Master
     ID Request                   Status          Site
------- ------------------------- --------------- -------------------------
     44 RESUME_MASTER_ACTIVITY    AWAIT_CALLBACK  ORC3EXAMPLE.COM

You can use the DO_DEFERRED_REPCAT_ADMIN procedure in the DBMS_REPCAT package to execute administrative requests.

Determining the Cause of Administrative Request Errors

You can determine the cause of an administrative request error by displaying its error message. The following query displays the error message for each administrative request that resulted in an error:

COLUMN ID HEADING 'Admin|Request|ID' FORMAT 999999
COLUMN REQUEST HEADING 'Request' FORMAT A30
COLUMN ERRNUM HEADING 'Error|Number' FORMAT 999999
COLUMN MESSAGE HEADING 'Error|Message' FORMAT A32

SELECT ID, REQUEST, ERRNUM, MESSAGE 
    FROM DBA_REPCATLOG WHERE STATUS = 'ERROR';

Your output looks similar to the following:

  Admin
Request                                  Error Error
     ID Request                         Number Message
------- ------------------------------ ------- ------------------------------
     70 CREATE_MASTER_REPOBJECT          -2292 ORA-02292: integrity constrain
                                               t (HR.DEPT_LOC_FK) violated -
                                               child record found
                                               ORA-02266: unique/primary keys
                                                in table referenced by enable
                                               d foreign keys

     71 GENERATE_INTERNAL_PKG_SUPPORT   -23308 ORA-23308: object HR.LOCATIONS
                                                does not exist or is invalid

Listing General Information About the Job that Executes Administrative Requests

Each master group is associated with a do_deferred_repcat_admin job that executes administrative requests. You can query the DBA_JOBS data dictionary view to list the following information about this job at a replication site:

  • The job identification number of each do_deferred_repcat_admin job. Each job created by the DBMS_JOB package is assigned a unique identification number.

  • The privilege schema, which is the schema whose default privileges apply to the job.

  • The status of each do_deferred_repcat_admin job, either normal or broken.

  • The next date and time when each do_deferred_repcat_admin job will run.

  • The current interval setting for each do_deferred_repcat_admin job. The interval setting specifies the amount of time between the start of a job and the next start of the same job.

The following query displays this information:

COLUMN JOB HEADING 'Job ID' FORMAT 999999
COLUMN PRIV_USER HEADING 'Privilege|Schema' FORMAT A10
COLUMN BROKEN HEADING 'Broken?' FORMAT A7
COLUMN next_start HEADING 'Next Start'
COLUMN INTERVAL HEADING 'Interval' FORMAT A20

SELECT JOB, 
       PRIV_USER, 
       BROKEN, 
       TO_CHAR(NEXT_DATE,'DD-MON-YYYY HH:MI:SS AM') next_start, 
       INTERVAL 
    FROM DBA_JOBS 
    WHERE WHAT LIKE '%dbms_repcat.do_deferred_repcat_admin%' 
    ORDER BY 1; 

Your output looks similar to the following:

        Privilege
 Job ID Schema     Broken? Next Start              Interval
------- ---------- ------- ----------------------- --------------------
     24 REPADMIN   N       24-OCT-2003 07:23:48 AM SYSDATE + (1/144)

The N in the Broken? column means that the job is not broken. Therefore, the job will run at the next start time. A Y in this column means that the job is broken.

Checking the Definition of Each do_deferred_repcat_admin Job

You can query the DBA_JOBS data dictionary view to show the definition of each do_deferred_repcat_admin job at a replication site. The following query shows the definitions:

COLUMN JOB HEADING 'Job ID' FORMAT 999999
COLUMN WHAT HEADING 'Definitions of Admin Req Jobs' FORMAT A70

SELECT JOB, WHAT 
  FROM DBA_JOBS 
  WHERE WHAT LIKE '%dbms_repcat.do_deferred_repcat_admin%' 
  ORDER BY 1;

Your output looks similar to the following:

 Job ID Definitions of Admin Req Jobs
------- ----------------------------------------------------------------------
    321 dbms_repcat.do_deferred_repcat_admin('"HR_REPG"', FALSE);
    342 dbms_repcat.do_deferred_repcat_admin('"OE_RG"', FALSE);

Monitoring the Deferred Transactions Queue

This section contains queries that you can run to display information about the deferred transactions queue at a replication site. This section contains the following topics:

Monitoring Transaction Propagation

This section contains queries that you can run to display information about propagation of transactions in the deferred transactions queue.

Listing the Number of Deferred Transactions for Each Destination Master Site

You can find the number of unpropagated deferred transactions for each destination master site by running the query in this section. This query shows each master site to which the current master site is propagating deferred transactions and the number of deferred transactions to be propagated to each destination site.

Run the following query to see the number of deferred and error transactions:

COLUMN DEST HEADING 'Destination' FORMAT A45
COLUMN TRANS HEADING 'Def Trans' FORMAT 9999
      
SELECT DBLINK DEST, COUNT(*) TRANS
    FROM DEFTRANDEST D 
    GROUP BY DBLINK;  

Your output looks similar to the following:

Destination                                   Def Trans
--------------------------------------------- ---------
ORC2.EXAMPLE.COM                                      1
ORC3.EXAMPLE.COM                                      1

Note:

This query can be expensive if you have a large number of transactions waiting to be propagated.

Listing General Information About the Push Jobs at a Replication Site

Each scheduled link at a replication site is associated with a push job that propagates deferred transactions in the deferred transaction queue to a destination site. You can use the query in this section to list the following information about the push jobs at a replication site:

  • The job identification number of each push job. Each job created by the DBMS_JOB package is assigned a unique identification number.

  • The privilege schema, which is the schema whose default privileges apply to the job.

  • The destination site where the deferred transactions are pushed.

  • The status of the push job, either normal or broken.

The following query displays this information:

COLUMN JOB HEADING 'Job ID' FORMAT 999999
COLUMN PRIV_USER HEADING 'Privilege|Schema' FORMAT A10
COLUMN DBLINK HEADING 'Destination' FORMAT A40
COLUMN BROKEN HEADING 'Broken?' FORMAT A7

SELECT J.JOB, 
       J.PRIV_USER, 
       S.DBLINK,
       J.BROKEN      
    FROM DEFSCHEDULE S, DBA_JOBS J 
    WHERE S.DBLINK != (SELECT GLOBAL_NAME FROM GLOBAL_NAME)
    AND S.JOB = J.JOB 
    ORDER BY 1; 

Your output looks similar to the following:

        Privilege
 Job ID Schema     Destination                              Broken?
------- ---------- ---------------------------------------- -------
     22 REPADMIN   ORC2.EXAMEPLE.COM                        N
     23 REPADMIN   ORC3.EXAMEPLE.COM                        N

The N in the Broken? column means that the job is not broken. Therefore, the job will run at the next start time. A Y in this column means that the job is broken.

Determining the Next Start Time and Interval for the Push Jobs

Each scheduled link at a replication site is associated with a push job that propagates deferred transactions in the deferred transaction queue to a destination site. You can query the DEFSCHEDULE and DBA_JOBS data dictionary views to list the following information about the push jobs at a replication site:

  • The job identification number of each push job. Each job created by the DBMS_JOB package is assigned a unique identification number.

  • The destination site where the deferred transactions are pushed.

  • The next date and time when the push job will run.

  • The current interval setting for the push job. The interval setting specifies the amount of time between the start of a job and the next start of the same job.

The following query displays this information:

COLUMN JOB HEADING 'Job ID' FORMAT 999999
COLUMN DBLINK HEADING 'Destination' FORMAT A22
COLUMN next_start HEADING 'Next Start'
COLUMN INTERVAL HEADING 'Interval' FORMAT A25

SELECT JOB, 
       DBLINK,
       TO_CHAR(NEXT_DATE, 'DD-MON-YYYY HH:MI:SS AM') next_start, 
       INTERVAL       
    FROM DEFSCHEDULE
    WHERE DBLINK != (SELECT GLOBAL_NAME FROM GLOBAL_NAME)
    AND JOB IS NOT NULL 
    ORDER BY 1; 

Your output looks similar to the following:

 Job ID Destination            Next Start              Interval
------- ---------------------- ----------------------- -------------------------
     22 ORC2.EXAMPLE.COM       24-OCT-2003 07:23:48 AM SYSDATE + (1/144)
     23 ORC3.EXAMPLE.COM       24-OCT-2003 07:23:48 AM SYSDATE + (1/144)

Determining the Total Number of Transactions Queued for Propagation

Run the following query to display the total number of transactions in the deferred transaction queue that are waiting to be propagated:

SELECT COUNT(DISTINCT DEFERRED_TRAN_ID) "Transactions Queued" 
    FROM DEFTRANDEST;

Your output looks similar to the following:

Transactions Queued
-------------------
                 37

Note:

This query can be expensive if you have a large number of transactions waiting to be propagated.

Monitoring Purges of Successfully Propagated Transactions

This section contains queries that you can run to display information about purges of successfully propagated transactions from the deferred transactions queue.

Listing General Information About the Purge Job

During standard setup of a replication site, you configure a purge job to remove successfully propagated transactions from the deferred transactions queue. You can query the DBA_JOBS data dictionary view to list the following information about the purge job at a replication site:

  • The job identification number of the purge job. Each job created by the DBMS_JOB package is assigned a unique identification number.

  • The privilege schema, which is the schema whose default privileges apply to the job.

  • The status of the job, either normal or broken.

  • The next date and time when the purge job will run.

  • The current interval setting for the purge job. The interval setting specifies the amount of time between the start of a job and the next start of the same job.

The following query displays this information:

COLUMN JOB HEADING 'Job ID' FORMAT 999999
COLUMN PRIV_USER HEADING 'Privilege|Schema' FORMAT A10
COLUMN BROKEN HEADING 'Broken?' FORMAT A7
COLUMN next_start HEADING 'Next Start'
COLUMN INTERVAL HEADING 'Interval' FORMAT A25

SELECT JOB, 
       PRIV_USER, 
       BROKEN, 
       TO_CHAR(NEXT_DATE, 'DD-MON-YYYY HH:MI:SS AM') next_start, 
       INTERVAL
    FROM DBA_JOBS 
    WHERE WHAT LIKE '%dbms_defer_sys.purge%' 
    ORDER BY 1;

Your output looks similar to the following:

        Privilege
 Job ID Schema     Broken? Next Start              Interval
------- ---------- ------- ----------------------- -------------------------
     21 REPADMIN   N       24-OCT-2003 07:42:18 AM SYSDATE + 1/24

The N in the Broken? column means that the job is not broken. Therefore, the job will run at the next start time. A Y in this column means that the job is broken.

Checking the Definition of the Purge Job

You can query the DBA_JOBS data dictionary view to show the definition of the purge job at a replication site. The following query shows the definition:

SELECT WHAT "Definition of the Purge Job" 
    FROM DBA_JOBS 
    WHERE WHAT LIKE '%dbms_defer_sys.purge%' ORDER BY 1;

Your output looks similar to the following:

Definition of the Purge Job
--------------------------------------------------------------------------------
declare rc binary_integer; begin rc := sys.dbms_defer_sys.purge( delay_seconds=>
0); end;

Determining the Amount of Time Since the Last Purge

The following query shows the total amount of time, in minutes, since the successfully propagated transactions were purged from the deferred transactions queue:

SELECT ((SYSDATE - LAST_PURGE_TIME) / 60) "Minutes Since Last Purge" 
    FROM V$REPLQUEUE; 

Your output looks similar to the following:

Minutes Since Last Purge
------------------------
              13.43333

Determining the Total Number of Purged Transactions

The following query shows the total number of successfully propagated transactions that have been purged from the deferred transaction queue since the instance was last started:

SELECT TXNS_PURGED "Transactions Purged" 
    FROM V$REPLQUEUE; 

Your output looks similar to the following:

Transactions Purged
-------------------
               6541

Monitoring the Error Queue

This section contains queries that you can run to display information about the error queue at a replication site. The error queue contains deferred transactions that resulted in an error at the destination site. These error transactions are placed in the error queue at the destination site.

This section contains the following topics:

Listing General Information About the Error Transactions at a Replication Site

The following query lists the general information about the error transactions at a replication site:

COLUMN DEFERRED_TRAN_ID HEADING 'Deferred|Transaction|ID' FORMAT A11
COLUMN ORIGIN_TRAN_DB HEADING 'Origin|Database' FORMAT A16
COLUMN DESTINATION HEADING 'Destination|Database' FORMAT A16
COLUMN TIME_OF_ERROR HEADING 'Time of|Error' FORMAT A22
COLUMN ERROR_NUMBER HEADING 'Oracle|Error|Number' FORMAT 999999

SELECT DEFERRED_TRAN_ID, 
       ORIGIN_TRAN_DB, 
       DESTINATION,
       TO_CHAR(START_TIME, 'DD-Mon-YYYY hh24:mi:ss') TIME_OF_ERROR,
       ERROR_NUMBER 
    FROM DEFERROR ORDER BY START_TIME;

Your output looks similar to the following:

Deferred                                                            Oracle
Transaction Origin           Destination      Time of                  Error
ID          Database         Database         Error                   Number
----------- ---------------- ---------------- ---------------------- -------
1.8.2470    ORC2.EXAMPLE.COM ORC1.EXAMPLE.COM 22-Oct-2003 07:19:14      1403

You can use the deferred transaction ID and the destination database to either attempt to rerun the transaction that caused the error or to delete the error.

For example, to attempt to rerun the transaction in the previous example, enter the following:

EXECUTE DBMS_DEFER_SYS.EXECUTE_ERROR('1.8.2470', 'ORC1.EXAMPLE.COM');

To delete the error in the previous example, enter the following:

EXECUTE DBMS_DEFER_SYS.DELETE_ERROR('1.8.2470', 'ORC1.EXAMPLE.COM');

Typically, you should delete an error only if you have resolved it manually.

Determining the Percentage of Error Transactions

When propagating transactions to a remote master site, some transactions are propagated and applied successfully while other transactions can result in errors at the remote master site. Transactions that result in errors are called error transactions.

Run the following query to display the percentage of error transactions that resulted from propagation to the remote master site orc2.example.com:

SELECT DECODE(TOTAL_TXN_COUNT, 0, 'No Transactions', 
       (TOTAL_ERROR_COUNT/TOTAL_TXN_COUNT)*100) "ERROR PERCENTAGE" 
  FROM DEFSCHEDULE 
  WHERE DBLINK = 'ORC2.EXAMPLE.COM';

Your output looks similar to the following:

Error Percentage
----------------
           3.265

Note:

If this query returns 'No transactions', then no transactions have been propagated to the specified remote site since the statistics were last cleared.

Listing the Number of Error Transactions from Each Origin Master Site

You can find the number of transaction errors resulting from pushes by each origin master site by running the query in this section.

Run the following query to see the number of deferred and error transactions:

COLUMN SOURCE HEADING 'Origin' FORMAT A45
COLUMN ERRORS HEADING 'Def Trans Errors' FORMAT 9999

SELECT E.ORIGIN_TRAN_DB SOURCE, COUNT(*) ERRORS 
    FROM DEFERROR E 
    GROUP BY E.ORIGIN_TRAN_DB;

Your output looks similar to the following:

Origin                                        Def Trans Errors
--------------------------------------------- ----------------
ORC2.EXAMPLE.COM                                             1
ORC3.EXAMPLE.COM                                             3

Listing the Error Messages for the Error Transactions at a Replication Site

The following query lists the error messages for the error transactions at a replication site:

COLUMN DEFERRED_TRAN_ID HEADING 'Deferred|Transaction|ID' FORMAT A11
COLUMN ERROR_MSG HEADING 'Error Messages' FORMAT A68

SELECT DEFERRED_TRAN_ID, ERROR_MSG 
    FROM DEFERROR;

Your output looks similar to the following:

Deferred
Transaction
ID          Error Messages
----------- --------------------------------------------------------------------
1.8.2470    ORA-01403: no data found

Determining the Error Operations at a Replication Site

The following query lists the type of operation that was attempted for each call that caused an error at a replication site:

COLUMN CALLNO HEADING 'Call|Number' FORMAT 9999
COLUMN DEFERRED_TRAN_ID HEADING 'Deferred|Transaction|ID' FORMAT A11
COLUMN PACKAGENAME HEADING 'Package|Name' FORMAT A20
COLUMN PROCNAME HEADING 'Operation' FORMAT A15
COLUMN ORIGIN_TRAN_DB HEADING 'Origin|Database' FORMAT A16

SELECT /*+ ORDERED */ 
       C.CALLNO, 
       C.DEFERRED_TRAN_ID, 
       C.PACKAGENAME,
       C.PROCNAME, E.ORIGIN_TRAN_DB
    FROM DEFERROR E, DEFCALL C
    WHERE C.DEFERRED_TRAN_ID = E.DEFERRED_TRAN_ID
    AND C.CALLNO = E.CALLNO
    ORDER BY E.START_TIME;

Your output looks similar to the following:

       Deferred
  Call Transaction Package                              Origin
Number ID          Name                 Operation       Database
------ ----------- -------------------- --------------- ----------------
     0 1.8.2470    EMPLOYEES$RP         REP_UPDATE      ORC2.EXAMPLE.COM

Monitoring Performance in a Replication Environment

This section contains queries that you can run to monitor the performance of your replication environment. This section contains the following topics:

Tracking the Average Number of Row Changes in a Replication Transaction

The following query shows the average number of row changes in a replication transaction since instance startup:

SELECT DECODE(TXNS_ENQUEUED, 0, 'No Transactions Enqueued',
       (CALLS_ENQUEUED / TXNS_ENQUEUED)) "Average Number of Row Changes" 
  FROM V$REPLQUEUE;

Your output looks similar to the following:

Average Number of Row Changes
-----------------------------
                        56.16

Note:

If this query returns 'No Transactions Enqueued', then no transactions have been enqueued since the start of the instance.

Tracking the Rate of Transactions Entering the Deferred Transactions Queue

The following query shows the average number of transactions for each second entering at the deferred transactions queue at the current site since instance startup:

SELECT (R.TXNS_ENQUEUED / ((SYSDATE - I.STARTUP_TIME)*24*60*60)) "Average TPS" 
    FROM V$REPLQUEUE R, V$INSTANCE I;

Your output looks similar to the following:

Average TPS
-----------
        150

Determining the Average Network Traffic Created to Propagate a Transaction

Propagation of deferred transactions creates a certain amount of traffic on your network. Here, the network traffic created by a transaction is the number of bytes being sent and received and the number of network round trips needed to propagate the transaction.

A round trip is one or more consecutively sent messages followed by one or more consecutively received messages. For example, both of the following scenarios constitute only one round trip:

  • Site A sends one message to site B and then site B sends one message to site A.

  • Site A sends 20 messages to site B and then site B sends one message to sit|)e A.

These scenarios illustrate that the number of messages is irrelevant when evaluating the number of round trips, because the number of round trips is the number of back and forth communications between sites.

The following query shows the average network traffic created when propagating a transaction to the orc2.example.com remote master site:

COLUMN AV_BYTES HEADING 'Average Bytes' FORMAT 999999999
COLUMN AV_TRIPS HEADING 'Average Round Trips' FORMAT 9999999

SELECT  
 DECODE(TOTAL_TXN_COUNT, 0, 'No Transactions',
 ((TOTAL_BYTES_SENT + TOTAL_BYTES_RECEIVED) / TOTAL_TXN_COUNT)) AV_BYTES, 
 DECODE(TOTAL_TXN_COUNT, 0, 'No Transactions', 
 (TOTAL_ROUND_TRIPS / TOTAL_TXN_COUNT)) AV_TRIPS 
 FROM DEFSCHEDULE WHERE DBLINK = 'ORC2.EXAMPLE.COM';

Your output looks similar to the following:

Average Bytes          Average Round Trips
---------------------- -------------------
69621.5                5

Note:

  • If this query returns 'No transactions' in both columns, then no transactions have been propagated to the specified remote site since the statistics were last cleared.

  • This query returns results only if parallel propagation is used with the specified database link. To use parallel propagation, set the parallelism parameter to 1 or greater when you run the SCHEDULE_PUSH procedure in the DBMS_DEFER_SYS package.



See Also:


Determining the Average Amount of Time to Apply Transactions at Remote Sites

Average latency is the average number of seconds between the first call of a transaction on the current site and the confirmation that the transaction was applied at the remote site. The first call begins when the user makes the first data manipulation language (DML) change, not when the transaction is committed.

The following query shows the average latency for applying transactions at the remote master site orc2.example.com:

SELECT AVG_LATENCY "Average Latency" 
    FROM DEFSCHEDULE 
    WHERE DBLINK='ORC2.EXAMPLE.COM'; 

Your output looks similar to the following:

Average Latency
---------------
           25.5

Determining the Percentage of Time the Parallel Propagation Job Spends Sleeping

When the parallel propagation coordinator is inactive, it is sleeping. You control the amount of time that the propagation coordinator sleeps using the delay_seconds parameter in the DBMS_DEFER_SYS.PUSH procedure.

The following query shows the percentage of time that the parallel propagation coordinator spends sleeping when propagating transactions to the orc2.example.com remote master site:

SELECT DECODE(AVG_THROUGHPUT, 0, NULL, 
       ((TOTAL_SLEEP_TIME / (TOTAL_TXN_COUNT / AVG_THROUGHPUT)) * 100)) 
       "Percent Sleep Time" 
  FROM DEFSCHEDULE WHERE DBLINK = 'ORC2.EXAMPLE.COM'; 

Your output looks similar to the following:

Percent Sleep Time
------------------
                 2

In this case, the parallel propagation coordinator is active 98% of the time.


Note:

If this query returns a NULL, then no transactions have been propagated to the specified remote site since the statistics were last cleared or since the last database startup.

Clearing the Statistics for a Remote Master Site in the DEFSCHEDULE View

To clear the propagation statistics in the DEFSCHEDULE view for a particular remote master site, use the CLEAR_PROP_STATISTICS procedure in the DBMS_DEFER_SYS package. For example, to clear the propagation statistics for the orc2.example.com remote master site, run the following procedure:

BEGIN
  DBMS_DEFER_SYS.CLEAR_PROP_STATISTICS (
   dblink => 'ORC2.EXAMPLE.COM');
END;
/

Monitoring Parallel Propagation of Deferred Transactions Using V$REPLPROP

The V$REPLPROP dynamic performance view provides information about current parallel propagation sessions.


Note:

The V$REPLPROP dynamic performance view is only relevant if you are using parallel propagation of deferred transactions. If you are using serial propagation, then this view is empty.

Determining the Databases to Which You Are Propagating Deferred Transactions

Run the following query to list the database link of each database to which you are currently propagating deferred transactions using parallel propagation:

SELECT DBLINK "Database Link"
    FROM V$REPLPROP 
    WHERE NAME LIKE '%Coordinator%';

Your output looks similar to the following:

Database Link
-----------------
ORC2.EXAMPLE.COM
ORC3.EXAMPLE.COM

Determining the Transactions Currently Being Propagated to a Remote Master

You can list the following information about the transactions that are currently being propagated to a specified remote master site using parallel propagation:

  • The transaction identification number of each transaction.

  • The number of calls in each transaction.

  • The percentage of processed calls in each transaction. The number in this column becomes larger as the calls in the transaction are processed. When the number reaches 100, all of the calls are processed.

The following query displays this information:

SELECT /*+ ORDERED */ P.XID "Tran Being Propagated",
       (MAX(C.CALLNO) + 1) "Number of Calls in Tran",
       (P.SEQUENCE/MAX(C.CALLNO) + 1) * 100 "% Processed Calls"
   FROM V$REPLPROP P, DEFCALL C
   WHERE P.NAME LIKE '%SLAVE%'
   AND P.DBLINK = 'mv4.example.com'
   AND C.DEFERRED_TRAN_ID = P.XID
   GROUP BY P.XID, P.SEQUENCE;

Your output looks similar to the following:

Tran Being Propagated  Number of Calls in Tran % Processed Calls
---------------------- ----------------------- -----------------
1.11.4264                                43357               78
1.15.4256                                23554               49

The transaction identification numbers should change as existing transactions are pushed and new transactions are processed. This query can be particularly useful if the any of the following conditions apply to your replication environment:

  • You push a large number of transactions on a regular basis.

  • You have some transactions that are very large.

  • You are simulating continuous push using asynchronous propagation.

If the first two bullets apply to your replication environment, then you can run this query to check if the processes are pushing the transactions. In this type of environment, the processes do not exist when they are not pushing transactions.

In replication environments that are simulating continuous push, the processes exist whenever there are transactions to push in the deferred transactions queue. When there are no transactions to push, the processes might not exist. So, when there are transactions to push, you can use this query to ensure that the processes exist and are processing the transactions.


See Also:

Oracle Database Advanced Replication for more information about scheduling continuous push in your replication environment

PK@3)|)PKfUI OEBPS/toc.htm Table of Contents

Contents

Preface

Part I Configuring Your Replication Environment

1 Overview of Advanced Replication

2 Configuring the Replication Sites

3 Creating a Master Group

4 Creating a Deployment Template

5 Creating a Materialized View Group

6 Configuring Conflict Resolution

Part II Managing and Monitoring Your Replication Environment

7 Managing a Master Replication Environment

8 Managing a Materialized View Replication Environment

9 Managing Replication Objects and Queues

10 Monitoring a Replication Environment

Part III Replication Management API Packages Reference

11 Introduction to the Replication Management API Reference

12 DBMS_DEFER

13 DBMS_DEFER_QUERY

14 DBMS_DEFER_SYS

15 DBMS_OFFLINE_OG

16 DBMS_RECTIFIER_DIFF

17 DBMS_REFRESH

18 DBMS_REPCAT

19 DBMS_REPCAT_INSTANTIATE

20 DBMS_REPCAT_ADMIN

21 DBMS_REPCAT_RGT

22 DBMS_REPUTIL

Part IV Replication Data Dictionary Reference

23 Replication Catalog Views

24 Replication Dynamic Performance Views

25 Deferred Transaction Views

26 Materialized View and Refresh Group Views

Part V Appendixes

A Security Options

B User-Defined Conflict Resolution Methods

Index

PKqyLB8PKfUIOEBPS/rarmanmv.htm Managing a Materialized View Replication Environment

8 Managing a Materialized View Replication Environment

Materialized view replication provides the flexibility to build data sets to meet the needs of your users and front-end applications, while still meeting the requirements of your security configuration. This chapter describes how to manage materialized view sites with the replication management API.

This chapter contains these topics:

Refreshing Materialized Views

Refreshing a materialized view synchronizes the data in the materialized view's master(s) and the data in the materialized view. You can either refresh all of the materialized views in a refresh group at once, or you can refresh materialized views individually. If you have applications that depend on more than one materialized view at a materialized view site, then Oracle recommends using refresh groups so that the data is transactionally consistent in all of the materialized views used by the application.

The following example refreshes the hr_refg refresh group:

EXECUTE DBMS_REFRESH.REFRESH ('hr_refg');

The following example refreshes the hr.departments_mv materialized view:

BEGIN
   DBMS_MVIEW.REFRESH (
     list   =>  'hr.departments_mv', 
     method =>  '?');
END;
/

Note:

Do not use the DBMS_MVIEW.REFRESH_ALL_MVIEWS or the DBMS_MVIEW.REFRESH_DEPENDENT procedure to refresh materialized views used in a replication environment. Instead, use the DBMS_REFRESH.REFRESH or the DBMS_MVIEW.REFRESH procedure to refresh materialized views in a replication environment.


See Also:

Oracle Database PL/SQL Packages and Types Reference for more information about the DBMS_MVIEW package

Changing a Materialized View Group's Master Site

To change the master site of a materialized view group at a level 1 materialized view site to another master site, call the SWITCH_MVIEW_MASTER procedure in the DBMS_REPCAT package, as shown in the following example:

BEGIN
   DBMS_REPCAT.SWITCH_MVIEW_MASTER (
      gname  => 'hr_repg',
      master => 'orc3.example.com');
END;
/

In this example, the master site for the hr_repg replication group is changed to the orc3.example.com master site. You must call this procedure at the materialized view site whose master site you want to change. The new database must be a master site in the replication environment. When you call this procedure, Oracle uses the new master to perform a full refresh of each materialized view in the local materialized view group. Ensure that you have set up the materialized view site to use the new master site before you run the SWITCH_MVIEW_MASTER procedure.

The entries in the SYS.SLOG$ table at the old master site for the switched materialized view are not removed. As a result, the materialized view log (MLOG$ table) of the switched updatable materialized view at the old master site has the potential to grow indefinitely, unless you purge it by calling DBMS_MVIEW.PURGE_LOG.


Note:

You cannot switch the master of materialized views that are based on other materialized views (level 2 and greater materialized views). Such a materialized view must be dropped and re-created if you want to base it on a different master.

Dropping Materialized View Groups and Objects

You might need to drop replication activity at a materialized view site for a number of reasons. Perhaps the data requirements have changed or an employee has left the company. In any case, as a DBA you will need to drop the replication support for the target materialized view site.

This section contains the following sections:

Dropping a Materialized View Group Created with a Deployment Template

If a materialized view group was created with a deployment template, then, before you drop the materialized view group at the remote materialized view site, you need to execute the DROP_SITE_INSTANTIATION procedure at the target master site of the materialized view group. In addition to removing the metadata relating to the materialized view group, this procedure also removes the related deployment template data regarding this site.

The DROP_SITE_INSTANTIATION procedure has a public and a private version. The public version allows the owner of the materialized view group to drop the materialized view site, while the private version allows the replication administrator to drop a materialized view site on behalf of the materialized view group owner.

Using the Public Version of DROP_SITE_INSTANTIATION

Meet the following requirements to complete these actions:

Executed As:

  • Materialized View Group Owner at Master Site

  • Materialized View Administrator at Materialized View Site

Executed At:

  • Master Site for Target Materialized View Site

  • Materialized View Site

Replication Status: Normal

Complete the following steps to drop a materialized view group created with a deployment template.


Note:

If you are viewing this document online, then you can copy the text from the "BEGINNING OF SCRIPT" line after this note to the "END OF SCRIPT" line into a text editor and then edit the text to create a script for your environment.

/************************* BEGINNING OF SCRIPT ******************************

Step 1   Connect to the master site as the materialized view group owner.

*/
SET ECHO ON

SPOOL drop_mv_group_public.out

CONNECT hr@orc3.example.com

/*

Step 2   Drop the instantiated materialized view site from the master site.

*/

BEGIN
   DBMS_REPCAT_INSTANTIATE.DROP_SITE_INSTANTIATION( 
      refresh_template_name =>  'hr_refg_dt',
      site_name => 'mv4.example.com');
END;
/

/*

Step 3   Connect to the remote materialized view site as the materialized view administrator.

*/
CONNECT mviewadmin@mv4.example.com

/*

If you are not able to connect to the remote materialized view site, then the target materialized view group cannot refresh, but the existing data still remains at the materialized view site.

Step 4   Drop the materialized view group.

*/
BEGIN
   DBMS_REPCAT.DROP_MVIEW_REPGROUP (
      gname => 'hr_repg',
      drop_contents => TRUE);
END;
/

/*

If you want to physically remove the contents of the materialized view group from the materialized view database, then be sure that you specify TRUE for the drop_contents parameter.

Step 5   Remove the refresh group.

Connect as the refresh group owner and remove the refresh group.

*/

CONNECT hr@mv4.example.com

BEGIN
   DBMS_REFRESH.DESTROY (
       name => 'hr_refg');
END;
/

SET ECHO OFF

SPOOL OFF

/************************* END OF SCRIPT **********************************/

Using the Private Version of DROP_SITE_INSTANTIATION

The following steps are to be performed by the replication administrator on behalf of the materialized view group owner. Meet the following requirements to complete these actions:

Executed As:

  • Replication Administrator at Master Site

  • Materialized View Administrator at Materialized View Site

Executed At:

  • Master Site for Target Materialized View Site

  • Materialized View Site

Replication Status: Normal

Complete the following steps to drop a materialized view group created with a deployment template.


Note:

If you are viewing this document online, then you can copy the text from the "BEGINNING OF SCRIPT" line after this note to the "END OF SCRIPT" line into a text editor and then edit the text to create a script for your environment.

/************************* BEGINNING OF SCRIPT ******************************

Step 1   Connect to the master site as the replication administrator.

*/
SET ECHO ON

SPOOL drop_mv_group_private.out

CONNECT repadmin@orc1.example.com

/*

Step 2   Drop the instantiated materialized view site from the master site.

*/

BEGIN
   DBMS_REPCAT_RGT.DROP_SITE_INSTANTIATION ( 
      refresh_template_name => 'hr_refg_dt',
      user_name             => 'hr',
      site_name             => 'mv4.example.com');
END;
/

/*

Step 3   Connect to the remote materialized view site as the materialized view administrator.

*/
CONNECT mviewadmin@mv4.example.com

/*

If you are unable to connect to the remote materialized view site, then the target materialized view group cannot refresh, but the existing data still remains at the materialized view site.

Step 4   Drop the materialized view group.

*/
BEGIN
   DBMS_REPCAT.DROP_MVIEW_REPGROUP (
      gname => 'hr_repg',
      drop_contents => TRUE,
      gowner => 'hr');
END;
/

/*

If you want to physically remove the contents of the materialized view group from the materialized view database, then be sure that you specify TRUE for the drop_contents parameter.

Step 5   Remove the refresh group.

Connect as the refresh group owner and remove the refresh group.

*/

CONNECT hr@mv4.example.com

BEGIN
   DBMS_REFRESH.DESTROY (
       name => 'hr_refg');
END;
/

SET ECHO OFF

SPOOL OFF

/************************* END OF SCRIPT **********************************/

Dropping a Materialized View Group or Objects Created Manually

The most secure method of removing replication support for a materialized view site is to physically drop the replicated objects or groups at the materialized view site. The following two sections describe how to drop these objects and groups while connected to the materialized view group.

Ideally, these procedures should be executed while the materialized view is connected to its target master site or master materialized view site. A connection ensures that any related metadata at the master site or master materialized view site is removed. If a connection to the master site or master materialized view site is not possible, then be sure to complete the procedure described in "Cleaning Up a Master Site or Master Materialized View Site" to manually remove the related metadata.

Dropping a Materialized View Group Created Manually

When it becomes necessary to remove a materialized view group from a materialized view site, use the DROP_MVIEW_REPGROUP procedure to drop a materialized view group. When you execute this procedure and are connected to the target master site or master materialized view site, the metadata for the target materialized view group at the master site or master materialized view site is removed. If you cannot connect, then see "Cleaning Up a Master Site or Master Materialized View Site" for more information.

Meet the following requirements to complete these actions:

Executed As: Materialized View Administrator

Executed At: Remote Materialized View Site

Replication Status: N/A

Complete the following steps to drop a materialized view group at a materialized view site:


Step 1   Connect to the materialized view site as the materialized view administrator.

CONNECT mviewadmin@mv1.example.com
Enter password: password

Step 2   Drop the materialized view group.

BEGIN
   DBMS_REPCAT.DROP_MVIEW_REPGROUP (
      gname => 'hr_repg',
      drop_contents => TRUE);
END;
/

If you want to physically remove the contents of the materialized view group from the materialized view database, then be sure that you specify TRUE for the drop_contents parameter.

Dropping Objects at a Materialized View Site

When it becomes necessary to remove an individual materialized view from a materialized view site, use the DROP_MVIEW_REPOBJECT procedure API to drop a materialized view. When you execute this procedure and are connected to the target master site or master materialized view site, the metadata for the target materialized view at the master site or master materialized view site is removed. If you cannot connect, then see "Cleaning Up a Master Site or Master Materialized View Site" for more information.

Meet the following requirements to complete these actions:

Executed As: Materialized View Administrator

Executed At: Remote Materialized View Site

Replication Status: N/A

Complete the following steps to drop an individual materialized view at a materialized view site.


Step 1   Connect to the materialized view site as the materialized view administrator.

CONNECT mviewadmin@mv1.example.com
Enter password: password

Step 2   Drop the materialized view.

BEGIN
   DBMS_REPCAT.DROP_MVIEW_REPOBJECT (
      sname => 'hr', 
      oname => 'employees_mv1', 
      type => 'SNAPSHOT', 
      drop_objects => TRUE);
END;
/

If you want to physically remove the contents of the materialized view from the materialized view database, then be sure that you specify TRUE for the drop_contents parameter.

Cleaning Up a Master Site or Master Materialized View Site

If you are unable to drop a materialized view group or materialized view object while connected to the target master site or master materialized view site, then you must remove the related metadata at the master site or master materialized view site manually. Cleaning up the metadata also ensures that you are not needlessly maintaining master table or master materialized view changes to a materialized view log. The following sections describe how to clean up your master site or master materialized view site after dropping a materialized view group or object.

Cleaning Up After Dropping a Materialized View Group

If you have executed the steps described in "Dropping a Materialized View Group Created Manually" and were not connected to the master site or master materialized view site, then you are encouraged to complete the following steps to clean up the target master site or master materialized view site.

Meet the following requirements to complete these actions:

Executed As: Replication Administrator

Executed At: Master Site or Master Materialized View Site for Target Materialized View Site

Replication Status: Normal

Complete the following steps to clean up a master site or master materialized view site after dropping a materialized view group:


Note:

If you are viewing this document online, then you can copy the text from the "BEGINNING OF SCRIPT" line after this note to the "END OF SCRIPT" line into a text editor and then edit the text to create a script for your environment.

/************************* BEGINNING OF SCRIPT ******************************

Step 1   Connect to the master site or master materialized view site as the replication administrator.

*/
SET ECHO ON

SPOOL cleanup_master1.out

CONNECT repadmin@orc1.example.com

/*

Step 2   Unregister the materialized view groups.

*/
BEGIN
   DBMS_REPCAT.UNREGISTER_MVIEW_REPGROUP (
      gname => 'hr_repg',
      mviewsite => 'mv1.example.com');
END;
/

/*

Step 3   Purge the materialized view logs of the entries that were marked for the target materialized views.

Execute the PURGE_MVIEW_FROM_LOG procedure for each materialized view that was in the materialized view groups you unregistered in Step 2.


Note:

If for some reason unregistering the materialized view group fails, then you should still complete this step.


See Also:

Oracle Database PL/SQL Packages and Types Reference for more information about the DBMS_MVIEW package

*/

BEGIN
   DBMS_MVIEW.PURGE_MVIEW_FROM_LOG (
      mviewowner => 'hr',
      mviewname => 'countries_mv1', 
      mviewsite => 'mv1.example.com');
END;
/

BEGIN
   DBMS_MVIEW.PURGE_MVIEW_FROM_LOG (
      mviewowner => 'hr',
      mviewname => 'departments_mv1', 
      mviewsite => 'mv1.example.com');
END;
/

BEGIN
   DBMS_MVIEW.PURGE_MVIEW_FROM_LOG (
      mviewowner => 'hr',
      mviewname => 'employees_mv1', 
      mviewsite => 'mv1.example.com');
END;
/

BEGIN
   DBMS_MVIEW.PURGE_MVIEW_FROM_LOG (
      mviewowner => 'hr',
      mviewname => 'jobs_mv1', 
      mviewsite => 'mv1.example.com');
END;
/

BEGIN
   DBMS_MVIEW.PURGE_MVIEW_FROM_LOG (
      mviewowner => 'hr',
      mviewname => 'job_history_mv1', 
      mviewsite => 'mv1.example.com');
END;
/

BEGIN
   DBMS_MVIEW.PURGE_MVIEW_FROM_LOG (
      mviewowner => 'hr',
      mviewname => 'locations_mv1', 
      mviewsite => 'mv1.example.com');
END;
/

BEGIN
   DBMS_MVIEW.PURGE_MVIEW_FROM_LOG (
      mviewowner => 'hr',
      mviewname => 'regions_mv1', 
      mviewsite => 'mv1.example.com');
END;
/

SET ECHO OFF

SPOOL OFF

/************************* END OF SCRIPT **********************************/

Cleaning Up Individual Materialized View Support

If you have executed the steps described in "Dropping Objects at a Materialized View Site" and were not connected to the master site or master materialized view site, then you are encouraged to complete the following steps to clean up the target master site or master materialized view site.

Meet the following requirements to complete these actions:

Executed As: Replication Administrator

Executed At: Master Site or Master Materialized View Site for Target Materialized View Site

Replication Status: Normal

Complete the following steps to clean up a master site or master materialized view site after dropping an individual materialized view.


Note:

If you are viewing this document online, then you can copy the text from the "BEGINNING OF SCRIPT" line after this note to the "END OF SCRIPT" line into a text editor and then edit the text to create a script for your environment.

/************************* BEGINNING OF SCRIPT ******************************

Step 1   Connect to the master site or master materialized view site as the replication administrator.

*/
SET ECHO ON

SPOOL cleanup_master2.out

CONNECT repadmin@orc1.example.com

/*

Step 2   Unregister the materialized view.

*/
BEGIN
   DBMS_MVIEW.UNREGISTER_MVIEW (
      mviewowner => 'hr',
      mviewname => 'employees_mv1',
      mviewsite => 'mv1.example.com');
END;
/

/*

See Also:

Oracle Database PL/SQL Packages and Types Reference for more information about the DBMS_MVIEW package

Step 3   Purge the associated materialized view log of the entries that were marked for the target materialized views.


Note:

If for some reason unregistering the materialized view fails, then you should still complete this step.


See Also:

Oracle Database PL/SQL Packages and Types Reference for more information about the DBMS_MVIEW package

*/

BEGIN
   DBMS_MVIEW.PURGE_MVIEW_FROM_LOG (
      mviewowner => 'hr',
      mviewname => 'employees_mv1', 
      mviewsite => 'mv1.example.com');
END;
/

SET ECHO OFF

SPOOL OFF

/************************* END OF SCRIPT **********************************/

Managing Materialized View Logs

The following sections explain how to manage materialized view logs:

Altering Materialized View Logs

After creating a materialized view log, you can alter its storage parameters and support for corresponding materialized views. The following sections explain more about altering materialized view logs. Only the following users can alter a materialized view log:

  • The owner of the master table or master materialized view.

  • A user with the SELECT privilege for the master table or master materialized view and ALTER privilege on the MLOG$_master_name, where master_name is the name of the master for the materialized view log. For example, if the master table is employees, then the materialized view log table name is MLOG$_employees.

Altering Materialized View Log Storage Parameters

To alter a materialized view log's storage parameters, use the ALTER MATERIALIZED VIEW LOG statement. For example, the following statement alters a materialized view log on the employees table in the hr schema:

ALTER MATERIALIZED VIEW LOG ON hr.employees
  PCTFREE 25
  PCTUSED 40;

Altering a Materialized View Log to Add Columns

To add new columns to a materialized view log, use the SQL statement ALTER MATERIALIZED VIEW LOG. For example, the following statement alters a materialized view log on the customers table in the sales schema:

ALTER MATERIALIZED VIEW LOG ON hr.employees
  ADD (department_id);

See Also:

Oracle Database Advanced Replication for more information about adding columns to a materialized view log

Managing Materialized View Log Space

Oracle automatically tracks which rows in a materialized view log have been used during the refreshes of materialized views, and purges these rows from the log so that the log does not grow endlessly. Because multiple simple materialized views can use the same materialized view log, rows already used to refresh one materialized view might still be needed to refresh another materialized view. Oracle does not delete rows from the log until all materialized views have used them.

For example, suppose two materialized views were created against the customers table in a master site. Oracle refreshes the customers materialized view at the spdb1 database. However, the server that manages the master table and associated materialized view log does not purge the materialized view log rows used during the refresh of this materialized view until the customers materialized view at the spdb2 database also refreshes using these rows.

Because Oracle must wait for all dependent materialized views to refresh before purging rows from a materialized view log, unwanted situations can occur that cause a materialized view log to grow indefinitely when multiple materialized views are based on the same master table or master materialized view.

For example, such situations can occur when more than one materialized view is based on a master table or master materialized view and one of the following conditions is true:

  • One materialized view is not configured for automatic refreshes and has not been manually refreshed for a long time.

  • One materialized view has an infrequent refresh interval, such as every year (365 days).

  • A network failure has prevented an automatic refresh of one or more of the materialized views based on the master table or master materialized view.

  • A network or site failure has prevented a master table or master materialized view from becoming aware that a materialized view has been dropped.


Note:

If you purge or TRUNCATE a materialized view log before a materialized view has refreshed the changes that were deleted, then the materialized view must perform a complete refresh.

Purging Rows from a Materialized View Log

Always try to keep a materialized view log as small as possible to minimize the database space that it uses. To remove rows from a materialized view log and make space for newer log records, you can perform one of the following actions:

  • Refresh the materialized views associated with the log so that Oracle can purge rows from the materialized view log.

  • Manually purge records in the log by deleting rows required only by the nth least recently refreshed materialized views.

To manually purge rows from a materialized view log, execute the PURGE_LOG procedure of the DBMS_MVIEW package at the database that contains the log. For example, to purge entries from the materialized view log of the customers table that are necessary only for the least recently refreshed materialized view, execute the following procedure:

BEGIN
   DBMS_MVIEW.PURGE_LOG (
      master => 'hr.employees',
      num    => 1,
      flag   => 'DELETE');
END;
/

Only the owner of a materialized view log or a user with the EXECUTE privilege for the DBMS_MVIEW package can purge rows from the materialized view log by executing the PURGE_LOG procedure.


See Also:

Oracle Database PL/SQL Packages and Types Reference for more information about the DBMS_MVIEW package

Truncating a Materialized View Log

If a materialized view log grows and allocates many extents, then purging the log of rows does not reduce the amount of space allocated for the log. In such cases, you should truncate the materialized view log. Only the owner of a materialized view log or a user with the DELETE ANY TABLE system privilege can truncate a materialized view log.

To reduce the space allocated for a materialized view log by truncating it, complete the following steps:


Step 1   Acquire an exclusive lock on the master table or master materialized view to prevent updates during the following process.

For example, issue a statement similar to the following:

LOCK TABLE hr.employees IN EXCLUSIVE MODE;

Step 2   Using a second database session, copy the rows in the materialized view log (in other words, the MLOG$ table) to a temporary table.

For example, issue a statement similar to the following:

CREATE TABLE hr.templog AS SELECT * FROM hr.MLOG$_employees;

Step 3   Using the second session, truncate the log using the SQL statement TRUNCATE TABLE.

For example, issue a statement similar to the following:

TRUNCATE TABLE hr.MLOG$_employees;

Step 4   Using the second session, reinsert the old rows.

Perform this step so that you do not have to perform a complete refresh of the dependent materialized views.

For example, issue statements similar to the following:

INSERT INTO hr.MLOG$_employees SELECT * FROM hr.templog;

DROP TABLE hr.templog;

Step 5   Using the first session, release the exclusive lock on the master table or master materialized view.

You can accomplish this by performing a rollback:

ROLLBACK;

Note:

Any changes made to the master table or master materialized view between the time you copy the rows to a new location and when you truncate the log do not appear until after you perform a complete refresh.

Reorganizing Master Tables that Have Materialized View Logs

To improve performance and optimize disk use, you can periodically reorganize master tables. This section describes how to reorganize a master and preserve the fast refresh capability of associated materialized views.


Note:

These sections do not discuss online redefinition of tables. Online redefinition is not allowed on master tables with materialized view logs, master materialized views, or materialized views. Online redefinition is allowed only on master tables that do not have materialized view logs. See the Oracle Database Administrator's Guide for more information about online redefinition of tables.

Reorganization Notification

When you reorganize a table, any ROWID information of the materialized view log must be invalidated. Oracle detects a table reorganization automatically only if the table is truncated as part of the reorganization.

If the table is not truncated, then Oracle must be notified of the table reorganization. To support table reorganizations, two procedures in the DBMS_MVIEW package, BEGIN_TABLE_REORGANIZATION and END_TABLE_REORGANIZATION, notify Oracle that the specified table has been reorganized. The procedures perform clean-up operations, verify the integrity of the logs and triggers that the fast refresh mechanism needs, and invalidate the ROWID information in the table's materialized view log. The inputs are the owner and name of the master to be reorganized. There is no output.

Truncating Masters

When a table is truncated, its materialized view log is also truncated. However, for primary key materialized views, you can preserve the materialized view log, allowing fast refreshes to continue. Although the information stored in a materialized view log is preserved, the materialized view log becomes invalid with respect to rowids when the master is truncated. The rowid information in the materialized view log will seem to be newly created and cannot be used by rowid materialized views for fast refresh.

The PRESERVE MATERIALIZED VIEW LOG option is the default. Therefore, if you specify the PRESERVE MATERIALIZED VIEW LOG option or no option, then the information in the master's materialized view log is preserved, but current rowid materialized views can use the log for a fast refresh only after a complete refresh has been performed.


Note:

To ensure that any previously fast refreshable materialized view is still refreshable, follow the guidelines in "Methods of Reorganizing a Database Table".

If the PURGE MATERIALIZED VIEW LOG option is specified, then the materialized view log is purged along with the master.

Examples

Either of the following two statements preserves materialized view log information when the master table named employees is truncated:

TRUNCATE TABLE hr.employees PRESERVE MATERIALIZED VIEW LOG;
TRUNCATE TABLE hr.employees;

The following statement truncates the materialized view log along with the master table:

TRUNCATE TABLE hr.employees PURGE MATERIALIZED VIEW LOG;

Methods of Reorganizing a Database Table

Oracle provides four table reorganization methods that preserve the capability for fast refresh. These appear in the following sections. Other reorganization methods require an initial complete refresh to enable subsequent fast refreshes.


Note:

Do not use Direct Loader during a reorganization of a master. Direct Loader can cause reordering of the columns, which could invalidate the log information used in subquery and LOB materialized views.

Method 1 for Reorganizing Table employees

Complete the following steps:

  1. Call DBMS_MVIEW.BEGIN_TABLE_REORGANIZATION for table employees.

  2. Rename table employees to employees_old.

  3. Create table employees as SELECT * FROM employees_old.

  4. Call DBMS_MVIEW.END_TABLE_REORGANIZATION for new table employees.


Caution:

When a table is renamed, its associated PL/SQL triggers are also adjusted to the new name of the table.

Ensure that no transaction is issued against the reorganized table between calling BEGIN_TABLE_REORGANIZATION and END_TABLE_REORGANIZATION.

Method 2 for Reorganizing Table employees

Complete the following steps:

  1. Call DBMS_MVIEW.BEGIN_TABLE_REORGANIZATION for table employees.

  2. Export table employees.

  3. Truncate table employees with PRESERVE MATERIALIZED VIEW LOG option.

  4. Import table employees using conventional path.

  5. Call DBMS_MVIEW.END_TABLE_REORGANIZATION for new table employees.


Caution:

When you truncate masters as part of a reorganization, you must use the PRESERVE MATERIALIZED VIEW LOG clause of the truncate table DDL.

Ensure that no transaction is issued against the reorganized table between calling BEGIN_TABLE_REORGANIZATION and END_TABLE_REORGANIZATION.

Method 3 for Reorganizing Table employees

Complete the following steps:

  1. Call DBMS_MVIEW.BEGIN_TABLE_REORGANIZATION for table employees.

  2. Export table employees.

  3. Rename table employees to employees_old.

  4. Import table employees using conventional path.

  5. Call DBMS_MVIEW.END_TABLE_REORGANIZATION for new table employees.


Caution:

When a table is renamed, its associated PL/SQL triggers are also adjusted to the new name of the table.

Ensure that no transaction is issued against the reorganized table between calling BEGIN_TABLE_REORGANIZATION and END_TABLE_REORGANIZATION.

Method 4 for Reorganizing Table employees

Complete the following steps:

  1. Call DBMS_MVIEW.BEGIN_TABLE_REORGANIZATION for table employees.

  2. Select contents of table employees to a flat file.

  3. Rename table employees to employees_old.

  4. Create table employees with the same shape as employees_old.

  5. Run SQL*Loader using conventional path.

  6. Call DBMS_MVIEW.END_TABLE_REORGANIZATION for new table employees.


Caution:

When a table is renamed, its associated PL/SQL triggers are also adjusted to the new name of the table.

Ensure that no transaction is issued against the reorganized table between calling BEGIN_TABLE_REORGANIZATION and END_TABLE_REORGANIZATION.


See Also:

Oracle Database PL/SQL Packages and Types Reference for more information about the DBMS_MVIEW package

Dropping a Materialized View Log

You can delete a materialized view log regardless of its master or any existing materialized views. For example, you might decide to drop a materialized view log if one of the following conditions is true:

  • All materialized views of a master have been dropped.

  • All materialized views of a master are to be refreshed using complete refresh, not fast refresh.

  • A master no longer supports materialized views that require fast refreshes.

Here, a master can be a master table or a master materialized view. To delete a materialized view log, execute the DROP MATERIALIZED VIEW LOG statement in SQL*Plus. For example, the following statement deletes the materialized view log for a table named customers in the sales schema:

DROP MATERIALIZED VIEW LOG ON hr.employees;

Only the owner of the master or a user with the DROP ANY TABLE system privilege can drop a materialized view log.

Performing an Offline Instantiation of a Materialized View Site Using Export/Import

Adding a new materialized view site to your replication environment can cause network traffic. The network traffic is caused by propagating the entire contents of tables or materialized views through the network to the new materialized view site.

To minimize such network traffic, you can add a new materialized view site using offline instantiation procedure. With offline instantiation, you can create a new materialized view group at a materialized view site. Offline instantiation uses of Oracle's Export and Import utilities, which allow you to create an export file and transfer the data to the new site through a storage medium, such as CD-ROM, tape, and so on. Offline instantiation is especially useful for materialized views, because the target computer could be a laptop using a modem connection.

The following script performs an offline instantiation for a new materialized view group at a new materialized view site. The materialized view group is based on an existing master group at a master site. Meet the following requirements to complete these actions:

Executed As:

Executed At:

Replication Status: Normal

Materialized View Site:


See Also:


Complete the following steps to set up a materialized view site named mview.example.com.


Note:

If you are viewing this document online, then you can copy the text from the "BEGINNING OF SCRIPT" line after this note to the "END OF SCRIPT" line into a text editor and then edit the text to create a script for your environment.

/************************ BEGINNING OF SCRIPT *********************************

Step 1   Connect to the master site as the replication administrator.

*/
SET ECHO ON

SPOOL offline.out

CONNECT repadmin@orc1.example.com

/*

Step 2   Create the necessary materialized view logs, if they do not exist.

If materialized view logs do not already exist for the relevant master tables, then create them at the master site.

*/

CREATE MATERIALIZED VIEW LOG ON hr.countries;
CREATE MATERIALIZED VIEW LOG ON hr.departments;
CREATE MATERIALIZED VIEW LOG ON hr.employees;
CREATE MATERIALIZED VIEW LOG ON hr.jobs;
CREATE MATERIALIZED VIEW LOG ON hr.job_history;
CREATE MATERIALIZED VIEW LOG ON hr.locations;
CREATE MATERIALIZED VIEW LOG ON hr.regions;

/*

Step 3   Create a temporary schema at the master site for the materialized views.

To prepare materialized views for export, you must create the schema that contains the replicated objects.

In this example, create a temporary schema temp_schema.

*/

CONNECT system@orc1.example.com

CREATE TABLESPACE offline_mview
 DATAFILE 'offline_mview.dbf' SIZE 10M AUTOEXTEND ON
 EXTENT MANAGEMENT LOCAL AUTOALLOCATE;

CREATE TEMPORARY TABLESPACE offline_temp_mview
 TEMPFILE 'offline_temp_mview.dbf' SIZE 5M AUTOEXTEND ON;

ACCEPT password PROMPT 'Enter password for user: ' HIDE

CREATE USER temp_schema IDENTIFIED BY &password;

ALTER USER temp_schema DEFAULT TABLESPACE offline_mview
              QUOTA UNLIMITED ON offline_mview;

ALTER USER temp_schema TEMPORARY TABLESPACE offline_temp_mview;

GRANT ALTER SESSION, CREATE CLUSTER, CREATE DATABASE LINK, CREATE SEQUENCE,
  CREATE SESSION, CREATE SYNONYM, CREATE TABLE, CREATE VIEW, CREATE INDEXTYPE, 
  CREATE OPERATOR, CREATE PROCEDURE, CREATE TRIGGER, CREATE TYPE, 
  CREATE MATERIALIZED VIEW, SELECT ANY TABLE
TO temp_schema;

CONNECT temp_schema@orc1.example.com;

/*

Step 4   Create temporary materialized views at the master site in the separate schema you created in Step 3.

These materialized views contain the data that you transfer to your new materialized view site using the Export utility.


Note:

Ensure that the SELECT statements include the database link. In this example, the database link is orc1.example.com.

*/

CREATE MATERIALIZED VIEW temp_schema.countries
      REFRESH FAST WITH PRIMARY KEY FOR UPDATE AS SELECT *
      FROM hr.countries@orc1.example.com;

CREATE MATERIALIZED VIEW temp_schema.departments 
      REFRESH FAST WITH PRIMARY KEY FOR UPDATE AS SELECT *
      FROM hr.departments@orc1.example.com;

CREATE MATERIALIZED VIEW temp_schema.employees 
      REFRESH FAST WITH PRIMARY KEY FOR UPDATE AS SELECT *
      FROM hr.employees@orc1.example.com;

CREATE MATERIALIZED VIEW temp_schema.jobs 
      REFRESH FAST WITH PRIMARY KEY FOR UPDATE AS SELECT *
      FROM hr.jobs@orc1.example.com;

CREATE MATERIALIZED VIEW temp_schema.job_history 
      REFRESH FAST WITH PRIMARY KEY FOR UPDATE AS SELECT *
      FROM hr.job_history@orc1.example.com;

CREATE MATERIALIZED VIEW temp_schema.locations 
      REFRESH FAST WITH PRIMARY KEY FOR UPDATE AS SELECT *
      FROM hr.locations@orc1.example.com;

CREATE MATERIALIZED VIEW temp_schema.regions 
      REFRESH FAST WITH PRIMARY KEY FOR UPDATE AS SELECT *
      FROM hr.regions@orc1.example.com;

/*

Step 5   Create a directory object at each database.

Each database involved in this operation must have a directory object to hold the Data Pump dump file, and the user who will perform the export or import must have READ and WRITE privileges on this directory object. In this example, a Data Pump export is performed at the master site, and a Data Pump import is performed at the materialized view site.

While connected in SQL*Plus to a database as an administrative user who can create directory objects using the SQL statement CREATE DIRECTORY, create a directory object to hold the Data Pump dump file and log files. For example:

*/

CONNECT system@orc1.example.com

CREATE DIRECTORY DPUMP_DIR AS '/usr/dpump_dir';

CONNECT system@mview.example.com

CREATE DIRECTORY DPUMP_DIR AS '/usr/dpump_dir';

/*

Ensure that you complete these actions at both databases involved in the operation. In this example, SYSTEM user creates the directory objects and performs all exports and imports. If a user who does not own the directory object will perform the export or import, then grant the user READ and WRITE privileges on the directory object.

Step 6   Perform a schema-level export of the schema containing the materialized views.

On a command line, perform the export that will contain all data and metadata for the materialized views. This example connects as the SYSTEM user. The following is an example Data Pump export command:

expdp system SCHEMAS=temp_schema DIRECTORY=DPUMP_DIR 
DUMPFILE=temp_schema.dmp

See Also:

Oracle Database Utilities for information about performing a Data Pump export

*/

PAUSE Press <RETURN> to continue when the export is complete.

/*

Step 7   Connect to the new materialized view site as SYSTEM user.

*/
CONNECT system@mview.example.com

/*

Step 8   Drop the hr User

This example creates the materialized views in the hr schema at the materialized view site. This schema is created when Oracle is installed. This step drops the schema, but the schema will be re-created and populated with materialized views later in this example.

*/

DROP USER hr CASCADE;

/*

Step 9   Create necessary schema and database link at the materialized view site, if they do not exist.

Before you perform the offline instantiation of your materialized views, create the schema that will contain the materialized views at the new materialized view site and the database link from the materialized view site to the master site. The materialized views must be in the same schema that contains the master objects at the master site. If the schema exists, then grant the necessary privileges and create the database link.

*/

CREATE TABLESPACE demo_mview
 DATAFILE 'demo_mview.dbf' SIZE 10M AUTOEXTEND ON
 EXTENT MANAGEMENT LOCAL AUTOALLOCATE;

CREATE TEMPORARY TABLESPACE temp_mview
 TEMPFILE 'temp_mview.dbf' SIZE 5M AUTOEXTEND ON;

CREATE USER hr IDENTIFIED BY &password;

ALTER USER hr DEFAULT TABLESPACE demo_mview
              QUOTA UNLIMITED ON demo_mview;

ALTER USER hr TEMPORARY TABLESPACE temp_mview;

GRANT 
  CREATE SESSION, 
  CREATE TABLE, 
  CREATE PROCEDURE, 
  CREATE SEQUENCE, 
  CREATE TRIGGER, 
  CREATE VIEW, 
  CREATE SYNONYM, 
  ALTER SESSION,
  CREATE MATERIALIZED VIEW,
  ALTER ANY MATERIALIZED VIEW,
  CREATE DATABASE LINK
TO hr;

CONNECT hr@mview.example.com

CREATE DATABASE LINK orc1.example.com CONNECT TO hr IDENTIFIED by &password;

/*

Step 10   Connect to the new materialized view site as the materialized view administrator.

*/
CONNECT mviewadmin@mview.example.com

/*

Step 11   Create an empty materialized view group.

Run the DBMS_REPCAT.CREATE_MVIEW_REPGROUP procedure at the new materialized view site to create an empty materialized view group into which you will add your materialized views.

*/

BEGIN
   DBMS_REPCAT.CREATE_MVIEW_REPGROUP (
      gname            => 'hr_repg',
      master           => 'orc1.example.com',
      propagation_mode => 'ASYNCHRONOUS');
END;
/

/*

Step 12   Create an empty refresh group.

All materialized views that are added to a particular refresh group are refreshed at the same time. This ensures transactional consistency between the related materialized views in the refresh group.

*/

BEGIN
   DBMS_REFRESH.MAKE (
      name => 'mviewadmin.hr_refg',
      list => '', 
      next_date => SYSDATE, 
      interval => 'SYSDATE + 1/24',
      implicit_destroy => FALSE, 
      rollback_seg => '',
      push_deferred_rpc => TRUE, 
      refresh_after_errors => FALSE);
END;
/

/*

Step 13   In a separate terminal window, transfer the export dump file to the new materialized view site.

Using the DBMS_FILE_TRANSFER package, FTP or some other method, transfer the export dump file to the new materialized view site.

*/ 

PAUSE Press <RETURN> to continue after transferring the dump file. 

/*

Step 14   In a separate terminal window, import the materialized views to the owner at the new materialized view site.

On a command line, perform the import of the file that you exported in Step 5. This example connects as the SYSTEM user.

If you use Data Pump, then ensure that you import your data using the REMAP_SCHEMA parameter to import the data from the temporary user you created at the master site to the owner of the materialized views at the materialized view site. In this example, the temporary user at the master site is temp_schema and the materialized view owner at the materialized view site is hr.

Also, if you use Data Pump, then you can use the REMAP_TABLESPACE parameter if the tablespace is different at the master site and the materialized view site. In this example, the tablespace at the master site is offline_mview (created in Step 3) and the tablespace at the materialized view site is demo_mview (created in Step 9).

The following is an example import command:

impdp system DIRECTORY=DPUMP_DIR DUMPFILE=temp_schema.dmp 
REMAP_SCHEMA=temp_schema:hr REMAP_TABLESPACE=offline_mview:demo_mview

Only users with the DBA role or the IMP_FULL_DATABASE role can import using the REMAP_SCHEMA parameter.


See Also:

Oracle Database Utilities for information about performing a Data Pump import

*/

PAUSE Press <RETURN> to continue when the import is complete.

/*

Step 15   Add materialized views to the materialized view group.

Execute the DBMS_REPCAT.CREATE_MVIEW_REPOBJECT procedure to add the materialized views to the materialized view group you created in Step 9.

*/

BEGIN
   DBMS_REPCAT.CREATE_MVIEW_REPOBJECT (
      gname             => 'hr_repg',
      sname             => 'hr',
      oname             => 'countries',
      type              => 'SNAPSHOT',
      min_communication => TRUE);
END;
/

BEGIN
   DBMS_REPCAT.CREATE_MVIEW_REPOBJECT (
      gname             => 'hr_repg',
      sname             => 'hr',
      oname             => 'departments',
      type              => 'SNAPSHOT',
      min_communication => TRUE);
END;
/

BEGIN
   DBMS_REPCAT.CREATE_MVIEW_REPOBJECT (
      gname             => 'hr_repg',
      sname             => 'hr',
      oname             => 'employees',
      type              => 'SNAPSHOT',
      min_communication => TRUE);
END;
/

BEGIN
   DBMS_REPCAT.CREATE_MVIEW_REPOBJECT (
      gname             => 'hr_repg',
      sname             => 'hr',
      oname             => 'jobs',
      type              => 'SNAPSHOT',
      min_communication => TRUE);
END;
/

BEGIN
   DBMS_REPCAT.CREATE_MVIEW_REPOBJECT (
      gname             => 'hr_repg',
      sname             => 'hr',
      oname             => 'job_history',
      type              => 'SNAPSHOT',
      min_communication => TRUE);
END;
/

BEGIN
   DBMS_REPCAT.CREATE_MVIEW_REPOBJECT (
      gname             => 'hr_repg',
      sname             => 'hr',
      oname             => 'locations',
      type              => 'SNAPSHOT',
      min_communication => TRUE);
END;
/

BEGIN
   DBMS_REPCAT.CREATE_MVIEW_REPOBJECT (
      gname             => 'hr_repg',
      sname             => 'hr',
      oname             => 'regions',
      type              => 'SNAPSHOT',
      min_communication => TRUE);
END;
/

/*

Step 16   Add the materialized views to the refresh group.

All of the materialized view group objects that you add to the refresh group are refreshed at the same time to preserve referential integrity between related materialized views. Execute the DBMS_REFRESH.ADD procedure to add the materialized views to the refresh group you created in Step 12.

*/

BEGIN
   DBMS_REFRESH.ADD (
      name => 'mviewadmin.hr_refg',
      list => 'hr.countries',
      lax => TRUE);
END;
/

BEGIN
   DBMS_REFRESH.ADD (
      name => 'mviewadmin.hr_refg',
      list => 'hr.departments',
      lax => TRUE);
END;
/

BEGIN
   DBMS_REFRESH.ADD (
      name => 'mviewadmin.hr_refg',
      list => 'hr.employees',
      lax => TRUE);
END;
/

BEGIN
   DBMS_REFRESH.ADD (
      name => 'mviewadmin.hr_refg',
      list => 'hr.jobs',
      lax => TRUE);
END;
/

BEGIN
   DBMS_REFRESH.ADD (
      name => 'mviewadmin.hr_refg',
      list => 'hr.job_history',
      lax => TRUE);
END;
/

BEGIN
   DBMS_REFRESH.ADD (
      name => 'mviewadmin.hr_refg',
      list => 'hr.locations',
      lax => TRUE);
END;
/

BEGIN
   DBMS_REFRESH.ADD (
      name => 'mviewadmin.hr_refg',
      list => 'hr.regions',
      lax => TRUE);
END;
/

/*

Step 17   Refresh materialized views to register them at master site.

In addition to retrieving the latest changes from the master tables, refreshing the materialized views at the new materialized view site registers the offline instantiated materialized views at the target master site.

*/

EXECUTE DBMS_REFRESH.REFRESH ('hr_refg');

/*

Step 18   Connect to the master site as SYSTEM user.

*/
CONNECT system@orc1.example.com

/*

Step 19   Drop the temporary schema to delete the temporary materialized views you created in Step 4 at the master site.

*/
DROP USER temp_schema CASCADE;

SET ECHO OFF

SPOOL OFF

/************************* END OF SCRIPT **********************************/

Using a Group Owner for a Materialized View Group

Specifying a group owner when you define a new materialized view group and its related objects enables you to create multiple materialized view groups based on the same replication group at a single materialized view site. Also, specifying group owners enables you to create multiple materialized view groups that are based on the same replication group at a master site or master materialized view site. You accomplish this by creating the materialized view groups under different schemas at the materialized view site. This example uses the schemas bob and jane as group owners and assumes that these schemas exist at the materialized view site.

Executed As:

Executed At:

Replication Status: Normal

Materialized View Site:

Complete the following steps to use a group owner.


Note:

If you are viewing this document online, then you can copy the text from the "BEGINNING OF SCRIPT" line after this note to the "END OF SCRIPT" line into a text editor and then edit the text to create a script for your environment.


See Also:


/************************* BEGINNING OF SCRIPT ******************************

Step 1   Create a database link from the hr schema to the master site

Before building your materialized view group, you must ensure that the replicated schema exists at the remote materialized view site and that the necessary database links have been created.

In this example, if the hr schema does not exist, then create the schema. If the hr schema already exists at the materialized view site, then grant any necessary privileges.

*/

CONNECT system@mv1.example.com

CREATE TABLESPACE demo_mv1
 DATAFILE 'demo_mv1.dbf' SIZE 10M AUTOEXTEND ON
 EXTENT MANAGEMENT LOCAL AUTOALLOCATE;

CREATE TEMPORARY TABLESPACE temp_mv1
 TEMPFILE 'temp_mv1.dbf' SIZE 5M AUTOEXTEND ON;

ACCEPT password PROMPT 'Enter password for user: ' HIDE

CREATE USER hr IDENTIFIED BY &password;

ALTER USER hr DEFAULT TABLESPACE demo_mv1
              QUOTA UNLIMITED ON demo_mv1;

ALTER USER hr TEMPORARY TABLESPACE temp_mv1;

GRANT 
  CREATE SESSION, 
  CREATE TABLE, 
  CREATE PROCEDURE, 
  CREATE SEQUENCE, 
  CREATE TRIGGER, 
  CREATE VIEW, 
  CREATE SYNONYM, 
  ALTER SESSION,
  CREATE MATERIALIZED VIEW,
  ALTER ANY MATERIALIZED VIEW,
  CREATE DATABASE LINK
 TO hr;

/*


If it does not already exist, then create the database link for the replicated schema.

Before building your materialized view group, you must ensure that the necessary database links exist for the replicated schema. The owner of the materialized views needs a database link pointing to the proxy_refresher that was created when the master site was set up.

*/

SET ECHO ON

SPOOL mv_group_owner.out

CONNECT hr@mv1.example.com

CREATE DATABASE LINK orc1.example.com 
   CONNECT TO proxy_refresher IDENTIFIED BY &password;

/*

Step 2   Connect to the materialized view site as the materialized view administrator.

*/
CONNECT mviewadmin@mv1.example.com

/*

Step 3   Create materialized view group with group owner (gowner) bob using the CREATE_MVIEW_REPGROUP procedure.

The replication group that you specify in the gname parameter must match the name of the replication group that you are replicating at the target master site or master materialized view site. The gowner parameter enables you to specify an additional identifier that lets you create multiple materialized view groups based on the same replication group at the same materialized view site.

In this example, materialized view groups are created for the group owners bob and jane, and these two materialized view groups are based on the same replication group.

*/

BEGIN
   DBMS_REPCAT.CREATE_MVIEW_REPGROUP (
      gname => 'hr_repg',
      master => 'orc1.example.com',
      propagation_mode => 'ASYNCHRONOUS',
      gowner => 'bob');
END;
/

BEGIN
   DBMS_REPCAT.CREATE_MVIEW_REPGROUP (
      gname => 'hr_repg',
      master => 'orc1.example.com',
      propagation_mode => 'ASYNCHRONOUS',
      gowner => 'jane');
END;
/

/*

Step 4   Create the materialized views owned by bob.

The gowner value used when creating your materialized view objects must match the gowner value specified when you created the materialized view group in the previous procedures. After creating the materialized view groups, you can create materialized views based on the same master in the hr_repg materialized view group owned by bob and jane. This example assumes that these users exist.


Caution:

Each object must have a unique name. When using a gowner to create multiple materialized view groups, duplicate object names could become a problem. To avoid any object-naming conflicts, you might want to append the gowner value to the end of the object name that you create, as illustrated in the following procedures (that is, create materialized view hr.countries_bob). Such a naming method ensures that you do not create any objects with conflicting names.

Whenever you create a materialized view, always specify the schema name of the table owner in the query for the materialized view. In the following examples, hr is specified as the owner of the table in each query.

*/

CREATE MATERIALIZED VIEW hr.countries_bob 
  REFRESH FAST WITH PRIMARY KEY FOR UPDATE 
  AS SELECT * FROM hr.countries@orc1.example.com;

CREATE MATERIALIZED VIEW hr.departments_bob 
  REFRESH FAST WITH PRIMARY KEY FOR UPDATE 
  AS SELECT * FROM hr.departments@orc1.example.com;

CREATE MATERIALIZED VIEW hr.employees_bob 
  REFRESH FAST WITH PRIMARY KEY FOR UPDATE 
  AS SELECT * FROM hr.employees@orc1.example.com;

CREATE MATERIALIZED VIEW hr.jobs_bob 
  REFRESH FAST WITH PRIMARY KEY FOR UPDATE 
  AS SELECT * FROM hr.jobs@orc1.example.com;

CREATE MATERIALIZED VIEW hr.job_history_bob 
  REFRESH FAST WITH PRIMARY KEY FOR UPDATE 
  AS SELECT * FROM hr.job_history@orc1.example.com;

CREATE MATERIALIZED VIEW hr.locations_bob 
  REFRESH FAST WITH PRIMARY KEY FOR UPDATE 
  AS SELECT * FROM hr.locations@orc1.example.com;

CREATE MATERIALIZED VIEW hr.regions_bob 
  REFRESH FAST WITH PRIMARY KEY FOR UPDATE 
  AS SELECT * FROM hr.regions@orc1.example.com;

/*

Step 5   Create the materialized views owned by jane.

*/
CREATE MATERIALIZED VIEW hr.departments_jane 
  REFRESH FAST WITH PRIMARY KEY FOR UPDATE 
  AS SELECT * FROM hr.departments@orc1.example.com;

CREATE MATERIALIZED VIEW hr.employees_jane 
  REFRESH FAST WITH PRIMARY KEY FOR UPDATE 
  AS SELECT * FROM hr.employees@orc1.example.com;

/*

Step 6   Add the materialized views owned by bob to the materialized view group.

*/
BEGIN
   DBMS_REPCAT.CREATE_MVIEW_REPOBJECT (
      gname => 'hr_repg',
      sname => 'hr',
      oname => 'countries_bob',
      type => 'SNAPSHOT',
      min_communication => TRUE,
      gowner => 'bob');
END;
/

BEGIN
   DBMS_REPCAT.CREATE_MVIEW_REPOBJECT (
      gname => 'hr_repg',
      sname => 'hr',
      oname => 'departments_bob',
      type => 'SNAPSHOT',
      min_communication => TRUE,
      gowner => 'bob');
END;
/

BEGIN
   DBMS_REPCAT.CREATE_MVIEW_REPOBJECT (
      gname => 'hr_repg',
      sname => 'hr',
      oname => 'employees_bob',
      type => 'SNAPSHOT',
      min_communication => TRUE,
      gowner => 'bob');
END;
/

BEGIN
   DBMS_REPCAT.CREATE_MVIEW_REPOBJECT (
      gname => 'hr_repg',
      sname => 'hr',
      oname => 'jobs_bob',
      type => 'SNAPSHOT',
      min_communication => TRUE,
      gowner => 'bob');
END;
/

BEGIN
   DBMS_REPCAT.CREATE_MVIEW_REPOBJECT (
      gname => 'hr_repg',
      sname => 'hr',
      oname => 'job_history_bob',
      type => 'SNAPSHOT',
      min_communication => TRUE,
      gowner => 'bob');
END;
/

BEGIN
   DBMS_REPCAT.CREATE_MVIEW_REPOBJECT (
      gname => 'hr_repg',
      sname => 'hr',
      oname => 'locations_bob',
      type => 'SNAPSHOT',
      min_communication => TRUE,
      gowner => 'bob');
END;
/

BEGIN
   DBMS_REPCAT.CREATE_MVIEW_REPOBJECT (
      gname => 'hr_repg',
      sname => 'hr',
      oname => 'regions_bob',
      type => 'SNAPSHOT',
      min_communication => TRUE,
      gowner => 'bob');
END;
/

/*

Step 7   Add the materialized views owned by jane to the materialized view group.

*/
BEGIN
   DBMS_REPCAT.CREATE_MVIEW_REPOBJECT (
      gname => 'hr_repg',
      sname => 'hr',
      oname => 'departments_jane',
      type => 'SNAPSHOT',
      min_communication => TRUE,
      gowner => 'jane');
END;
/

BEGIN
   DBMS_REPCAT.CREATE_MVIEW_REPOBJECT (
      gname => 'hr_repg',
      sname => 'hr',
      oname => 'employees_jane',
      type => 'SNAPSHOT',
      min_communication => TRUE,
      gowner => 'jane');
END;
/

SET ECHO OFF

SPOOL OFF

/*

Step 8   Add your materialized views to a refresh group.


See Also:

Chapter 5, "Creating a Materialized View Group" (Step 6) for more information about adding materialized views to a refresh group

/************************* END OF SCRIPT **********************************/
PK<@ccPKfUIOEBPS/index.htm Index

Index

A  B  C  D  E  F  G  I  J  L  M  N  O  P  Q  R  S  T  U  V  W 

A

ADD procedure, 5.2.2, 8.5, 17
ADD_DEFAULT_DEST procedure, 14
ADD_DELETE_RESOLUTION procedure, 18
ADD_GROUPED_COLUMN procedure, 18
ADD_MASTER_DATABASE procedure, 3.2, 7.2.2, 7.2.2.1, 18
ADD_NEW_MASTERS procedure, 7.2.1.1, 7.2.1.2, 18
ADD_PRIORITY_CHAR procedure, 18
ADD_PRIORITY_datatype procedure, 18
ADD_PRIORITY_DATE procedure, 18
ADD_PRIORITY_NUMBER procedure, 18
ADD_PRIORITY_VARCHAR2 procedure, 18
ADD_SITE_PRIORITY_SITE procedure, 6.2.6, 18
ADD_UNIQUENESS_RESOLUTION procedure, 18
ADD_UPDATE_RESOLUTION procedure, 6.2.1, 6.2.2, 6.2.3, 6.2.4, 6.2.5, 6.2.6, 18
administrative requests
ALL_REPCATLOG view, 23
executing, 7.2.2.2, 18
monitoring, 10.3
errors, 10.3.2
jobs, 10.3.3
purging, 18
administrators
for materialized view sites
creating, 2.3.1
Advanced Replication
migrating to Streams, 18
Advanced Replication interface
monitoring replication, 10
ALL_REPCAT_REFRESH_TEMPLATES view, 23
ALL_REPCAT_TEMPLATE_OBJECTS view, 23
ALL_REPCAT_TEMPLATE_PARMS view, 23
ALL_REPCAT_TEMPLATE_SITES view, 23
ALL_REPCAT_USER_AUTHORIZATIONS view, 23
ALL_REPCAT_USER_PARM_VALUES view, 23
ALL_REPCATLOG view
administrative requests, 23
ALL_REPCOLUMN view, 23
ALL_REPCOLUMN_GROUP view, 23
ALL_REPCONFLICT view, 23
ALL_REPDDL view, 23
ALL_REPGENOBJECTS view, 23
ALL_REPGROUP view, 23
ALL_REPGROUP_PRIVILEGES view, 23
ALL_REPGROUPED_COLUMN view, 23
ALL_REPKEY_COLUMNS view, 23
ALL_REPOBJECT view, 23
ALL_REPPARAMETER_COLUMN view, 23
ALL_REPPRIORITY view, 23
ALL_REPPRIORITY_GROUP view, 23
ALL_REPPROP view, 23
ALL_REPRESOL_STATS_CONTROL view, 23
ALL_REPRESOLUTION view, 23
ALL_REPRESOLUTION_METHOD view, 23
ALL_REPRESOLUTION_STATISTICS view, 23
gathering statistics, 6.6
ALL_REPSITES view, 23
ALTER MATERIALIZED VIEW LOG statement, 8.4.1.1, 8.4.1.2
ALTER_CATCHUP_PARAMETERS procedure, 18
ALTER_MASTER_PROPAGATION procedure, 18
ALTER_MASTER_REPOBJECT procedure, 6.2.3, 6.2.6, 6.4, 9.1, 18
ALTER_MVIEW_PROPAGATION procedure, 18
ALTER_PRIORITY procedure, 18
ALTER_PRIORITY_CHAR procedure, 18
ALTER_PRIORITY_datatype procedure, 18
ALTER_PRIORITY_DATE procedure, 18
ALTER_PRIORITY_NUMBER procedure, 18
ALTER_PRIORITY_RAW procedure, 18
ALTER_REFRESH_TEMPLATE procedure, 21
ALTER_SITE_PRIORITY procedure, 18
ALTER_SITE_PRIORITY_SITE procedure, 18
ALTER_TEMPLATE_OBJECT procedure, 21
ALTER_TEMPLATE_PARM procedure, 21
ALTER_USER_AUTHORIZATION procedure, 21
ALTER_USER_PARM_VALUE procedure, 21
ANY_CHAR_ARG procedure, 12
ANY_CLOB_ARG procedure, 12
ANY_VARCHAR2_ARG procedure, 12
ANYDATA
GET_ANYDATA_ARG function, 13
ANYDATA data type
replication, 9.5.3
ANYDATA_ARG procedure, 12
authorization
template users, 4.3
availability
extended, 7.2.1, 18, 18, 18, 18, 18, 18

B

BEGIN_INSTANTIATION procedure, 7.2.2.2, 15
BEGIN_LOAD procedure, 7.2.2.2, 15
BEGIN_TABLE_REORGANIZATION, 8.4.3.1
BLOB_ARG procedure, 12

C

CALL procedure, 12
CANCEL_STATISTICS procedure, 6.6.3, 18
CHANGE procedure, 17
CHAR_ARG procedure, 12
CLEAR_PROP_STATISTICS procedure, 10.6.6, 14
CLOB_ARG procedure, 12
column objects
user-defined conflict resolution, B.1.1
column subsetting
user-defined conflict resolution methods, B.1.6.2
columns
adding to master tables, 18
column groups, 6.2.1, 6.2.2, 6.2.3, 6.2.4, 6.2.5, 6.2.6
adding members to, 18
creating, 18, 18
dropping, 18
removing members from, 18
COMMENT_ON_COLUMN_GROUP procedure, 18
COMMENT_ON_DELETE_RESOLUTION procedure, 18
COMMENT_ON_MVIEW_REPSITES procedure, 18
COMMENT_ON_PRIORITY procedure, 18
COMMENT_ON_REPGROUP procedure, 18
COMMENT_ON_REPOBJECT procedure, 18
COMMENT_ON_REPSITES procedure, 18
COMMENT_ON_SITE_PRIORITY procedure, 18
COMMENT_ON_UNIQUE_RESOLUTION procedure, 18
COMMENT_ON_UPDATE_RESOLUTION procedure, 18
comments
comments field
updating in views, 7.4
updating, 7.4
COMMIT_WORK procedure, 12
COMPARE_OLD_VALUES procedure, 18, 18
COMPARE_TEMPLATES function, 21
comparing
tables, 16
conflict resolution, 6
additive method, 6.2.4, 18
auditing, 6.6, 6.6
average method, 6.2.4
column groups, 6.2.1, 6.2.2, 6.2.3, 6.2.4, 6.2.5, 6.2.6
DBA_REPRESOLUTION_STATISTICS view, 6.6.4
discard method, 6.2.1
information
viewing, B.3
maximum method, 6.2.2
minimum method, 6.2.2
overwrite method, 6.2.1
preparing for, 6.1
priority groups method, 6.2.5
procedural replication and, 7.5.3
site priority method, 6.2.6
sample trigger, 6.2.6
statistics, 18, 18
canceling, 6.6.3
collecting, 6.6.1
viewing, 6.6.2
time stamp method
sample trigger, 6.2.3
timestamp method, 6.2.3
uniqueness, 6.3
user-defined methods, B.1
column objects, B.1.1
column subsetting, B.1.6.2
example, B.1.7
for delete conflicts, B.1.4
for uniqueness conflicts, B.1.3
for update conflicts, B.1.2
multitier materialized views, B.1.5
parameters, B.1.1
restrictions, B.1.6
viewing information, B.3
conflicts
avoiding
delete, 6.4
dynamic ownership, 6.5
notification log table
creating, B.2.1
sample, B.2.1.1
notification methods
user-defined, B.2
notification package
creating, B.2.2
sample, B.2.2.1
token passing, 6.5.2
workflow, 6.5.1
COPY_TEMPLATE function, 21
CREATE_MASTER_REPGROUP procedure, 3.2, 18
CREATE_MASTER_REPOBJECT procedure, 6.2.3, 6.2.6, 18
CREATE_MVIEW_REPGROUP procedure, 5.2.1, 8.5, 8.6, 8.6, 18
CREATE_MVIEW_REPOBJECT procedure, 5.2.1, 5.2.1, 5.2.2, 5.2.2, 8.6, 8.6, 18
CREATE_OBJECT_FROM_EXISTING function, 21
CREATE_REFRESH_TEMPLATE function, 21
CREATE_REFRESH_TEMPLATE procedure, 4.3
CREATE_TEMPLATE_OBJECT function, 21
CREATE_TEMPLATE_OBJECT procedure, 4.3
CREATE_TEMPLATE_PARM function, 21
CREATE_USER_AUTHORIZATION function, 21
CREATE_USER_AUTHORIZATION procedure, 4.3
CREATE_USER_PARM_VALUE function, 21

D

data definition language
altering replicated objects, 18
asynchronous, 18
data dictionary views
comments
updating, 7.4
materialized views, 26
refresh groups, 26
replication, 10, 23
database links
creating, 2.2.4, 2.3.2, 4.6, 5.2.1, 5.2.2, 8.6
datatype_ARG procedure, 12
date expressions, 2.2.1
DATE_ARG procedure, 12
DBA_REGISTERED_MVIEW_GROUPS view, 23
DBA_REPCAT_REFRESH_TEMPLATES view, 23
DBA_REPCAT_TEMPLATE_OBJECTS view, 23
DBA_REPCAT_TEMPLATE_PARMS view, 23
DBA_REPCAT_TEMPLATE_SITES view, 23
DBA_REPCAT_USER_AUTHORIZATIONS view, 23
DBA_REPCAT_USER_PARM_VALUES view, 23
DBA_REPCATLOG view, 23
purging requests from, 18
DBA_REPCOLUMN view, 23
DBA_REPCOLUMN_GROUP view, 23
updating, 18
DBA_REPCONFLICT view, 23
DBA_REPDDL view, 23
DBA_REPEXTENSIONS view, 23
DBA_REPGENOBJECTS view, 23
DBA_REPGROUP view, 23
updating, 18
DBA_REPGROUP_PRIVILEGES view, 23
DBA_REPGROUPED_COLUMN view, 23
DBA_REPKEY_COLUMNS view, 23
DBA_REPOBJECT view, 23
updating, 18
DBA_REPPARAMETER_COLUMN view, 23
DBA_REPPRIORITY view, 23
DBA_REPPRIORITY_GROUP view, 23
DBA_REPPRIORITYGROUP view
updating, 18, 18
DBA_REPPROP view, 23
DBA_REPRESOL_STATS_CONTROL view, 23
DBA_REPRESOLUTION view, 23
updating, 18
DBA_REPRESOLUTION_METHOD view, 23, 23
DBA_REPRESOLUTION_STATISTICS view, 23
purging, 6.6.4, 18
DBA_REPSITES view, 23
updating, 18
DBA_REPSITES_NEW view, 23
DBMS_DEFER package, 12
DBMS_DEFER_QUERY package, 13
GET_ANYDATA_ARG function, 9.5.3
DBMS_DEFER_SYS package, 14
CLEAR_PROP_STATISTICS procedure, 10.6.6
EXECUTE_ERROR procedure, 7.2.2.2, 9.6.1
EXECUTE_ERROR_AS_USER procedure, 9.6.2
PURGE function, 9.5.2
PUSH function, 9.5.1
REGISTER_PROPAGATOR procedure, 2.2.1, 2.3.1, 2.3.2
SCHEDULE_PURGE procedure, 2.2.1, 2.3.1, 2.3.2
SCHEDULE_PUSH procedure, 2.2.4, 2.2.4, 2.3.1, 2.3.2
DBMS_MVIEW package
BEGIN_TABLE_REORGANIZATION procedure, 8.4.3.1
END_TABLE_REORGANIZATION procedure, 8.4.3.1
PURGE_LOG procedure, 8.4.2.1
PURGE_MVIEW_FROM_LOG procedure, 8.3.3.1, 8.3.3.2, 8.3.3.2, 8.4.2.1
REFRESH procedure, 8.1, 8.5
UNREGISTER_MVIEW procedure, 8.3.3.2
DBMS_OFFLINE_OG package, 15
BEGIN_INSTANTIATION procedure, 7.2.2.2
BEGIN_LOAD procedure, 7.2.2.2
END_INSTANTIATION procedure, 7.2.2.2
END_LOAD procedure, 7.2.2.2
RESUME_SUBSET_OF_MASTERS procedure, 7.2.2.2
DBMS_OFFLINE_SNAPSHOT package
END_LOAD procedure, 8.5, 8.5, 8.5, 8.5, 8.5, 8.5, 8.5
DBMS_RECTIFIER_DIFF package, 9.4, 16
DIFFERENCES procedure, 9.4.1
RECTIFY procedure, 9.4.2
DBMS_REFRESH package, 17
ADD procedure, 5.2.2, 8.5
MAKE procedure, 5.2.1, 5.2.2, 8.5
REFRESH procedure, 8.1
DBMS_REPCAT package, 7.4, 18
ADD_MASTER_DATABASE procedure, 3.2, 7.2.2, 7.2.2.1
ADD_NEW_MASTERS procedure, 7.2.1.1, 7.2.1.2
ADD_SITE_PRIORITY_SITE procedure, 6.2.6
ADD_UPDATE_RESOLUTION procedure, 6.2.1, 6.2.2, 6.2.3, 6.2.4, 6.2.5, 6.2.6
ALTER_MASTER_REPOBJECT procedure, 6.2.3, 6.2.6, 6.4, 9.1
CANCEL_STATISTICS procedure, 6.6.3
CREATE_MASTER_REPGROUP procedure, 3.2
CREATE_MASTER_REPOBJECT procedure, 6.2.3, 6.2.6
CREATE_MVIEW_REPGROUP procedure, 5.2.1, 8.5, 8.6, 8.6
CREATE_MVIEW_REPOBJECT procedure, 5.2.1, 5.2.1, 5.2.1, 5.2.1, 5.2.1, 5.2.1, 5.2.2, 5.2.2, 5.2.2, 5.2.2, 5.2.2, 5.2.2, 5.2.2, 8.6, 8.6
DEFINE_SITE_PRIORITY procedure, 6.2.6
DO_DEFERRED_REPCAT_ADMIN procedure, 6.4, 7.2.2.2
DROP_MVIEW_REPGROUP procedure, 8.3.1.1, 8.3.1.2, 8.3.2.1
DROP_MVIEW_REPOBJECT procedure, 8.3.2.2
GENERATE_REPLICATION_SUPPORT procedure, 3.2, 3.2, 3.2, 3.2, 3.2, 3.2, 3.2, 9.1
MAKE_COLUMN_GROUP procedure, 6.2.1, 6.2.2, 6.2.3, 6.2.3, 6.2.4, 6.2.5, 6.2.6
PREPARE_INSTANTIATED_MASTER procedure, 7.2.1.1, 7.2.1.2
PURGE_STATISTICS procedure, 6.6.4
REGISTER_STATISTICS procedure, 6.6.1
RELOCATE_MASTERDEF procedure, 7.1.1
REMOVE_MASTER_DATABASE procedure, 7.3
RESUME_MASTER_ACTIVITY procedure, 3.2
RESUME_PROPAGATION_TO_MDEF procedure, 7.2.1.1, 7.2.1.2
SPECIFY_NEW_MASTERS procedure, 7.2.1.1, 7.2.1.2
SWITCH_MVIEW_MASTER procedure, 8.2
UNREGISTER_MVIEW_REPGROUP procedure, 8.3.3.1
DBMS_REPCAT_ADMIN package, 20
GRANT_ADMIN_ANY_SCHEMA procedure, 2.2.1, 2.3.1, 2.3.2
REGISTER_USER_REPGROUP procedure, 2.2.1, 2.2.1, 2.2.2, 2.2.3, 2.3.1, 2.3.1
DBMS_REPCAT_INSTANTIATE package, 19
DROP_SITE_INSTANTIATION procedure, 8.3.1.1, 8.3.1.2
DBMS_REPCAT_RGT package, 21
CREATE_REFRESH_TEMPLATE procedure, 4.3
CREATE_TEMPLATE_OBJECT procedure, 4.3
CREATE_USER_AUTHORIZATION procedure, 4.3
INSTANTIATE_OFFLINE procedure, 4.4.1.1
INSTANTIATE_ONLINE procedure, 4.4.1.2
DBMS_REPUTIL package, 22
REPLICATION_OFF procedure, 7.5.4, 9.2.1
REPLICATION_ON procedure, 7.5.4, 9.2.2
DDL. See data definition language
DEFCALL view, 25
DEFCALLDEST view, 25
DEFDEFAULTDEST view, 25
adding destinations to, 14
removing destinations from, 14, 14
DEFERRCOUNT view, 25
deferred transaction queues
deferred calls
determining value of, 9.5.3
managing, 9.5
purging propagated transactions, 9.5.2
pushing, 9.5.1
deferred transactions
data dictionary views, 25
DEFDEFAULTDEST view
adding destination to, 14
removing destinations from, 14
deferred remote procedure calls (RPCs)
argument types, 13
argument values, 13
arguments to, 12
building, 12
executing immediately, 14
DEFSCHEDULE view
clearing statistics, 14
removing destinations from, 14
deleting from queue, 14
monitoring, 10.4
purge job, 10.4.2.1, 10.4.2.2
push jobs, 10.4.1.2, 10.4.1.3
reexecuting, 14
scheduling execution, 14
starting, 12
DEFERROR view, 9.6, 25
deleting transactions from, 14
DEFINE_COLUMN_GROUP procedure, 18
DEFINE_PRIORITY_GROUP procedure, 18
DEFINE_SITE_PRIORITY procedure, 6.2.6, 18
DEFLOB view, 25
DEFPROPAGATOR view, 25, 25
DEFSCHEDULE view, 25
clearing statistics, 10.6.6, 14
DEFTRAN view, 25
DEFTRANDEST view, 25
DELETE_DEF_DESTINATION procedure, 14
DELETE_DEFAULT_DEST procedure, 14
DELETE_ERROR procedure, 14
DELETE_RUNTIME_PARMS procedure, 21
DELETE_TRAN procedure, 14
deployment templates
alter object, 21
alter parameters, 21
alter template, 21
alter user authorization, 21
alter user parameter values, 21
authorize users, 4.3
compare templates, 21
concepts, 4.1
copy template, 21
create object from existing, 21
create template, 21
creating, 4.3, 4.3
data dictionary views for, 23
distributing files, 4.5
drop site instantiation, 19
dropping, 21
dropping all, 21
dropping materialized view group, 8.3.1
flowchart for creating, 4.3
instantiating, 4.6
instantiation script, 4.4.2
lock template, 21, 21
monitoring, 10.1.3.4
objects
creating, 21
dropping, 21
dropping all, 21
offline instantiation, 4.4, 19, 21
online instantiation, 19, 21
packaging, 4.4, 4.4.1
for offline instantiation, 4.4.1.1
for online instantiation, 4.4.1.2
parameters
creating, 4.3, 21
dropping, 21
dropping all, 21
user values, 4.3
run-time parameters
creating, 21
deleting, 21
get ID, 21
inserting, 21
sites
dropping, 21
dropping all, 21
user authorizations
creating, 21
dropping, 21
dropping all, 21
user parameter values
creating, 21
dropping, 21
dropping all, 21
user-defined types, 4.1
DESTROY procedure, 17
differences
between tables, 16
rectifying, 16
DIFFERENCES procedure, 9.4.1, 16
DISABLED function, 14
disabling
propagation, 14
DO_DEFERRED_REPCAT_ADMIN procedure, 6.4, 7.2.2.2, 18
DROP MATERIALIZED VIEW LOG statement, 8.4.4
DROP_ALL_OBJECTS procedure, 21
DROP_ALL_TEMPLATE_PARMS procedure, 21
DROP_ALL_TEMPLATE_SITES procedure, 21
DROP_ALL_TEMPLATES procedure, 21
DROP_ALL_USER_AUTHORIZATIONS procedure, 21
DROP_ALL_USER_PARM_VALUES procedure, 21
DROP_COLUMN_GROUP procedure, 18
DROP_DELETE_RESOLUTION procedure, 18
DROP_GROUPED_COLUMN procedure, 18
DROP_MASTER_REPGROUP procedure, 18
DROP_MASTER_REPOBJECT procedure, 18
DROP_MVIEW_REPGROUP procedure, 8.3.1.1, 8.3.1.2, 18
DROP_MVIEW_REPOBJECT procedure, 8.3.2.2, 18
DROP_PRIORITY procedure, 18
DROP_PRIORITY_CHAR procedure, 18
DROP_PRIORITY_datatype procedure, 18
DROP_PRIORITY_DATE procedure, 18
DROP_PRIORITY_GROUP procedure, 18
DROP_PRIORITY_NUMBER procedure, 18
DROP_PRIORITY_VARCHAR2 procedure, 18
DROP_REFRESH_TEMPLATE procedure, 21
DROP_SITE_INSTANTIATION procedure, 8.3.1.1, 8.3.1.2, 19, 21
DROP_SITE_PRIORITY procedure, 18
DROP_SITE_PRIORITY_SITE procedure, 18
DROP_TEMPLATE_OBJECT procedure, 21
DROP_TEMPLATE_PARM procedure, 21
DROP_UNIQUE_RESOLUTION procedure, 18
DROP_UPDATE_RESOLUTION procedure, 18
DROP_USER_AUTHORIZATION procedure, 21
DROP_USER_PARM_VALUE procedure, 21
dynamic ownership
conflict avoidance and, 6.5
locating owner of a row, 6.5.3
obtaining ownership, 6.5.4
workflow partitioning, 6.5.1
dynamic performance views
replication, 24

E

END_INSTANTIATION procedure, 7.2.2.2, 15
END_LOAD procedure, 7.2.2.2, 8.5, 8.5, 15
END_TABLE_REORGANIZATION procedure, 8.4.3.1
Enterprise Manager
Advanced Replication interface, 10
errors
error queues
DEFERROR view, 9.6
managing, 9.6
error transactions
monitoring, 10.5
reexecuting as alternate user, 9.6.2
reexecuting as receiver, 9.6.1
EXCLUDE_PUSH function, 14
EXECUTE_DDL procedure, 18
EXECUTE_ERROR procedure, 7.2.2.2, 9.6.1, 14
EXECUTE_ERROR_AS_USER procedure, 9.6.2, 14
extended availability, 7.2.1, 18, 18, 18, 18, 18, 18

F

foreign key constraints
adding master sites, 7.2
FROM_REMOTE function, 22

G

GENERATE_MVIEW_SUPPORT procedure, 18
GENERATE_REPLICATION_SUPPORT procedure, 3.2, 3.2, 9.1, 18
generating
replication support, 3.2
procedural replication, 7.5.4
GET_ANYDATA_ARG function, 9.5.3, 13
GET_ARG_FORM function, 13
GET_ARG_TYPE function, 13
GET_BLOB_ARG function, 13
GET_CALL_ARGS procedure, 13
GET_CHAR_ARG function, 13
GET_CLOB_ARG function, 13
GET_datatype_ARG function, 13
GET_DATE_ARG function, 13
GET_IDS_ARG function, 13
GET_IYM_ARG function, 13
GET_NCHAR_ARG function, 13
GET_NCLOB_ARG function, 13
GET_NUMBER_ARG function, 13
GET_NVARCHAR2_ARG function, 13
GET_OBJECT_NULL_VECTOR_ARG function, 13
GET_RAW_ARG function, 13
GET_ROWID_ARG function, 13
GET_RUNTIME_PARM_ID function, 21
GET_TIMESTAMP_ARG function, 13
GET_TSLTZ_ARG function, 13
GET_TSTZ_ARG function, 13
GET_VARCHAR2_ARG function, 13
GLOBAL_NAME function, 22
GRANT_ADMIN_ANY_SCHEMA procedure, 2.2.1, 2.3.1, 2.3.2, 20
GRANT_ADMIN_SCHEMA procedure, 20

I

IDS_ARG procedure, 12
Import
replication groups
offline instantiation and, 15, 15
status check, 18
INSERT_RUNTIME_PARMS procedure, 21
INSTANTIATE_OFFLINE function, 19, 21
INSTANTIATE_OFFLINE procedure, 4.4.1.1
INSTANTIATE_ONLINE function, 19, 21
INSTANTIATE_ONLINE procedure, 4.4.1.2
instantiation, 4.6
DROP_SITE_INSTANTIATION procedure, 19, 21
offline, 4.4
INSTANTIATE_OFFLINE function, 19, 21
online
INSTANTIATE_ONLINE function, 19, 21
refreshing after, 4.7
script, 4.4.2
IYM_ARG procedure, 12

J

jobs
queues for
removing jobs from, 14, 14

L

LOCK_TEMPLATE_EXCLUSIVE procedure, 21
LOCK_TEMPLATE_SHARED procedure, 21
LONG columns
replication, 9.3

M

MAKE procedure, 5.2.1, 5.2.2, 8.5, 17
MAKE_COLUMN_GROUP procedure, 6.2.1, 6.2.2, 6.2.3, 6.2.4, 6.2.6, 18
MAKE_INTERNAL_PKG procedure, 22
master definition site
relocating, 18
master groups
adding master sites to
with quiesce, 7.2.2
without quiesce, 7.2.1
adding objects to, 3.2
creating, 3.1, 3.2, 18
dropping, 18
flowchart for creating, 3.1.1
monitoring, 10.1.2
quiescing, 18
removing master sites from, 7.3
resuming replication activity, 18
master materialized views
monitoring, 10.1.3
reorganizing, 8.4.3
master sites
adding, 3.2, 7.2
circular dependencies, 3.2, 7.2
flowchart for, 7.2.1.2
flowchart for determining method, 7.2.1
foreign key constraints, 7.2
restrictions, 7.2.1
restrictions for change-based recovery, 7.2.1
restrictions for full database export/import, 7.2.1
self-referential constraints, 3.2, 7.2
using change-based recovery, 7.2.1.1
using full database export/import, 7.2.1.1
using object-level export/import, 7.2.1.2
using offline instantiation, 7.2.2.2
with quiesce, 7.2.2
without quiesce, 7.2.1
changing master definition site, 7.1
cleaning up, 8.3.3
creating, 18
creating users for, 2.2.1, 2.2.1, 2.2.2, 2.2.2, 2.2.3, 2.2.3, 2.3.1
database links, 2.2.4
determining differences, 9.4
dropping, 18
flowchart for setting up, 2.1
monitoring, 10.1.1, 10.1.3
propagating changes between, 14
removing, 7.3
scheduled links for, 2.2.4
scheduled purges for, 2.2.1
setup, 2.2
master tables
adding columns to, 18
redefining online, 8.4.3
reorganizing, 8.4.3
methods, 8.4.3.3
truncating, 8.4.3.2
materialized view groups
adding objects to, 5.2.1, 5.2.2, 8.6
changing masters, 8.2
creating, 5.2, 5.2.1, 5.2.2, 18
dropping, 8.3.1, 8.3.2.1
group owner, 8.6
monitoring, 10.2.2
refreshing, 18
materialized view logs
adding columns, 8.4.1.2
altering, 8.4.1
privileges required, 8.4.1
dropping, 8.4.4
managing, 8.4
space, 8.4.2
monitoring, 10.1.3.2
purging
materialized views from, 8.3.3.1, 8.3.3.2
privileges required, 8.4.2.1
purging rows from
manually, 8.4.2.1
reducing space allocated to, 8.4.2.2
reorganizing masters with, 8.4.3
truncating, 8.4.2.2
truncating master table with, 8.4.3.2
materialized view sites
adding
using offline instantiation, 8.5
administrators
creating, 2.3.1
changing masters, 18
database links
creating, 2.3.2, 4.6, 5.2.1, 5.2.2, 8.6
dropping, 8.3, 18
dropping objects from, 8.3.2
flowchart for setting up, 2.3
group owner
using, 8.6
monitoring, 10.2.1
multitier
setting up, 2.3
propagating changes to master, 14
refresher
creating, 2.3.1, 2.3.2
schedule purge, 2.3.1, 2.3.1, 2.3.2, 2.3.2
users
creating, 2.3.1
materialized views
data dictionary views, 26
deployment templates
user-defined types, 4.1
dropping, 8.3.2.2
generating support for, 18
monitoring, 10.2, 10.2.3
multitier
setting up, 5.2
user-defined conflict resolution, B.1.5
purging from materialized view logs, 8.3.3.1, 8.3.3.2
refresh groups
creating, 5.2.1, 5.2.2
refreshing, 4.7, 8.1, 8.5
security, A.2
trusted compared with untrusted, A.2.1
unregistering from master, 8.3.3.2
monitoring replication, 10
Advanced Replication interface, 10
multimaster replication
monitoring, 10.1
security
trusted compared with untrusted, A.1.1
multitier materialized views
setting up, 2.3

N

NCHAR_ARG procedure, 12
NCLOB_ARG procedure, 12
notification log table
conflicts
creating, B.2.1
sample, B.2.1.1
notification methods
user-defined, B.2
notification package
conflicts
creating, B.2.2
NUMBER_ARG procedure, 12
NVARCHAR2_ARG procedure, 12

O

objects
adding to materialized view sites, 18
altering, 18
creating
for master group, 18, 18
for materialized view sites, 18
dropping
from materialized view site, 8.3.2, 18
generating replication support for, 18, 18
offline instantiation
adding a master site, 7.2.2.2
adding a materialized view site, 8.5
INSTANTIATE_OFFLINE function, 19, 21
replication groups, 15, 15, 15, 15, 15
online instantiation
INSTANTIATE_ONLINE function, 19, 21
online redefinition of tables, 8.4.3
Oracle Streams
migrating to, 18

P

packaging
deployment templates, 4.4
parallel propagation
monitoring, 10.6.5, 10.6.7
parameters
deployment templates, 4.3
user values, 4.3
performance
replication
monitoring, 10.6
planning
for replication, 1.2
PREPARE_INSTANTIATED_MASTER procedure, 7.2.1.1, 7.2.1.2
PREPARE_INSTANTIATED_MASTERS procedure, 18
PRESERVE MATERIALIZED VIEW LOG option
TRUNCATE TABLE statement, 8.4.3.2
priority groups
adding members to, 18
altering members
priorities, 18
values, 18
creating, 18
dropping, 18
removing members from, 18, 18
site priority groups
adding members to, 18
procedural replication
conflicts and, 7.5.3
generating replication support for, 7.5.4
restrictions, 7.5.1
serialization of transactions, 7.5.3
user-defined types, 7.5.2
using, 7.5
propagation
altering method, 18, 18
disabling, 14
of changes, 18
parallel
monitoring, 10.6.5, 10.6.7
status of, 14
propagator
registering, 2.2.1, 2.2.1, 14
proxy materialized view administrator
creating, 2.2.1, 2.2.1, 2.2.2, 2.2.2, 2.2.3, 2.2.3, 2.3.1
PURGE function, 9.5.2, 14
PURGE_LOG procedure, 8.4.2.1
PURGE_MASTER_LOG procedure, 18
PURGE_MVIEW_FROM_LOG procedure, 8.3.3.1, 8.3.3.2, 8.3.3.2, 8.4.2.1
PURGE_STATISTICS procedure, 6.6.4, 18
purges
DBA_REPCATLOG table, 18
deferred transaction queue, 9.5.2
master sites, 2.2.1
materialized view sites, 2.3.1, 2.3.2
monitoring, 10.4.2
PUSH function, 9.5.1, 14
pushes
deferred transaction queue, 9.5.1

Q

quiescing
adding master sites with, 7.2.2
adding master sites without, 7.2.1
master groups, 18

R

RAW_ARG procedure, 12
receiver
registering, 2.2.1
RECTIFY procedure, 9.4.2, 16
rectifying
tables, 9.4.2, 16
redefining tables
online
replication, 8.4.3
refresh
materialized view sites, 18
materialized views, 8.1, 8.5
monitoring, 10.2.5, 10.2.6
refresh groups
adding members to, 17
adding objects to, 5.2.1, 5.2.2, 8.5
creating, 5.2.1, 5.2.2, 17
data dictionary views, 26
deleting, 17
monitoring, 10.2.4
refresh, 8.1
refresh interval
changing, 17
refreshing
manually, 17
removing members from, 17
REFRESH procedure, 8.1, 8.1, 8.5, 17
REFRESH_ALL_MVIEWS procedure, 8.1
REFRESH_DEPENDENT procedure, 8.1
REFRESH_MVIEW_REPGROUP procedure, 18
refresher
creating, 2.3.1, 2.3.2
REGISTER_MVIEW_REPGROUP procedure, 18
REGISTER_PROPAGATOR procedure, 2.2.1, 2.3.1, 2.3.2, 14
REGISTER_STATISTICS procedure, 6.6.1, 18
REGISTER_USER_REPGROUP procedure, 2.2.1, 2.2.1, 2.2.2, 2.2.3, 2.3.1, 2.3.1, 20
RELOCATE_MASTERDEF procedure, 7.1.1, 18
REMOVE_MASTER_DATABASE procedure, 7.3
REMOVE_MASTER_DATABASES procedure, 18
RENAME_SHADOW_COLUMN_GROUP procedure, 18
REPCAT_IMPORT_CHECK procedure, 18
replication
catalog views, 10, 23
column groups, 6.2.1, 6.2.2, 6.2.3, 6.2.4, 6.2.5, 6.2.6
conflict resolution, 6
uniqueness, 6.3
creating an environment, 1.1
data dictionary views, 10, 23
database links
creating, 2.2.4
datetime data types
abbreviations, 11.4
deferred transaction queues
managing, 9.5
deferred transactions
data dictionary views, 25
deployment templates
user-defined types, 4.1
determining differences between tables, 9.4
disabling, 7.5.4, 9.2, 9.2.1, 22
dynamic performance views, 24
enabling, 7.5.4, 9.2, 9.2.2, 22
error queues
managing, 9.6
flowchart for creating environment, 1.1
generating support for, 3.2
interval data types
abbreviations, 11.4
LONG column
converting to LOB, 9.3
managing an environment, 6
master groups
creating, 3.1
master sites
adding, 3.2
materialized view groups
creating, 5.2, 5.2.1, 5.2.2
materialized view logs
managing, 8.4
monitoring, 10
deferred transactions, 10.4
error transactions, 10.5
master environments, 10.1
materialized view environments, 10.2
performance, 10.6
objects
adding to master group, 3.2
dropping from master sites, 18
parallel propagation
monitoring, 10.6.5, 10.6.7
planning for, 1.2
procedural replication, 7.5
restrictions, 7.5.1
user-defined types, 7.5.2
propagator
registering, 2.2.1, 2.2.1
receiver
registering, 2.2.1
replicated objects, 9
replication queues, 9
resuming, 3.2
scheduled links
creating, 2.2.4
security, A
setting up sites, 2.1
sites
setup, 2.1
statistics
clearing, 10.6.6
triggers, 9.2.3
replication catalog views, 23
comments
updating, 7.4, 7.4
monitoring replication, 10
replication management API, 11
conflict resolution, 6
deployment templates
creating, 4.3
instantiating, 4.6
packaging, 4.4
examples, 11.1
managing a replication environment, 6
managing replicated objects, 9
managing replication queues, 9
master groups
creating, 3.1
materialized view groups
creating, 5.2
overview, 1
packages, 10
setting up replication sites, 2.1
replication objects
altering, 9.1
tables
altering, 9.2
REPLICATION_IS_ON function, 22
REPLICATION_OFF procedure, 22
REPLICATION_ON procedure, 7.5.4, 7.5.4, 22
RESUME_MASTER_ACTIVITY procedure, 3.2, 18
RESUME_PROPAGATION_TO_MDEF procedure, 7.2.1.1, 7.2.1.2, 18
RESUME_SUBSET_OF_MASTERS procedure, 7.2.2.2, 15
resuming replication activity, 18
REVOKE_ADMIN_ANY_SCHEMA procedure, 20
REVOKE_ADMIN_SCHEMA procedure, 20
ROWID_ARG procedure, 12

S

SCHEDULE_PURGE procedure, 2.2.1, 2.3.1, 2.3.2, 14
SCHEDULE_PUSH procedure, 2.2.4, 2.3.1, 2.3.2, 14
scheduled links
creating, 2.2.4
security
for materialized view replication, A.2
trusted compared with untrusted, A.2.1
for multimaster replication, A.1
trusted compared with untrusted, A.1.1
replication, A
trusted compared with untrusted, A.1.1, A.2.1
SEND_OLD_VALUES procedure, 18
serialization
of transactions, 7.5.3
SET_COLUMNS procedure, 18, 18
SET_DISABLED procedure, 14
site priority
altering, 18
site priority groups
adding members to, 18
creating
syntax, 18
dropping, 18
removing members from, 18
snapshots. See materialized views
SPECIFY_NEW_MASTERS procedure, 7.2.1.1, 18
statistics
for conflict resolution
auditing, 6.6
cancelling, 6.6.3
clearing, 6.6.4, 18
collecting, 6.6.1, 18
viewing, 6.6.2
for propagation
clearing, 10.6.6, 14
status
propagation, 14
storage parameters
materialized view log
altering, 8.4.1.1
STREAMS_MIGRATION procedure, 18
SUBTRACT procedure, 17
SUSPEND_MASTER_ACTIVITY procedure, 18
SWITCH_MVIEW_MASTER procedure, 8.2, 18
SYNC_UP_REP procedure, 22

T

tables
altering
without replicating changes, 9.2
altering replicated, 9.1
comparing, 16
differences between, 9.4
rectifying, 9.4.2, 16
redefining online
replication, 8.4.3
updating comments, 7.4, 7.4
templates. See deployment templates
TIMESTAMP_ARG procedure, 12
token passing, 6.5.2
sample implementation, 6.5
TRANSACTION procedure, 12
transactions
serialization of, 7.5.3
triggers
for site priority conflict resolution, 6.2.6
for time stamp conflict resolution, 6.2.3
replicating, 9.2.3
TRUNCATE statement, 8.4.2.2
TRUNCATE TABLE statement
PRESERVE MATERIALIZED VIEW LOG option, 8.4.3.2
trusted security, A.1.1, A.2.1
TSLTZ_ARG procedure, 12

U

UNDO_ADD_NEW_MASTERS_REQUEST procedure, 18
UNREGISTER_MVIEW procedure, 8.3.3.2
UNREGISTER_MVIEW_REPGROUP procedure, 18
UNREGISTER_PROPAGATOR procedure, 14
UNREGISTER_USER_REPGROUP procedure, 20
UNSCHEDULE_PURGE procedure, 14
UNSCHEDULE_PUSH procedure, 14
USER_REPCAT_REFRESH_TEMPLATES view, 23
USER_REPCAT_TEMP_OUTPUT view, 4.4.1
USER_REPCAT_TEMPLATE_OBJECTS view, 23
USER_REPCAT_TEMPLATE_PARMS view, 23
USER_REPCAT_TEMPLATE_SITES view, 23
USER_REPCAT_USER_AUTHORIZATIONS view, 23
USER_REPCAT_USER_PARM_VALUES view, 23
USER_REPCATLOG view, 23
USER_REPCOLUMN view, 23
USER_REPCOLUMN_GROUP view, 23
USER_REPCONFLICT view, 23, 23
USER_REPDDL view, 23, 23
USER_REPGENOBJECTS view, 23, 23
USER_REPGROUP view, 23
USER_REPGROUP_PRIVILEGES view, 23
USER_REPGROUPED_COLUMN view, 23
USER_REPKEY_COLUMNS view, 23
USER_REPOBJECT view, 23
USER_REPPARAMETER_COLUMN view, 23
USER_REPPRIORITY view, 23
USER_REPPRIORITY_GROUP view, 23
USER_REPPROP view, 23
USER_REPRESOL_STATS_CONTROL view, 23
USER_REPRESOLUTION view, 23
USER_REPRESOLUTION_METHOD view, 23
USER_REPRESOLUTION_STATISTICS view, 23
USER_REPSITES view, 23
users
authorize for deployment template, 4.3
master materialized view sites, 2.3.1
master sites, 2.2.1, 2.2.1, 2.2.2, 2.2.2, 2.2.3, 2.2.3
materialized view sites, 2.3.1

V

V$MVREFRESH view, 24
V$REPLPROP view, 10.6.7, 24
V$REPLQUEUE view, 24
VALIDATE procedure, 18
VARCHAR2_ARG procedure, 12

W

WAIT_MASTER_LOG procedure, 18
workflow, 6.5.1
PK#[B.PKfUIOEBPS/rardt.htm Creating a Deployment Template

4 Creating a Deployment Template

This chapter illustrates how to build a deployment template using the replication management API.

This chapter contains these topics:

Before you build materialized view environments, you must set up your master site, create a master group, and set up your intended materialized view sites. Also, if conflicts are possible at the master site due to activity at the materialized view sites you are creating, then configure conflict resolution for the master tables of the materialized views before you create the materialized view group.

Oracle Deployment Templates Concepts

Oracle offers deployment templates to allow the database administrator to package a materialized view environment for easy, custom, and secure distribution and installation. A deployment template can be simple (for example, it can contain a single materialized view with a fixed data set), or complex (for example, it can contain hundreds of materialized views with a dynamic data set based on one or more variables). The goal is to define the environment once and deploy the deployment template as often as necessary. Oracle deployment templates feature:

To prepare a materialized view environment for deployment, the DBA creates a deployment template at the master site. This template stores all of the information needed to deploy a materialized view environment, including the DDL to create the objects at the remote site and the target refresh group. This template also maintains links to user security information and template parameters for custom materialized view creation.

You cannot use deployment templates to instantiate the following types of objects:

Nor can you use deployment templates to instantiate any objects based on these types of objects.


See Also:

Oracle Database Advanced Replication for more conceptual information about deployment templates

Before Creating the Deployment Template

If you want one of your master sites to support a materialized views that can be fast refreshed, then you must create materialized view logs for each master table that is replicated to a materialized view.

The example in this chapter uses the hr sample schema. Enter the following to create materialized view logs for the tables in the hr schema:

CONNECT hr@orc3.example.com
Enter password: password

CREATE MATERIALIZED VIEW LOG ON hr.countries;
CREATE MATERIALIZED VIEW LOG ON hr.departments;
CREATE MATERIALIZED VIEW LOG ON hr.employees;
CREATE MATERIALIZED VIEW LOG ON hr.jobs;
CREATE MATERIALIZED VIEW LOG ON hr.job_history;
CREATE MATERIALIZED VIEW LOG ON hr.locations;
CREATE MATERIALIZED VIEW LOG ON hr.regions;

See Also:

The CREATE MATERIALIZED VIEW LOG statement in the Oracle Database SQL Language Reference for detailed information about this SQL statement

Creating a Deployment Template

This section contains a complete script example of how to construct a deployment template using the replication management API.


See Also:

Oracle Database Advanced Replication for conceptual and architectural information about deployment templates

Figure 4-1 Creating a Deployment Template

Description of Figure 4-1 follows

Be sure to read the comments contained within the scripts, as they contain important and useful information about building templates with the replication management API.


Note:

  • You must use the Advanced Replication interface in Oracle Enterprise Manager if you want to create materialized views with a subset of the columns their master tables. See Oracle Database Advanced Replication and the Advanced Replication interface online Help for more information about column subsetting.

  • If you are viewing this document online, then you can copy the text from the "BEGINNING OF SCRIPT" line after this note to the "END OF SCRIPT" line into a text editor and then edit the text to create a script for your environment.


/************************* BEGINNING OF SCRIPT ******************************

This script creates a private deployment template that contains four template objects, two template parameters, a set of user parameter values, and an authorized user. Complete the following steps to build a template:


Step 1   Create the deployment template.

Before assembling the components of your deployment template, use the CREATE_RERESH_TEMPLATE procedure to define the name of your deployment template, along with several other template characteristics (Public/Private status, target refresh group, and owner).

*/

SET ECHO ON

SPOOL create_dt.out

CONNECT repadmin@orc3.example.com

DECLARE
   a NUMBER;
BEGIN
   a := DBMS_REPCAT_RGT.CREATE_REFRESH_TEMPLATE (
           owner => 'hr',
           refresh_group_name => 'hr_refg',
           refresh_template_name => 'hr_refg_dt',
           template_comment => 'Human Resources Deployment Template',
           public_template => 'N');
END;
/

/*

Step 2   Add objects to template.

Create countries_mv materialized view.

*/

DECLARE
   tempstring VARCHAR2(3000);
   a NUMBER;
BEGIN
   tempstring := 'CREATE MATERIALIZED VIEW hr.countries_mv 
      REFRESH FAST WITH PRIMARY KEY FOR UPDATE AS SELECT 
      country_id, country_name, region_id 
      FROM hr.countries@:dblink';
   a := DBMS_REPCAT_RGT.CREATE_TEMPLATE_OBJECT (
           refresh_template_name => 'hr_refg_dt',
           object_name => 'countries_mv',
           object_type => 'MATERIALIZED VIEW',
           ddl_text => tempstring,
           master_rollback_seg => 'rbs');
END;
/

/*

Whenever you create a materialized view, always specify the schema name of the table owner in the query for the materialized view. In the example previously, hr is specified as the owner of the countries table.

Create departments_mv materialized view.

*/

DECLARE
   tempstring VARCHAR2(3000);
   a NUMBER;
BEGIN
   tempstring := 'CREATE MATERIALIZED VIEW hr.departments_mv 
      REFRESH FAST WITH PRIMARY KEY FOR UPDATE AS SELECT 
      department_id, department_name, manager_id, location_id
      FROM hr.departments@:dblink';
   a := DBMS_REPCAT_RGT.CREATE_TEMPLATE_OBJECT (
           refresh_template_name => 'hr_refg_dt',
           object_name => 'departments_mv',
           object_type => 'MATERIALIZED VIEW',
           ddl_text => tempstring,
           master_rollback_seg => 'rbs');
END;
/

/*

Create employees_mv materialized view.

*/

DECLARE
   tempstring VARCHAR2(3000);
   a NUMBER;
BEGIN
   tempstring := 'CREATE MATERIALIZED VIEW hr.employees_mv 
      REFRESH FAST WITH PRIMARY KEY FOR UPDATE AS SELECT 
      employee_id, first_name, last_name, email, phone_number, 
      hire_date, job_id, salary, commission_pct, manager_id, 
      department_id
      FROM hr.employees@:dblink WHERE department_id = :dept';
   a := DBMS_REPCAT_RGT.CREATE_TEMPLATE_OBJECT (
           refresh_template_name => 'hr_refg_dt',
           object_name => 'employees_mv',
           object_type => 'MATERIALIZED VIEW',
           ddl_text => tempstring,
           master_rollback_seg => 'rbs');
END;
/

/*

Create jobs_mv materialized view.

*/

DECLARE
   tempstring VARCHAR2(3000);
   a NUMBER;
BEGIN
   tempstring := 'CREATE MATERIALIZED VIEW hr.jobs_mv 
      REFRESH FAST WITH PRIMARY KEY FOR UPDATE AS SELECT 
      job_id, job_title, min_salary, max_salary 
      FROM hr.jobs@:dblink';
   a := DBMS_REPCAT_RGT.CREATE_TEMPLATE_OBJECT (
           refresh_template_name => 'hr_refg_dt',
           object_name => 'jobs_mv',
           object_type => 'MATERIALIZED VIEW',
           ddl_text => tempstring,
           master_rollback_seg => 'rbs');
END;
/

/*

Create job_history_mv materialized view.

*/

DECLARE
   tempstring VARCHAR2(3000);
   a NUMBER;
BEGIN
   tempstring := 'CREATE MATERIALIZED VIEW hr.job_history_mv 
      REFRESH FAST WITH PRIMARY KEY FOR UPDATE AS SELECT 
      employee_id, start_date, end_date, job_id, department_id 
      FROM hr.job_history@:dblink';
   a := DBMS_REPCAT_RGT.CREATE_TEMPLATE_OBJECT (
           refresh_template_name => 'hr_refg_dt',
           object_name => 'job_history_mv',
           object_type => 'MATERIALIZED VIEW',
           ddl_text => tempstring,
           master_rollback_seg => 'rbs');
 END;
/

/*

Create locations_mv materialized view.

*/

DECLARE
   tempstring VARCHAR2(3000);
   a NUMBER;
BEGIN
   tempstring := 'CREATE MATERIALIZED VIEW hr.locations_mv 
      REFRESH FAST WITH PRIMARY KEY FOR UPDATE AS SELECT 
      location_id, street_address, postal_code, city, 
      state_province, country_id 
      FROM hr.locations@:dblink';
   a := DBMS_REPCAT_RGT.CREATE_TEMPLATE_OBJECT (
           refresh_template_name => 'hr_refg_dt',
           object_name => 'locations_mv',
           object_type => 'MATERIALIZED VIEW',
           ddl_text => tempstring,
           master_rollback_seg => 'rbs');
END;
/

/*

Create regions_mv materialized view.

*/

DECLARE
   tempstring VARCHAR2(3000);
   a NUMBER;
BEGIN
   tempstring := 'CREATE MATERIALIZED VIEW hr.regions_mv 
      REFRESH FAST WITH PRIMARY KEY FOR UPDATE AS SELECT 
      region_id, region_name 
      FROM hr.regions@:dblink';
   a := DBMS_REPCAT_RGT.CREATE_TEMPLATE_OBJECT (
           refresh_template_name => 'hr_refg_dt',
           object_name => 'regions_mv',
           object_type => 'MATERIALIZED VIEW',
           ddl_text => tempstring,
           master_rollback_seg => 'rbs');
END;
/

/*

Step 3   Define parameter defaults.

Rather than using the CREATE_* functions and procedures as in the other steps, use the ALTER_TEMPLATE_PARM procedure to define a template parameter value and prompt string. You use the ALTER_* procedure because the actual parameter was created in Step 1. Recall that you defined the :dblink and :dept template parameters in the ddl_text parameter. Oracle detects these parameters in the DDL and automatically creates the template parameter. Use the ALTER_TEMPLATE_PARM procedure to define the remainder of the template parameter information (that is, default parameter value and prompt string).

Complete the following tasks to define parameter defaults.

Define the default value for the dept parameter.

*/

BEGIN 
   DBMS_REPCAT_RGT.ALTER_TEMPLATE_PARM ( 
      refresh_template_name => 'hr_refg_dt', 
      parameter_name => 'dept', 
      new_default_parm_value => '30', 
      new_prompt_string => 'Enter your department number:', 
      new_user_override => 'Y'); 
END; 
/ 

/*

Define the default value for the dblink parameter.

*/

BEGIN 
   DBMS_REPCAT_RGT.ALTER_TEMPLATE_PARM ( 
      refresh_template_name => 'hr_refg_dt', 
      parameter_name => 'dblink', 
      new_default_parm_value => 'orc3.example.com', 
      new_prompt_string => 'Enter your master site:', 
      new_user_override => 'Y'); 
END; 
/  

/*

Step 4   Define user parameter values.

To automate the instantiation of custom data sets at individual remote materialized view sites, you can define user parameter values that will be used automatically when the specified user instantiates the target template. The CREATE_USER_PARM_VALUE procedure enables you to assign a value to a parameter for a user.

Complete the following tasks to define user parameter values.

Define dept user parameter value for user hr.

*/

DECLARE
   a NUMBER;
BEGIN
   a := DBMS_REPCAT_RGT.CREATE_USER_PARM_VALUE (
           refresh_template_name => 'hr_refg_dt',
           parameter_name => 'dept',
           user_name => 'hr',
           parm_value => '20');
END;
/

/*

Define dblink user parameter value for user hr.

*/

DECLARE
   a NUMBER;
BEGIN
   a := DBMS_REPCAT_RGT.CREATE_USER_PARM_VALUE (
           refresh_template_name => 'hr_refg_dt',
           parameter_name => 'dblink',
           user_name => 'hr',
           parm_value => 'orc3.example.com');
END;
/

/*

Step 5   Authorize users for private template.

Because this is a private template (public_template => 'N' in the DBMS_REPCAT_RGT.CREATE_REFRESH_TEMPLATE function defined in Step 1), you must authorize users to instantiate the dt_personnel deployment template. Use the CREATE_USER_AUTHORIZATION function in the DBMS_REPCAT_RGT package to create authorized users.

*/

DECLARE
   a NUMBER;
BEGIN
   a := DBMS_REPCAT_RGT.CREATE_USER_AUTHORIZATION (
           user_name => 'hr',
           refresh_template_name => 'hr_refg_dt');
END;
/

COMMIT;

SET ECHO OFF

SPOOL OFF

/************************* END OF SCRIPT **********************************/

Packaging a Deployment Template for Instantiation

After building your deployment template, you must package the template for instantiation. This example illustrates how to use both the online and offline instantiation procedures. Notice that the instantiation procedures are very similar: you simply use either the INSTANTIATE_ONLINE function or INSTANTIATE_OFFLINE function according to your needs. This section describes two tasks: create the instantiation script and save the instantiation script to a file.

Figure 4-2 Packaging and Instantiating a Deployment Template

Description of Figure 4-2 follows

Packaging a Deployment Template

When you execute either the INSTANTIATE_OFFLINE or the INSTANTIATE_ONLINE function, Oracle populates the USER_REPCAT_TEMP_OUTPUT data dictionary view with the script to create the remote materialized view environment. Both online and offline scripts contain the SQL statements to create the objects specified in the deployment template. The difference is that an offline instantiation script also contains the data to populate the objects. The online instantiation script does not contain the data. Rather, during online instantiation, the materialized view site connects to the master site to download the data.

Complete the steps in either the "Packaging a Deployment Template for Offline Instantiation" or "Packaging a Deployment Template for Online Instantiation" according to your needs.


Note:

If you must execute either the INSTANTIATE_OFFLINE or the INSTANTIATE_ONLINE function more than once for a particular materialized view site, then run the DROP_SITE_INSTANTIATION procedure in the DBMS_REPCAT_RGT package before you attempt to repackage a template for the site. Otherwise, Oracle returns an error stating that there is a duplicate template site.

Packaging a Deployment Template for Offline Instantiation

The INSTANTIATE_OFFLINE function creates a script that creates the materialized view environment according to the contents of a specified deployment template. In addition to containing the DDL (CREATE statements) to create the materialized view environment, this script also contains the DML (INSERT statements) to populate the materialized view environment with the appropriate data set.


Note:

If you are packaging your template at the same master site that contains the target master objects for your deployment template, then you must create a loopback database link.

--Use the INSTANTIATE_OFFLINE function to package the 
--template for offline instantiation by a remote materialized view 
--site. Executing this procedure both creates a script that 
--creates that materialized view environment and populates the
--environment with the proper data set. This script is stored
--in the temporary USER_REPCAT_TEMP_OUTPUT view.

CONNECT repadmin@orc3.example.com
Enter password: password

SET SERVEROUTPUT ON
DECLARE
   dt_num NUMBER;
BEGIN
   dt_num := DBMS_REPCAT_RGT.INSTANTIATE_OFFLINE(
               refresh_template_name => 'hr_refg_dt',
               user_name => 'hr',
               site_name => 'mv4.example.com',
               next_date => SYSDATE,
               interval => 'SYSDATE + (1/144)');
   DBMS_OUTPUT.PUT_LINE('Template ID = ' || dt_num);
END;
/
COMMIT;
/

Make a note of the number that is returned for the dt_num variable. You must use this number when you select from the USER_REPCAT_TEMP_OUTPUT data dictionary view to retrieve the generated script. Be sure that you complete the steps in "Saving an Instantiation Script to File" after you complete this section. This script is unique to an individual materialized view site and cannot be used for other materialized view sites.

Packaging a Deployment Template for Online Instantiation

The INSTANTIATE_ONLINE function creates a script that creates the materialized view environment according to the contents of a specified deployment template. When this script is executed at the remote materialized view site, Oracle creates the materialized view site according to the DDL (CREATE statements) in the script and populates the environment with the appropriate data set from the master site. This requires that the remote materialized view site has a "live" connection to the master site.


See Also:

Oracle Database Advanced Replication for additional materialized view site requirements

--Use the INSTANTIATE_ONLINE function to "package" the 
--template for online instantiation by a remote materialized view 
--site. Executing this procedure creates a script which can
--then be used to create a materialized view environment. This script 
--is stored in the temporary USER_REPCAT_TEMP_OUTPUT view.

CONNECT repadmin@orc3.example.com
Enter password: password

SET SERVEROUTPUT ON
DECLARE
   dt_num NUMBER;
BEGIN
   dt_num := DBMS_REPCAT_RGT.INSTANTIATE_ONLINE(
               refresh_template_name => 'hr_refg_dt',
               user_name => 'hr',
               site_name => 'mv4.example.com',
               next_date => SYSDATE,
               interval => 'SYSDATE + (1/144)');
   DBMS_OUTPUT.PUT_LINE('Template ID = ' || dt_num);
END;
/
COMMIT;
/

Make a note of the number that is returned for the dt_num variable. You must use this number when you select from the USER_REPCAT_TEMP_OUTPUT data dictionary view to retrieve the generated script. Be sure that you complete the steps in "Saving an Instantiation Script to File" after you complete this task.

Saving an Instantiation Script to File

The best way to save the contents of the USER_REPCAT_TEMP_OUTPUT data dictionary view is to use the UTL_FILE package to save the contents of the TEXT column in the USER_REPCAT_TEMP_OUTPUT view to a file.

These contents are saved to a directory that corresponds to a directory object. To create a directory object, the CREATE ANY DIRECTORY privilege is required. If the replication administrator does not have this privilege, then connect as an administrative user who can grant privileges. For example:

GRANT CREATE ANY DIRECTORY TO repadmin;

Note:

The following action must be performed immediately after you have called either the INSTANTIATE_OFFLINE or INSTANTIATE_ONLINE functions, because the contents of the USER_REPCAT_TEMP_OUTPUT data dictionary view are temporary. If you have not completed the steps in "Packaging a Deployment Template", then do so now and then complete the following action.


See Also:

Oracle Database PL/SQL Packages and Types Reference for more information about the UTL_FILE package

Enter the following to save the deployment template script to a file.

DECLARE 
  fh UTL_FILE.FILE_TYPE; 
  CURSOR ddlcursor(myid NUMBER) IS 
  SELECT TEXT FROM USER_REPCAT_TEMP_OUTPUT WHERE OUTPUT_ID = myid ORDER BY LINE; 
BEGIN 
  fh := UTL_FILE.FOPEN ('file_location', 'file_name', 'w'); 
  UTL_FILE.PUT_LINE (fh, 'SET ECHO OFF;'); 
  FOR myrec IN ddlcursor(template_id) LOOP
    UTL_FILE.PUT_LINE(fh, myrec.text); 
  END LOOP; 
  UTL_FILE.PUT_LINE (fh, 'SET ECHO ON;'); 
  UTL_FILE.FFLUSH(fh); 
  UTL_FILE.FCLOSE(fh); 
END; 
/ 

Notice that file_location, file_name, and template_id are placeholders. Substitute the correct values for your environment:

  • Replace the file_location placeholder with the name of a directory object that represents the directory where you want to save the template script.

  • Replace the file_name placeholder with name you want to use for the template script.

  • Replace the template_id placeholder with the number returned by the INSTANTIATE_OFFLINE or INSTANTIATE_ONLINE function when you packaged the template previously.

For example, suppose you have the following values:

PlaceholderValue
file_location/home/gen_files/
file_namesf.sql
template_id18

Given these values, connect to the master site as the replication administrator and run the following procedure to save the template script to a file:

CONNECT repadmin@orc3.example.com
Enter password: password

CREATE DIRECTORY GFILES AS '/home/gen_files';

DECLARE 
  fh UTL_FILE.FILE_TYPE; 
  CURSOR ddlcursor(myid NUMBER) IS 
  SELECT TEXT FROM USER_REPCAT_TEMP_OUTPUT WHERE OUTPUT_ID = myid 
  ORDER BY LINE; 
BEGIN 
  fh := UTL_FILE.FOPEN ('GFILES', 'sf.sql', 'w'); 
  UTL_FILE.PUT_LINE (fh, 'SET ECHO OFF;'); 
  FOR myrec IN ddlcursor(18) LOOP
    UTL_FILE.PUT_LINE(fh, myrec.text); 
  END LOOP; 
  UTL_FILE.PUT_LINE (fh, 'SET ECHO ON;'); 
  UTL_FILE.FFLUSH(fh); 
  UTL_FILE.FCLOSE(fh); 
END; 
/ 

Distributing Instantiation Files

After creating the instantiation script and saving it to a file, you must distribute this file to the remote materialized view sites that need to instantiate the template. You can distribute this file by posting the file on an FTP site or saving the file to a CD-ROM, floppy disk, or other distribution medium. You can also transfer the file using the DBMS_FILE_TRANSFER package.

Instantiating a Deployment Template

After the instantiation script has been distributed to the remote materialized view sites, you are ready to instantiate the deployment template at the remote materialized view site. Ensure that you have set up the materialized view site before you instantiate the deployment template. The following script demonstrates how to complete the instantiation process at a remote materialized view site.


See Also:



Note:

If you are viewing this document online, then you can copy the text from the "BEGINNING OF SCRIPT" line after this note to the "END OF SCRIPT" line into a text editor and then edit the text to create a script for your environment.

/************************* BEGINNING OF SCRIPT ******************************

Step 1   If it does not exist, then create the schema at materialized view site.

Before executing the instantiation script at the remote materialized view site, you must create the schema that contains the replicated objects.

The following illustrates creating the hr schema. This schema might already exist in your database. In this case, the schema might need additional privileges, such as CREATE MATERIALIZED VIEW, ALTER ANY MATERIALIZED VIEW, and CREATE DATABASE LINK.

*/

SET ECHO ON

SPOOL instant_mv.out

CONNECT system@mv4.example.com

CREATE TABLESPACE demo_mv
 DATAFILE 'demo_mv.dbf' SIZE 10M AUTOEXTEND ON
 EXTENT MANAGEMENT LOCAL AUTOALLOCATE;

CREATE TEMPORARY TABLESPACE temp_mv
 TEMPFILE 'temp_mv.dbf' SIZE 5M AUTOEXTEND ON;
ACCEPT password PROMPT 'Enter password for user: ' HIDE

CREATE USER hr IDENTIFIED BY &password;

ALTER USER hr DEFAULT TABLESPACE demo_mv
              QUOTA UNLIMITED ON demo_mv;

ALTER USER hr TEMPORARY TABLESPACE temp_mv;

GRANT 
  CREATE SESSION, 
  CREATE TABLE, 
  CREATE PROCEDURE, 
  CREATE SEQUENCE, 
  CREATE TRIGGER, 
  CREATE VIEW, 
  CREATE SYNONYM, 
  ALTER SESSION,
  CREATE MATERIALIZED VIEW,
  ALTER ANY MATERIALIZED VIEW,
  CREATE DATABASE LINK
 TO hr;

/*

Step 2   If they do not already exist, then create database links for the schema.

Before instantiating the deployment template, you must ensure that the necessary database links exist for the replicated schema. The owner of the materialized views needs a database link pointing to the proxy_refresher that was created when the master site was set up.

*/

CREATE PUBLIC DATABASE LINK orc3.example.com USING 'orc3.example.com';

CONNECT hr@mv4.example.com

CREATE DATABASE LINK orc3.example.com 
   CONNECT TO proxy_refresher IDENTIFIED BY &password;

/*

See Also:

Step 7 for more information about creating proxy master site users

Step 3   Execute the instantiation script.

*/
CONNECT mviewadmin@mv4.example.com

@d:\sf.sql

SET ECHO OFF

SPOOL OFF

/*

Depending on the size of the materialized view environment created and the amount of data loaded, the instantiation procedure might take a substantial amount of time.

************************** END OF SCRIPT **********************************/

Refreshing a Refresh Group After Instantiation

If you have just instantiated a deployment template using the offline instantiation method, then you should perform a refresh of the refresh group as soon as possible by issuing the following execute statement:

CONNECT hr@mv4.example.com
Enter password: password

EXECUTE DBMS_REFRESH.REFRESH ('hr_refg');
PKOIu9/PKfUIOEBPS/rarconflictres.htm Configuring Conflict Resolution

6 Configuring Conflict Resolution

This chapter illustrates how to define conflict resolution methods for your replication environment.

This chapter contains these topics:

Preparing for Conflict Resolution

Though you might design your database and front-end application to avoid conflicts between multiple sites in a replication environment, you might not be able to completely eliminate the possibility of conflicts. One of the most important aspects of replication is to ensure data convergence at all sites participating in the replication environment.

When data conflicts occur, you need a mechanism to ensure that the conflict is resolved in accordance with your business rules and that the data converges correctly at all sites.

Advanced Replication lets you define a conflict resolution system for your database that resolves conflicts in accordance with your business rules. If you have a unique situation that Oracle's prebuilt conflict resolution methods cannot resolve, then you have the option of building and using your own conflict resolution methods.

Before you begin implementing conflict resolution methods for your replicated tables, analyze the data in your system to determine where the most conflicts can occur. For example, static data such as an employee number might change very infrequently and is not subject to a high occurrence of conflicts. An employee's customer assignments, however, might change often and would therefore be prone to data conflicts.

After you have determined where the conflicts are most likely to occur, you must determine how to resolve the conflict. For example, do you want the latest change to have precedence, or should one site have precedence over another?

As you read each of the sections describing the different conflict resolution methods, you will learn what each method is best suited for. So, read each section and then think about how your business would want to resolve any potential conflicts.

After you have identified the potential problem areas and have determined what business rules would resolve the problem, use Oracle's conflict resolution methods (or one of your own) to implement a conflict resolution system.


See Also:

Oracle Database Advanced Replication for conceptual information about conflict resolution methods and detailed information about data convergence for each method

Creating Conflict Resolution Methods for Update Conflicts

The most common data conflict occurs when the same row at two or more different sites are updated at nearly the same time, or before the deferred transaction from one site was successfully propagated to the other sites.

One method to avoid update conflicts is to implement a synchronous replication environment, though this solution requires large network resource.

The other solution is to use the Oracle conflict resolution methods to deal with update conflicts that can occur when the same row receives two or more updates.

Overwrite and Discard Conflict Resolution Methods

The overwrite and discard methods ignore the values from either the originating or destination site and therefore can never guarantee convergence with more than one master site. These methods are designed to be used by a single master site and multiple materialized view sites, or with some form of a user-defined notification facility.

The overwrite method replaces the current value at the destination site with the new value from the originating site. Conversely, the discard method ignores the new value from the originating site.


See Also:

"ADD_conflicttype_RESOLUTION Procedure" and Oracle Database Advanced Replication for more information about overwrite and discard

Complete the following steps to create an overwrite or discard conflict resolution method. This example illustrates the use of the discard conflict resolution method at the master site. Therefore, in the event of a conflict, the data from a materialized view site is discarded and the master site data remains.


Note:

If you are viewing this document online, then you can copy the text from the "BEGINNING OF SCRIPT" line after this note to the "END OF SCRIPT" line into a text editor and then edit the text to create a script for your environment.

/************************* BEGINNING OF SCRIPT ******************************

Step 1   Connect as the replication administrator.

The procedures in the following steps must be executed by the replication administrator.

*/

SET ECHO ON

SPOOL discard_conflictres.out

CONNECT repadmin@orc1.example.com

/*

Step 2   Quiesce the master group that contains the table to which you want to apply the conflict resolution method.

Before you define overwrite or discard conflict resolution methods, quiesce the master group that contains the table to which you want to apply the conflict resolution method. In a single master replication environment, quiescing the master group might not be required.

*/

BEGIN
   DBMS_REPCAT.SUSPEND_MASTER_ACTIVITY (
      gname => 'hr_repg');
END;
/

/*

Step 3   Create a column group for your target table.

All Oracle conflict resolution methods are based on logical column groupings called column groups.

*/

BEGIN
   DBMS_REPCAT.MAKE_COLUMN_GROUP (
      sname => 'hr',
      oname => 'departments',
      column_group => 'dep_cg',
      list_of_column_names => 'manager_id,location_id');
END;
/

/*

Step 4   Define the conflict resolution method for a specified table.

This example creates an OVERWRITE conflict resolution method.

*/

BEGIN
   DBMS_REPCAT.ADD_UPDATE_RESOLUTION (
      sname => 'hr',
      oname => 'departments',
      column_group => 'dep_cg',
      sequence_no => 1,
      method => 'DISCARD',
      parameter_column_name => 'manager_id,location_id');
END;
/

/*

Step 5   Regenerate replication support for the table that received the conflict resolution method.

*/
BEGIN 
    DBMS_REPCAT.GENERATE_REPLICATION_SUPPORT (
      sname => 'hr',
      oname => 'departments', 
      type => 'TABLE',
      min_communication => TRUE); 
END;
/

/*

Step 6   Resume master activity after replication support has been regenerated.

*/
BEGIN
   DBMS_REPCAT.RESUME_MASTER_ACTIVITY (
      gname => 'hr_repg');
END;
/

SET ECHO OFF

SPOOL OFF

/************************* END OF SCRIPT **********************************/

Minimum and Maximum Conflict Resolution Methods

When Advanced Replication detects a conflict with a column group and calls either the minimum or maximum value conflict resolution methods, it compares the new value from the originating site with the current value from the destination site for a designated column in the column group. You must designate this column when you define your conflict resolution method.

If the new value of the designated column is less than or greater than (depending on the method used) the current value, then the column group values from the originating site are applied at the destination site, assuming that all other errors were successfully resolved for the row. Otherwise the rows remain unchanged.

Complete the following steps to create an maximum or minimum conflict resolution method.


Note:

If you are viewing this document online, then you can copy the text from the "BEGINNING OF SCRIPT" line after this note to the "END OF SCRIPT" line into a text editor and then edit the text to create a script for your environment.

/************************* BEGINNING OF SCRIPT ******************************

Step 1   Connect as the replication administrator.

The procedures in the following steps must be executed by the replication administrator.

*/

SET ECHO ON

SPOOL min_conflictres.out

CONNECT repadmin@orc1.example.com

/*

Step 2   Quiesce the master group that contains the table to which you want to apply the conflict resolution method.

Before you define maximum or minimum conflict resolution methods, quiesce the master group that contains the table to which you want to apply the conflict resolution method. In a single master replication environment, quiescing the master group might not be required.

*/

BEGIN
   DBMS_REPCAT.SUSPEND_MASTER_ACTIVITY (
      gname => 'hr_repg');
END;
/

/*

Step 3   Create a column group for your target table.

All Oracle conflict resolution methods are based on logical column groupings called column groups.

*/

BEGIN
   DBMS_REPCAT.MAKE_COLUMN_GROUP (
      sname => 'hr',
      oname => 'jobs',
      column_group => 'job_minsal_cg',
      list_of_column_names => 'min_salary');
END;
/

/*

Step 4   Define the conflict resolution method for a specified table.

This example creates a MINIMUM conflict resolution method.

*/

BEGIN
   DBMS_REPCAT.ADD_UPDATE_RESOLUTION (
      sname => 'hr',
      oname => 'jobs',
      column_group => 'job_minsal_cg',
      sequence_no => 1,
      method => 'MINIMUM',
      parameter_column_name => 'min_salary');
END;
/

/*

Step 5   Regenerate replication support for the table that received the conflict resolution method.

*/
BEGIN 
    DBMS_REPCAT.GENERATE_REPLICATION_SUPPORT (
      sname => 'hr',
      oname => 'jobs', 
      type => 'TABLE',
      min_communication => TRUE); 
END;
/

/*

Step 6   Resume replication activity.

*/
BEGIN
   DBMS_REPCAT.RESUME_MASTER_ACTIVITY (
      gname => 'hr_repg');
END;
/

SET ECHO OFF

SPOOL OFF

/************************* END OF SCRIPT **********************************/

Timestamp Conflict Resolution Methods

The earliest time stamp and latest time stamp methods are variations on the minimum and maximum value methods. To use the time stamp method, you must designate a column in the replicated table of type DATE. When an application updates any column in a column group, the application must also update the value of the designated time stamp column with the local SYSDATE. For a change applied from another site, the time stamp value should be set to the time stamp value from the originating site.

Two elements are needed to make time stamp conflict resolution work well:

  • Synchronized time settings between computers

  • Timestamp field and trigger to automatically record time stamp

Complete the following steps to create a time stamp conflict resolution method.


Note:

If you are viewing this document online, then you can copy the text from the "BEGINNING OF SCRIPT" line after this note to the "END OF SCRIPT" line into a text editor and then edit the text to create a script for your environment.

/************************* BEGINNING OF SCRIPT ******************************

Step 1   Connect as the replication administrator.

The procedures in the following steps must be executed by the replication administrator.

*/

SET ECHO ON

SPOOL timestamp_conflictres.out

CONNECT repadmin@orc1.example.com

/*

Step 2   Quiesce the master group that contains the table to which you want to apply the conflict resolution method.

Before defining time stamp conflict resolution methods, quiesce the master group that contains the table to which you want to apply the conflict resolution method. In a single master replication environment, quiescing the master group might not be required.

*/

BEGIN
   DBMS_REPCAT.SUSPEND_MASTER_ACTIVITY (
      gname => 'hr_repg');
END;
/

/*

Step 3   Add an additional column to your table to record the timestamp value when a row is inserted or updated.

If the target table does not already contain a time stamp field, then add an additional column to your table to record the time stamp value when a row is inserted or updated. You must use the ALTER_MASTER_REPOBJECT procedure to apply the DDL to the target table. Simply issuing the DDL might cause the replicated object to become invalid.

*/

BEGIN
   DBMS_REPCAT.ALTER_MASTER_REPOBJECT (
      sname => 'hr',
      oname => 'countries',
      type => 'TABLE',
      ddl_text => 'ALTER TABLE hr.countries ADD (timestamp DATE)');
END;
/

/*

Step 4   Regenerate replication support for the altered table.

*/
BEGIN 
    DBMS_REPCAT.GENERATE_REPLICATION_SUPPORT (
      sname => 'hr',
      oname => 'countries', 
      type => 'TABLE',
      min_communication => TRUE); 
END;
/

/*

Step 5   Create a trigger that records the timestamp when a row is either inserted or updated.

This recorded value is used in the resolution of conflicts based on the Timestamp method. Instead of directly executing the DDL, you should use the DBMS_REPCAT.CREATE_MASTER_REPOBJECT procedure to create the trigger and add it to your master group.


Note:

You cannot use columns of datetime and interval data types for priority group conflict resolution.

*/

BEGIN
   DBMS_REPCAT.CREATE_MASTER_REPOBJECT (
      gname => 'hr_repg',
      type => 'TRIGGER',
      oname => 'insert_time',
      sname => 'hr',
      ddl_text => 'CREATE TRIGGER hr.insert_time
                      BEFORE
                         INSERT OR UPDATE ON hr.countries FOR EACH ROW
                      BEGIN
                         IF DBMS_REPUTIL.FROM_REMOTE = FALSE THEN
                            :NEW.TIMESTAMP := SYSDATE;
                         END IF;
                      END;');
END;
/

/*

Step 6   Create a column group for your target table.

All Oracle conflict resolution methods are based on logical column groupings called column groups.

*/

BEGIN
   DBMS_REPCAT.MAKE_COLUMN_GROUP (
      sname => 'hr',
      oname => 'countries',
      column_group => 'countries_timestamp_cg',
      list_of_column_names => 'country_name,region_id,timestamp');
END;
/

/*

Step 7   Define the conflict resolution method for a specified table.

This example specifies the LATEST TIMESTAMP conflict resolution method using the timestamp column that you created earlier.

*/

BEGIN
   DBMS_REPCAT.ADD_UPDATE_RESOLUTION (
      sname => 'hr',
      oname => 'countries',
      column_group => 'countries_timestamp_cg',
      sequence_no => 1,
      method => 'LATEST TIMESTAMP',
      parameter_column_name => 'timestamp');
END;
/

/*

Step 8   Regenerate replication support for the table that received the conflict resolution method.

*/
BEGIN 
    DBMS_REPCAT.GENERATE_REPLICATION_SUPPORT (
      sname => 'hr',
      oname => 'countries', 
      type => 'TABLE',
      min_communication => TRUE); 
END;
/

/*

Step 9   Resume replication activity.

*/
BEGIN
   DBMS_REPCAT.RESUME_MASTER_ACTIVITY (
      gname => 'hr_repg');
END;
/

SET ECHO OFF

SPOOL OFF

/************************* END OF SCRIPT **********************************/

Additive and Average Conflict Resolution Methods

The additive and average methods work with column groups consisting of a single numeric column only. Instead of "accepting" one value over another, this conflict resolution method either adds the two compared values together or takes an average of the two compared values.

Complete the following steps to create an additive or average conflict resolution method. This example averages the commission percentage for an employee in the event of a conflict.


Note:

If you are viewing this document online, then you can copy the text from the "BEGINNING OF SCRIPT" line after this note to the "END OF SCRIPT" line into a text editor and then edit the text to create a script for your environment.

/************************* BEGINNING OF SCRIPT ******************************

Step 1   Connect as the replication administrator.

The procedures in the following steps must be executed by the replication administrator.

*/

SET ECHO ON

SPOOL average_conflictres.out

CONNECT repadmin@orc1.example.com

/*

Step 2   Quiesce the master group that contains the table to which you want to apply the conflict resolution method.

Before you define additive and average conflict resolution methods, quiesce the master group that contains the table to which you want to apply the conflict resolution method. In a single master replication environment, quiescing the master group might not be required.

*/

BEGIN
   DBMS_REPCAT.SUSPEND_MASTER_ACTIVITY (
      gname => 'hr_repg');
END;
/

/*

Step 3   Create a column group for your target table.

All Oracle conflict resolution methods are based on logical column groupings called column groups.

*/

BEGIN
   DBMS_REPCAT.MAKE_COLUMN_GROUP (
      sname => 'hr',
      oname => 'employees',
      column_group => 'commission_average_cg',
      list_of_column_names => 'commission_pct');
END;
/

/*

Step 4   Define the conflict resolution method for a specified table.

This example specifies the AVERAGE conflict resolution method using the sal column.

*/

BEGIN
   DBMS_REPCAT.ADD_UPDATE_RESOLUTION (
      sname => 'hr',
      oname => 'employees',
      column_group => 'commission_average_cg',
      sequence_no => 1,
      method => 'AVERAGE',
      parameter_column_name => 'commission_pct');
END;
/

/*

Step 5   Regenerate replication support for the table that received the conflict resolution method.

*/
BEGIN 
    DBMS_REPCAT.GENERATE_REPLICATION_SUPPORT (
      sname => 'hr',
      oname => 'employees', 
      type => 'TABLE',
      min_communication => TRUE); 
END;
/

/*

Step 6   Resume replication activity.

*/
BEGIN
   DBMS_REPCAT.RESUME_MASTER_ACTIVITY (
      gname => 'hr_repg');
END;
/

SET ECHO OFF

SPOOL OFF

/************************* END OF SCRIPT **********************************/

Priority Groups Conflict Resolution Methods

Priority groups allow you to assign a priority level to each possible value of a particular column. If Oracle detects a conflict, then Oracle updates the table whose "priority" column has a lower value using the data from the table with the higher priority value.

Complete the following steps to create a priority groups conflict resolution method.


Note:

If you are viewing this document online, then you can copy the text from the "BEGINNING OF SCRIPT" line after this note to the "END OF SCRIPT" line into a text editor and then edit the text to create a script for your environment.

/************************* BEGINNING OF SCRIPT ******************************

Step 1   Connect as the replication administrator.

The procedures in the following steps must be executed by the replication administrator.

*/

SET ECHO ON

SPOOL priority_groups_conflictres.out

CONNECT repadmin@orc1.example.com

/*

Step 2   Quiesce the master group that contains the table to which you want to apply the conflict resolution method.

Before you define a priority groups conflict resolution method, quiesce the master group that contains the table to which you want to apply the conflict resolution method. In a single master replication environment, quiescing the master group might not be required.

*/

BEGIN
   DBMS_REPCAT.SUSPEND_MASTER_ACTIVITY (
      gname => 'hr_repg');
END;
/

/*

Step 3   Ensure that the job_id column is part of the column group for which your site priority conflict resolution mechanism is used.

Use the ADD_GROUPED_COLUMN procedure to add this column to an existing column group. If you do not already have a column group, then you can create a new column group using the DBMS_REPCAT.MAKE_COLUMN_GROUP procedure.

*/

BEGIN
   DBMS_REPCAT.MAKE_COLUMN_GROUP (
      sname => 'hr',
      oname => 'employees',
      column_group => 'employees_priority_cg',
      list_of_column_names => 'manager_id,hire_date,salary,job_id');
END;
/

/*

Step 4   Before you begin assigning a priority value to the values in your table, create a priority group that holds the values you defined.

*/
BEGIN
   DBMS_REPCAT.DEFINE_PRIORITY_GROUP (
      gname => 'hr_repg',
      pgroup => 'job_pg',
      datatype => 'VARCHAR2');
END;
/

/*

Step 5   Define a priority value for all possible table values.

The DBMS_REPCAT.ADD_PRIORITY_datatype procedure is available in several different versions. There is a version for each available data type (NUMBER, VARCHAR2, and so on). Execute this procedure as often as necessary until you have defined a priority value for all possible table values.


See Also:

"ADD_PRIORITY_datatype Procedure" for more information

*/

BEGIN
   DBMS_REPCAT.ADD_PRIORITY_VARCHAR2(
      gname => 'hr_repg',
      pgroup => 'job_pg',
      value => 'ad_pres',
      priority => 100);
END;
/

BEGIN
   DBMS_REPCAT.ADD_PRIORITY_VARCHAR2(
      gname => 'hr_repg',
      pgroup => 'job_pg',
      value => 'sa_man',
      priority => 80);
END;
/

BEGIN
   DBMS_REPCAT.ADD_PRIORITY_VARCHAR2(
      gname => 'hr_repg',
      pgroup => 'job_pg',
      value => 'sa_rep',
      priority => 60);
END;
/

BEGIN
   DBMS_REPCAT.ADD_PRIORITY_VARCHAR2(
      gname => 'hr_repg',
      pgroup => 'job_pg',
      value => 'pu_clerk',
      priority => 40);
END;
/

BEGIN
   DBMS_REPCAT.ADD_PRIORITY_VARCHAR2(
      gname => 'hr_repg',
      pgroup => 'job_pg',
      value => 'st_clerk',
      priority => 20);
END;
/

/*

Step 6   Add the PRIORITY GROUP resolution method to your replicated table.

The following example shows that it is the second conflict resolution method for the specified column group (sequence_no parameter).

*/

BEGIN
   DBMS_REPCAT.ADD_UPDATE_RESOLUTION (
      sname => 'hr',
      oname => 'employees',
      column_group => 'employees_priority_cg',
      sequence_no => 2,
      method => 'PRIORITY GROUP',
      parameter_column_name => 'job_id',
      priority_group => 'job_pg');
END;
/

/*

Step 7   Regenerate replication support for the table that received the conflict resolution method.

*/
BEGIN 
    DBMS_REPCAT.GENERATE_REPLICATION_SUPPORT (
      sname => 'hr',
      oname => 'employees', 
      type => 'TABLE',
      min_communication => TRUE); 
END;
/

/*

Step 8   Resume replication activity.

*/
BEGIN
   DBMS_REPCAT.RESUME_MASTER_ACTIVITY (
      gname => 'hr_repg');
END;
/

SET ECHO OFF

SPOOL OFF

/************************* END OF SCRIPT **********************************/

Site Priority Conflict Resolution Methods

Site priority is a specialized form of a priority group. Therefore, many of the procedures associated with site priority behave similarly to the procedures associated with priority groups. Instead of resolving a conflict based on the priority of a field's value, the conflict is resolved based on the priority of the sites involved.

For example, if you assign orc2.example.com a higher priority value than orc1.example.com and a conflict arises between these two sites, then the value from orc2.example.com is used.

Complete the following steps to create a site priority conflict resolution method.


Note:

If you are viewing this document online, then you can copy the text from the "BEGINNING OF SCRIPT" line after this note to the "END OF SCRIPT" line into a text editor and then edit the text to create a script for your environment.

/************************* BEGINNING OF SCRIPT ******************************

Step 1   Connect as the replication administrator.

The procedures in the following steps must be executed by the replication administrator.

*/

SET ECHO ON

SPOOL site_priority_conflictres.out

CONNECT repadmin@orc1.example.com

/*

Step 2   Quiesce the master group that contains the table to which you want to apply the conflict resolution method.

Before you define a site priority conflict resolution method, quiesce the master group that contains the table to which you want to apply the conflict resolution method. In a single master replication environment, quiescing the master group might not be required.

*/

BEGIN
   DBMS_REPCAT.SUSPEND_MASTER_ACTIVITY (
      gname => 'hr_repg');
END;
/

/*

Step 3   Add a site column to your table to store the site value.

Use the DBMS_REPCAT.ALTER_MASTER_REPOBJECT procedure to apply the DDL to the target table. Simply issuing the DDL might cause the replicated object to become invalid.

*/

BEGIN
   DBMS_REPCAT.ALTER_MASTER_REPOBJECT (
      sname => 'hr',
      oname => 'regions',
      type => 'TABLE',
      ddl_text => 'ALTER TABLE hr.regions ADD (site VARCHAR2(20))');
END;
/

/*

Step 4   Regenerate replication support for the affected object.

*/
BEGIN 
    DBMS_REPCAT.GENERATE_REPLICATION_SUPPORT (
      sname => 'hr',
      oname => 'regions', 
      type => 'TABLE',
      min_communication => TRUE); 
END;
/

/*

Step 5   Create a trigger that records the global name of the site when a row is either inserted or updated.

This recorded value is used in the resolution of conflicts based on the site priority method. Instead of directly executing the DDL, you should use the DBMS_REPCAT.CREATE_MASTER_REPOBJECT procedure to create the trigger and add it to your master group.

*/

BEGIN
   DBMS_REPCAT.CREATE_MASTER_REPOBJECT (
      gname => 'hr_repg',
      type => 'TRIGGER',
      oname => 'insert_site',
      sname => 'hr',
      ddl_text => 'CREATE TRIGGER hr.insert_site
                     BEFORE
                       INSERT OR UPDATE ON hr.regions FOR EACH ROW
                     BEGIN 
                       IF DBMS_REPUTIL.FROM_REMOTE = FALSE THEN
                         SELECT global_name INTO :NEW.SITE FROM GLOBAL_NAME;
                       END IF;
                     END;');
END;
/

/*

Step 6   Ensure that the new column is part of the column group for which your site priority conflict resolution mechanism is used.

Use the ADD_GROUPED_COLUMN procedure to add this column to an existing column group. If you do not already have a column group, then you can create a new column group using the DBMS_REPCAT.MAKE_COLUMN_GROUP procedure.

*/

BEGIN
   DBMS_REPCAT.MAKE_COLUMN_GROUP (
      sname => 'hr',
      oname => 'regions',
      column_group => 'regions_sitepriority_cg',
      list_of_column_names => 'region_id,region_name,site');
END;
/

/*

Step 7   Before assigning a site priority value to the sites in your replicated environment, create a site priority group that holds the values you defined.

*/
BEGIN
   DBMS_REPCAT.DEFINE_SITE_PRIORITY (
      gname => 'hr_repg',
      name => 'regions_sitepriority_pg');
END;
/

/*

Step 8   Define the priority value for each of the sites in your replication environment.

Execute this procedure as often as necessary until you have defined a site priority value for each of the sites in our replication environment.

*/

BEGIN
   DBMS_REPCAT.ADD_SITE_PRIORITY_SITE (
      gname => 'hr_repg',
      name => 'regions_sitepriority_pg',
      site => 'orc1.example.com',
      priority => 100);
END;
/

BEGIN
   DBMS_REPCAT.ADD_SITE_PRIORITY_SITE (
      gname => 'hr_repg',
      name => 'regions_sitepriority_pg',
      site => 'orc2.example.com',
      priority => 50);
END;
/

BEGIN
   DBMS_REPCAT.ADD_SITE_PRIORITY_SITE (
      gname => 'hr_repg',
      name => 'regions_sitepriority_pg',
      site => 'orc3.example.com',
      priority => 25);
END;
/

/*

Step 9   Add the SITE PRIORITY resolution method to your replicated table.

The following example shows that it is the third conflict resolution method for the specified column group (sequence_no parameter).

*/

BEGIN
   DBMS_REPCAT.ADD_UPDATE_RESOLUTION (
      sname => 'hr',
      oname => 'regions',
      column_group => 'regions_sitepriority_cg',
      sequence_no => 1,
      method => 'SITE PRIORITY',
      parameter_column_name => 'site',
      priority_group => 'regions_sitepriority_pg');
END;
/

/*

Step 10   Regenerate replication support for the table that received the conflict resolution method.

*/
BEGIN 
    DBMS_REPCAT.GENERATE_REPLICATION_SUPPORT (
      sname => 'hr',
      oname => 'regions', 
      type => 'TABLE',
      min_communication => TRUE); 
END;
/

/*

Step 11   Resume replication activity.

*/
BEGIN
   DBMS_REPCAT.RESUME_MASTER_ACTIVITY (
      gname => 'hr_repg');
END;
/

SET ECHO OFF

SPOOL OFF

/************************* END OF SCRIPT **********************************/

Creating Conflict Resolution Methods for Uniqueness Conflicts

In a replication environment, you might have situations where you encounter a conflict on a unique constraint, often resulting from an insert. If your business rules allow you to delete the duplicate row, then you can define a resolution method with Oracle's prebuilt conflict resolution methods.

More often, however, you probably want to modify the conflicting value so that it no longer violates the unique constraint. Modifying the conflicting value ensures that you do not lose important data. Oracle's prebuilt uniqueness conflict resolution method can make the conflicting value unique by appending a site name or a sequence number to the value.

An additional component that accompanies the uniqueness conflict resolution method is a notification facility. The conflicting information is modified by Oracle so that it can be inserted into the table, but you should be notified so that you can analyze the conflict to determine whether the record should be deleted, or the data merged into another record, or a completely new value be defined for the conflicting data.

A uniqueness conflict resolution method detects and resolves conflicts encountered on columns with a UNIQUE constraint. The example in this section uses the employees table in the hr sample schema, which has the unique constraint emp_email_uk on the email column.


Note:

To add unique conflict resolution method for a column, the name of the unique index on the column must match the name of the unique or primary key constraint.

Complete the following steps to create a uniqueness conflict resolution method.


Note:

If you are viewing this document online, then you can copy the text from the "BEGINNING OF SCRIPT" line after this note to the "END OF SCRIPT" line into a text editor and then edit the text to create a script for your environment.

/************************* BEGINNING OF SCRIPT ******************************

Step 1   Connect as the replication administrator.

*/
SET ECHO ON

SPOOL unique_conflictres.out

CONNECT repadmin@orc1.example.com

/*

Step 2   Quiesce the master group that contains the table to which you want to apply the conflict resolution method.

Before you define a uniqueness conflict resolution method, ensure that the master group that contains the table to which you want to apply the conflict resolution method is quiesced.

*/

BEGIN
   DBMS_REPCAT.SUSPEND_MASTER_ACTIVITY (
      gname => 'hr_repg');
END;
/

/*

Step 3   Create a table that stores the messages received from your notification facility.

In this example, the table name is conf_report.

*/

BEGIN
   DBMS_REPCAT.EXECUTE_DDL (
      gname => 'hr_repg',
      ddl_text => 'CREATE TABLE hr.conf_report (
                   line NUMBER(2),
                   txt VARCHAR2(80),
                   timestamp DATE,
                   table_name VARCHAR2(30),
                   table_owner VARCHAR2(30),
                   conflict_type VARCHAR2(7))');
END;
/

/*

Step 4   Connect as the owner of the table you created in Step 3.

*/
CONNECT hr@orc1.example.com

/*

Step 5   Create a package that sends a notification to the conf_report table when a conflict is detected.

In this example, the package name is notify.


See Also:

Appendix B, "User-Defined Conflict Resolution Methods" describes the conflict resolution notification package that is created in this script

*/

CREATE OR REPLACE PACKAGE notify AS
   FUNCTION emp_unique_violation (email IN OUT VARCHAR2,
      discard_new_values IN OUT BOOLEAN)
   RETURN BOOLEAN;
END notify;
/

CREATE OR REPLACE PACKAGE BODY notify AS
   TYPE message_table IS TABLE OF VARCHAR2(80) INDEX BY BINARY_INTEGER;
   PROCEDURE report_conflict(conflict_report IN MESSAGE_TABLE,
      report_length IN NUMBER,
      conflict_time IN DATE,
      conflict_table IN VARCHAR2,
      table_owner IN VARCHAR2,
      conflict_type IN VARCHAR2) IS
      BEGIN
         FOR idx IN 1..report_length LOOP
            BEGIN
              INSERT INTO hr.conf_report
              (line, txt, timestamp, table_name, table_owner, conflict_type)
              VALUES (idx, SUBSTR(conflict_report(idx),1,80), conflict_time,
              conflict_table, table_owner, conflict_type);
            EXCEPTION WHEN others THEN NULL;
            END;
         END LOOP;
      END report_conflict;
   FUNCTION emp_unique_violation(email IN OUT VARCHAR2,
      discard_new_values IN OUT BOOLEAN)
   RETURN BOOLEAN IS
      local_node VARCHAR2(128);
      conf_report MESSAGE_TABLE;
      conf_time DATE := SYSDATE;
   BEGIN
      BEGIN
         SELECT global_name INTO local_node FROM global_name;
      EXCEPTION WHEN others THEN local_node := '?';
      END;
      conf_report(1) := 'UNIQUENESS CONFLICT DETECTED IN EMPLOYEES ON ' ||
         TO_CHAR(conf_time, 'MM-DD-YYYY HH24:MI:SS');
      conf_report(2) := ' AT NODE ' || local_node;
      conf_report(3) := 'ATTEMPTING TO RESOLVE CONFLICT USING' ||
         ' APPEND SITE NAME METHOD';
      conf_report(4) := 'EMAIL: ' || email;
      conf_report(5) := NULL;
      report_conflict(conf_report,5,conf_time,'employees','hr','UNIQUE');
      discard_new_values := FALSE;
      RETURN FALSE;
   END emp_unique_violation;
END notify;
/

/*

Step 6   Connect as the replication administrator.

*/
CONNECT repadmin@orc1.example.com

/*

Step 7   Replicate the package you created in Step 5 to all of the master sites in your replication environment.

This step ensures that the notification facility is available at all master sites.

*/

BEGIN
   DBMS_REPCAT.CREATE_MASTER_REPOBJECT (
      gname => 'hr_repg',
      type =>  'PACKAGE',
      oname => 'notify',
      sname => 'hr');
END;
/

BEGIN
   DBMS_REPCAT.CREATE_MASTER_REPOBJECT (
      gname => 'hr_repg',
      type =>  'PACKAGE BODY',
      oname => 'notify',
      sname => 'hr');
END;
/

/*

Step 8   Add the notification facility as one of your conflict resolution methods.

Add it even though it only notifies of a conflict. The following example demonstrates adding the notification facility as a USER FUNCTION.

*/

BEGIN
   DBMS_REPCAT.ADD_UPDATE_RESOLUTION (
      sname => 'hr', 
      oname => 'employees', 
      constraint_name => 'emp_email_uk',
      sequence_no => 1, 
      method => 'USER FUNCTION',
      comment => 'Notify DBA',
      parameter_column_name => 'email',
      function_name => 'hr.notify.emp_unique_violation'); 
END;
/

/*

Step 9   Add the actual conflict resolution method to your table.

The following example demonstrates adding the APPEND SITE NAME uniqueness conflict resolution method to your replicated table.

*/

BEGIN
   DBMS_REPCAT.ADD_UPDATE_RESOLUTION (
      sname => 'hr',
      oname => 'employees',
      constraint_name => 'emp_email_uk',
      sequence_no => 2,
      method => 'APPEND SITE NAME',
      parameter_column_name => 'email');
END;
/

/*

Step 10   Regenerate replication support for the table that received the conflict resolution methods.

*/
BEGIN 
    DBMS_REPCAT.GENERATE_REPLICATION_SUPPORT (
      sname => 'hr',
      oname => 'employees', 
      type => 'TABLE',
      min_communication => TRUE); 
END;
/

/*

Step 11   Resume replication activity.

*/
BEGIN
   DBMS_REPCAT.RESUME_MASTER_ACTIVITY (
      gname => 'hr_repg');
END;
/

SET ECHO OFF

SPOOL OFF

/************************* END OF SCRIPT **********************************/

Creating Conflict Avoidance Methods for Delete Conflicts

Unlike update conflicts, where there are two values to compare, simply deleting a row makes the update conflict resolution methods described in the previous section ineffective because only one value would exist.

The best way to deal with deleting rows in a replication environment is to avoid the conflict by marking a row for deletion and periodically purging the table of all marked records. Because you are not physically removing this row, your data can converge at all master sites if a conflict arises because you still have two values to compare, assuming that no other errors have occurred. After you are sure that your data has converged, you can purge marked rows using a replicated purge procedure.

When developing the front-end application for your database, you probably want to filter out the rows that have been marked for deletion, because doing so makes it appear to your users as though the row was physically deleted. Simply exclude the rows that have been marked for deletion in the SELECT statement for your data set.

For example, a select statement for a current employee listing might be similar to the following:

SELECT * FROM hr.locations WHERE remove_date IS NULL;

This section describes how to prepare your replicated table to avoid delete conflicts. You also learn how to use procedural replication to purge those records that have been marked for deletion.

Complete the following steps to create a conflict avoidance method for delete conflicts.


Note:

If you are viewing this document online, then you can copy the text from the "BEGINNING OF SCRIPT" line after this note to the "END OF SCRIPT" line into a text editor and then edit the text to create a script for your environment.

/************************* BEGINNING OF SCRIPT ******************************

Step 1   Connect as the replication administrator at the master definition site.

*/
SET ECHO ON

SPOOL delete_conflictres.out

CONNECT repadmin@orc1.example.com

/*

Step 2   Quiesce the master group that contains the table to which you want to apply the conflict resolution method.

*/
BEGIN
   DBMS_REPCAT.SUSPEND_MASTER_ACTIVITY (
      gname => 'hr_repg');
END;
/

/*

Step 3   Add a column to the replicated table that stores the mark for deleted records.

It is advisable to use a time stamp to mark your records for deletion (time stamp reflects when the record was marked for deletion). Because you are using a time stamp, the new column can be a DATE data type. Use the DBMS_REPCAT.ALTER_MASTER_REPOBJECT procedure to add the remove_date column to your existing replicated table.

*/

BEGIN
   DBMS_REPCAT.ALTER_MASTER_REPOBJECT (
      sname => 'hr',
      oname => 'locations',
      type => 'TABLE',
      ddl_text => 'ALTER TABLE hr.locations ADD (remove_date DATE)');
END;
/

/*

Step 4   Regenerate replication support for the altered table.

*/
BEGIN 
    DBMS_REPCAT.GENERATE_REPLICATION_SUPPORT (
      sname => 'hr',
      oname => 'locations', 
      type => 'TABLE',
      min_communication => TRUE); 
END;
/

/*

Step 5   Create a package that is replicated to all of the master sites in your replication environment.

This package purges all marked records from the specified table.

*/

BEGIN
   DBMS_REPCAT.CREATE_MASTER_REPOBJECT (
      gname => 'hr_repg',
      type => 'PACKAGE',
      oname => 'purge',
      sname => 'hr',
      ddl_text => 'CREATE OR REPLACE PACKAGE hr.purge AS
                      PROCEDURE remove_locations(purge_date DATE);
                   END;');
END;
/

BEGIN
   DBMS_REPCAT.CREATE_MASTER_REPOBJECT (
      gname => 'hr_repg',
      type => 'PACKAGE BODY',
      oname => 'purge',
      sname => 'hr',
      ddl_text => 'CREATE OR REPLACE PACKAGE BODY hr.purge AS
                      PROCEDURE remove_locations(purge_date IN DATE) IS
                      BEGIN
                         DBMS_REPUTIL.REPLICATION_OFF;
                         LOCK TABLE hr.locations IN EXCLUSIVE MODE;
                         DELETE hr.locations WHERE remove_date IS NOT NULL 
                            AND remove_date < purge_date;
                         DBMS_REPUTIL.REPLICATION_ON;
                      EXCEPTION WHEN others THEN
                         DBMS_REPUTIL.REPLICATION_ON;
                      END;
                   END;');
END;
/

/*

Step 6   Generate replication support for each package and package body.

After generating replication support, a synonym is created for you and added to your master group as a replicated object. This synonym is labeled as defer_purge.remove_locations.

*/

BEGIN 
    DBMS_REPCAT.GENERATE_REPLICATION_SUPPORT (
      sname => 'hr',
      oname => 'purge', 
      type => 'PACKAGE',
      min_communication => TRUE); 
END;
/

BEGIN 
    DBMS_REPCAT.GENERATE_REPLICATION_SUPPORT (
      sname => 'hr',
      oname => 'purge', 
      type => 'PACKAGE BODY',
      min_communication => TRUE); 
END;
/

/*

Step 7   In a separate terminal window, manually push any administrative requests at all other master sites.

You might need to execute the DO_DEFERRED_REPCAT_ADMIN procedure in the DBMS_REPCAT package several times, because some administrative operations have multiple steps. The following is an example:

*/

BEGIN
   DBMS_REPCAT.DO_DEFERRED_REPCAT_ADMIN (
      gname => 'hr_repg',
      all_sites => FALSE);
END;
/

*/

PAUSE Press <RETURN> to continue when you have verified that there are no 
pending administrative requests in the DBA_REPCATLOG data dictionary view.

/*

Step 8   Resume replication activity.

*/
BEGIN
   DBMS_REPCAT.RESUME_MASTER_ACTIVITY (
      gname => 'hr_repg');
END;
/

SET ECHO OFF

SPOOL OFF

/************************* END OF SCRIPT **********************************/

Using Dynamic Ownership Conflict Avoidance

This section describes a more advanced method of designing your applications to avoid conflicts. This method, known as token passing, is similar to the workflow method described in the following sections. Although this section describes how to use this method to control the ownership of an entire row, you can use a modified form of this method to control ownership of the individual column groups within a row.

Both workflow and token passing allow dynamic ownership of data. With dynamic ownership, only one site at a time is allowed to update a row, but ownership of the row can be passed from site to site. Both workflow and token passing use the value of one or more "identifier" columns to determine who is currently allowed to update the row.

Workflow

With workflow partitioning, you can think of data ownership as being "pushed" from site to site. Only the current owner of the row is allowed to push the ownership of the row to another site, by changing the value of the "identifier" columns.

Take the simple example of separate sites for ordering, shipping, and billing. Here, the identifier columns are used to indicate the status of an order. The status determines which site can update the row. After a user at the ordering site has entered the order, the user updates the status of this row to ship. Users at the ordering site are no longer allowed to modify this row — ownership has been pushed to the shipping site.

After shipping the order, the user at the shipping site updates the status of this row to bill, thus pushing ownership to the billing site, and so on.

To successfully avoid conflicts, applications implementing dynamic data ownership must ensure that the following conditions are met:

  • Only the owner of the row can update the row.

  • The row is never owned by more than one site.

  • Ordering conflicts can be successfully resolved at all sites.

With workflow partitioning, only the current owner of the row can push the ownership of the row to the next site by updating the "identifier" columns. No site is given ownership unless another site has given up ownership; thus ensuring there is never more than one owner.

Because the flow of work is ordered, ordering conflicts can be resolved by applying the change from the site that occurs latest in the flow of work. Any ordering conflicts can be resolved using a form of the priority conflict resolution method, where the priority value increases with each step in the work flow process. The priority conflict resolution method successfully converges for more than one master site as long as the priority value is always increasing.

Token Passing

Token passing uses a more generalized approach to meeting these criteria. To implement token passing, instead of the "identifier" columns, your replicated tables must have owner and epoch columns. The owner column stores the global database name of the site currently believed to own the row.

Once you have designed a token passing mechanism, you can use it to implement a variety of forms of dynamic partitioning of data ownership, including workflow.

You should design your application to implement token passing for you automatically. You should not allow the owner or epoch columns to be updated outside this application.

Whenever you attempt to update a row, your application should:

  1. Locate the current owner of the row.

  2. Establish ownership of the row.

  3. Lock the row to prevent updates while ownership is changing.

  4. Perform the update.

Oracle releases the lock when you commit your transaction.

For example, Figure 6-1 illustrates how ownership of employee 100 passes from the acct_sf database to the acct_ny database.

Figure 6-1 Grabbing the Token

Description of Figure 6-1 follows

Locating the Owner of a Row

To obtain ownership, the <"Ncode>acct_ny database uses a simple recursive algorithm to locate the owner of the row. The sample code for this algorithm is shown as follows:

-- Sample code for locating the token owner.
-- This is for a table TABLE_NAME with primary key PK.
-- Initial call should initialize loc_epoch to 0 and loc_owner
-- to the local global name.
get_owner(PK IN primary_key_type, loc_epoch IN OUT NUMBER, 
          loc_owner IN OUT VARCHAR2)
{
  -- use dynamic SQL (dbms_sql) to perform a select similar to
  -- the following:
  SELECT owner, epoch into rmt_owner, rmt_epoch
     FROM TABLE_NAME@loc_owner
     WHERE primary_key = PK FOR UPDATE;
  IF rmt_owner = loc_owner AND rmt_epoch >= loc_epoch THEN
   loc_owner := rmt_owner;
   loc_epoch := rmt_epoch;
   RETURN;
  ELSIF rmt_epoch >= loc_epoch THEN 
   get_owner(PK, rmt_epoch, rmt_owner);
   loc_owner := rmt_owner;
   loc_epoch := rmt_epoch;
   RETURN;
  ELSE
   raise_application_error(-20000, 'No owner for row');
  END IF;}

Obtaining Ownership

After locating the owner of the row, the acct_ny site gets ownership from the acct_sf site by completing the following steps:

  1. Lock the row at the sf site to prevent any changes from occurring while ownership is being exchanged.

    This operation ensures that only one site considers itself to be the owner at all times. The update at the sf site should not be replicated using DBMS_REPUTIL.REPLICATION_OFF. The replicated change of ownership at the ny site in Step 4 will ultimately be propagated to all other sites in the replication environment, including the sf site, where it will have no effect.

  2. Synchronously update the owner information at both the sf and ny sites.

  3. Update the row information at the new owner site, ny, with the information from the current owner site, sf.

    This data is guaranteed to be the most recent. This time, the change at the ny site should not be replicated. Any queued changes to this data at the sf site are propagated to all other sites in the usual manner. When the sf change is propagated to ny, it is ignored because of the values of the epoch numbers, as described in the next bullet point.

  4. Update the epoch number at the new owner site to be one greater than the value at the previous site.

    Perform this update at the new owner only, and then asynchronously propagate this update to the other master sites. Incrementing the epoch number at the new owner site prevents ordering conflicts.

    When the sf changes (that were in the deferred queue in Step 2 preceding) are ultimately propagated to the ny site, the ny site ignores them because they have a lower epoch number than the epoch number at the ny site for the same data.

    As another example, suppose the hq site received the sf changes after receiving the ny changes, the hq site would ignore the sf changes because the changes applied from the ny site would have the greater epoch number.

Applying the Change

You should design your application to implement this method of token passing for you automatically whenever you perform an update. You should not allow the owner or epoch columns to be updated outside this application. The lock that you grab when you change ownership is released when you apply your actual update. The changed information, along with the updated owner and epoch information, are asynchronously propagated to the other sites in the usual manner.

Auditing Successful Conflict Resolution

Whenever Oracle detects and successfully resolves an update, delete, or uniqueness conflict, you can view information about what method was used to resolve the conflict by querying the ALL_REPRESOLUTION_STATISTICS data dictionary view. This view is updated only if you have enabled conflict resolution statistics gathering for the table involved in the conflict.


See Also:

The ALL_REPRESOLUTION_STATISTICS view for more information

Collecting Conflict Resolution Statistics

Use the REGISTER_STATISTICS procedure in the DBMS_REPCAT package to collect information about the successful resolution of update, delete, and uniqueness conflicts for a table. The following example gathers statistics for the employees table in the hr schema:

BEGIN
    DBMS_REPCAT.REGISTER_STATISTICS (
      sname => 'hr',
      oname => 'employees');
END;
/

Viewing Conflict Resolution Statistics

After calling REGISTER_STATISTICS for a table, each conflict that is successfully resolved for that table is logged in the ALL_REPRESOLUTION_STATISTICS data dictionary view. Information about unresolved conflicts is always logged in the DEFERROR view, whether the object is registered or not.


See Also:

The ALL_REPRESOLUTION_STATISTICS view and the DEFERROR view for more information

Canceling Conflict Resolution Statistics

Use the CANCEL_STATISTICS procedure in the DBMS_REPCAT package if you no longer want to collect information about the successful resolution of update, delete, and uniqueness conflicts for a table. The following example cancels statistics gathering on the employees table in the hr schema:

BEGIN
    DBMS_REPCAT.CANCEL_STATISTICS (
      sname => 'hr',
      oname => 'employees');
END;
/

Clearing Statistics Information

If you registered a table to log information about the successful resolution of update, delete, and uniqueness conflicts, then you can remove this information from the DBA_REPRESOLUTION_STATISTICS data dictionary view by calling the PURGE_STATISTICS procedure in the DBMS_REPCAT package.

The following example purges the statistics gathered about conflicts resolved due to inserts, updates, and deletes on the employees table between January 1 and March 31:

BEGIN
    DBMS_REPCAT.PURGE_STATISTICS (
      sname  => 'hr', 
      oname  => 'employees', 
      start_date => '01-JAN-2001',
      end_date => '31-MAR-2001');
END;
/
PKH""PKfUIOEBPS/rarrcatadminpac.htmyR DBMS_REPCAT_ADMIN

20 DBMS_REPCAT_ADMIN

DBMS_REPCAT_ADMIN enables you to create users with the privileges needed by the symmetric replication facility.

This chapter contains this topic:


Summary of DBMS_REPCAT_ADMIN Subprograms

Table 20-1 DBMS_REPCAT_ADMIN Package Subprograms

SubprogramDescription

"GRANT_ADMIN_ANY_SCHEMA Procedure"


Grants the necessary privileges to the replication administrator to administer any replication group at the current site.

"GRANT_ADMIN_SCHEMA Procedure"


Grants the necessary privileges to the replication administrator to administer a schema at the current site.

"REGISTER_USER_REPGROUP Procedure"


Assigns proxy materialized view administrator or receiver privileges at the master site or master materialized view site for use with remote sites.

"REVOKE_ADMIN_ANY_SCHEMA Procedure"


Revokes the privileges and roles from the replication administrator that were granted by GRANT_ADMIN_ANY_SCHEMA.

"REVOKE_ADMIN_SCHEMA Procedure"


Revokes the privileges and roles from the replication administrator that were granted by GRANT_ADMIN_SCHEMA.

"UNREGISTER_USER_REPGROUP Procedure"


Revokes the privileges and roles from the proxy materialized view administrator or receiver that were granted by the REGISTER_USER_REPGROUP procedure.



GRANT_ADMIN_ANY_SCHEMA Procedure

This procedure grants the necessary privileges to the replication administrator to administer any replication groups at the current site.

Syntax

DBMS_REPCAT_ADMIN.GRANT_ADMIN_ANY_SCHEMA (
   username  IN   VARCHAR2);

Parameters

Table 20-2 GRANT_ADMIN_ANY_SCHEMA Procedure Parameters

ParameterDescription
username

Name of the replication administrator to whom you want to grant the necessary privileges and roles to administer any replication groups at the current site.


Exceptions

Table 20-3 GRANT_ADMIN_ANY_REPGROUP Procedure Exceptions

ExceptionDescription
ORA-01917

User does not exist.



GRANT_ADMIN_SCHEMA Procedure

This procedure grants the necessary privileges to the replication administrator to administer a schema at the current site. This procedure is most useful if your replication group does not span schemas.

The privileges granted by this procedure are more limited than the privileges granted by GRANT_ADMIN_ANY_SCHEMA. However, a replication administrator who is granted privileges with GRANT_ADMIN_SCHEMA still can perform certain administrative activities on replication groups owned by other replication administrators. For example, a replication administrator who is granted privileges with GRANT_ADMIN_SCHEMA can drop replication groups and replication objects owned by other replication administrators.


Note:

If you want to restrict different users to different replicated groups, then you can write a wrapper package on top of the DBMS_REPCAT package and grant EXECUTE privilege on the new package, but not on the DBMS_REPCAT package, to each user. The new package performs security checks. For example, the new package can dictate that hr can administer the hr_rg replication group, but no other replication group, and that hr only can administer objects in the hr schema. If the security checks are passed, then the new package calls a subprogram in the DBMS_REPCAT package. If the security checks are not passed, then the new package could log the failure, commit, and raise an exception.

Syntax

DBMS_REPCAT_ADMIN.GRANT_ADMIN_SCHEMA (
   username IN VARCHAR2);

Parameters

Table 20-4 GRANT_ADMIN_REPSCHEMA Procedure Parameters

ParameterDescription
username

Name of the replication administrator. This user is then granted the necessary privileges and roles to administer the schema of the same name within a replication group at the current site.


Exceptions

Table 20-5 GRANT_ADMIN_REPSCHEMA Procedure Exceptions

ExceptionDescription
ORA-01917

User does not exist.



REGISTER_USER_REPGROUP Procedure

This procedure assigns proxy materialized view administrator or receiver privileges at the master site or master materialized view site for use with remote sites. This procedure grants only the necessary privileges to the proxy materialized view administrator or receiver. It does not grant the powerful privileges granted by the GRANT_ADMIN_SCHEMA or GRANT_ADMIN_ANY_SCHEMA procedures.


See Also:

Appendix A, "Security Options" for more information about trusted versus untrusted security models

Syntax

DBMS_REPCAT_ADMIN.REGISTER_USER_REPGROUP (
   username         IN   VARCHAR2,
   privilege_type   IN   VARCHAR2,
   {list_of_gnames  IN   VARCHAR2 |
   table_of_gnames  IN   DBMS_UTILITY.NAME_ARRAY)};

Note:

This procedure is overloaded. The list_of_gnames and table_of_gnames parameters are mutually exclusive.

Parameters

Table 20-6 REGISTER_USER_REPGROUP Procedure Parameters

ParameterDescription
username

Name of the user to whom you are giving either proxy materialized view administrator or receiver privileges.

privilege_type

Specifies the privilege type you are assigning. Use the following values for to define your privilege_type:

  • receiver for receiver privileges

  • proxy_snapadmin for proxy materialized view administration privileges

list_of_gnames

Comma-delimited list of replication groups you want a user registered for receiver privileges. There must be no spaces between entries in the list. If you set list_of_gnames to NULL, then the user is registered for all replication groups, even replication groups that are not yet known when this procedure is called. You must use named notation in order to set list_of_gnames to NULL. An invalid replication group in the list causes registration to fail for the entire list.

table_of_gnames

PL/SQL index-by table of replication groups you want a user registered for receiver privileges. The PL/SQL index-by table must be of type DBMS_UTILITY.NAME_ARRAY. This table is 1-based (the positions start at 1 and increment by 1). Use the single value NULL to register the user for all replication groups. An invalid replication group in the table causes registration to fail for the entire table.


Exceptions

Table 20-7 REGISTER_USER_REPGROUP Procedure Exceptions

ExceptionDescription
nonmaster

Specified replication group does not exist or the invocation database is not a master site or master materialized view site.

ORA-01917

User does not exist.

typefailure

Incorrect privilege type was specified.



REVOKE_ADMIN_ANY_SCHEMA Procedure

This procedure revokes the privileges and roles from the replication administrator that were granted by GRANT_ADMIN_ANY_SCHEMA.


Note:

Identical privileges and roles that were granted independently of GRANT_ADMIN_ANY_SCHEMA are also revoked.

Syntax

DBMS_REPCAT_ADMIN.REVOKE_ADMIN_ANY_SCHEMA (
   username IN VARCHAR2);

Parameters

Table 20-8 REVOKE_ADMIN_ANY_SCHEMA Procedure Parameters

ParameterDescription
username

Name of the replication administrator whose privileges you want to revoke.


Exceptions

Table 20-9 REVOKE_ADMIN_ANY_SCHEMA Procedure Exceptions

ExceptionDescription
ORA-01917

User does not exist.



REVOKE_ADMIN_SCHEMA Procedure

This procedure revokes the privileges and roles from the replication administrator that were granted by GRANT_ADMIN_SCHEMA.


Note:

Identical privileges and roles that were granted independently of GRANT_ADMIN_SCHEMA are also revoked.

Syntax

DBMS_REPCAT_ADMIN.REVOKE_ADMIN_SCHEMA (
   username IN VARCHAR2);

Parameters

Table 20-10 REVOKE_ADMIN_SCHEMA Procedure Parameters

ParameterDescription
username

Name of the replication administrator whose privileges you want to revoke.


Exceptions

Table 20-11 REVOKE_ADMIN_SCHEMA Procedure Exceptions

ExceptionDescription
ORA-01917

User does not exist.



UNREGISTER_USER_REPGROUP Procedure

This procedure revokes the privileges and roles from the proxy materialized view administrator or receiver that were granted by the REGISTER_USER_REPGROUP procedure.

Syntax

DBMS_REPCAT_ADMIN.UNREGISTER_USER_REPGROUP (
   username         IN   VARCHAR2,
   privilege_type   IN   VARCHAR2,
   {list_of_gnames  IN   VARCHAR2 |
   table_of_gnames  IN   DBMS_UTILITY.NAME_ARRAY)};

Note:

This procedure is overloaded. The list_of_gnames and table_of_gnames parameters are mutually exclusive.

Parameters

Table 20-12 UNREGISTER_USER_REPGROUP Procedure Parameters

ParameterDescription
username

Name of the user you are unregistering.

privilege_type

Specifies the privilege type you are revoking. Use the following values for to define your privilege_type:

  • receiver for receiver privileges

  • proxy_snapadmin for proxy materialized view administration privileges

list_of_gnames

Comma-delimited list of replication groups you want a user unregistered for receiver privileges. There must be no spaces between entries in the list. If you set list_of_gnames to NULL, then the user is unregistered for all replication groups registered. You must use named notation in order to set list_of_gnames to NULL. An invalid replication group in the list causes unregistration to fail for the entire list.

table_of_gnames

PL/SQL index-by table of replication groups you want a user unregistered for receiver privileges. The PL/SQL index-by table must be of type DBMS_UTILITY.NAME_ARRAY. This table is 1-based (the positions start at 1 and increment by 1). Use the single value NULL to unregister the user for all replication groups registered. An invalid replication group in the table causes unregistration to fail for the entire table.


Exceptions

Table 20-13 UNREGISTER_USER_REPGROUP Procedure Exceptions

ExceptionDescription
nonmaster

Specified replication group does not exist or the invocation database is not a master site or master materialized view site.

ORA-01917

User does not exist.

typefailure

Incorrect privilege type was specified.


PKkyyPKfUIOEBPS/cover.htm Cover

Oracle Corporation

PK;PKfUIOEBPS/rarreputilpac.htm_6 DBMS_REPUTIL

22 DBMS_REPUTIL

DBMS_REPUTIL contains subprograms to generate shadow tables, triggers, and packages for table replication, as well as subprograms to generate wrappers for replication of standalone procedure invocations and packaged procedure invocations. This package is referenced only by the generated code.

This chapter contains this topic:


Summary of DBMS_REPUTIL Subprograms

Table 22-1 DBMS_REPUTIL Package Subprograms

SubprogramDescription

"REPLICATION_OFF Procedure"


Modifies tables without replicating the modifications to any other sites in the replication environment, or disables row-level replication when using procedural replication.

"REPLICATION_ON Procedure"


Reenables replication of changes after replication has been temporarily suspended.

"REPLICATION_IS_ON Function"


Determines whether or not replication is running.

FROM_REMOTE Function


Returns TRUE at the beginning of procedures in the internal replication packages, and returns FALSE at the end of these procedures.

"GLOBAL_NAME Function"


Determines the global database name of the local database (the global name is the returned value).

"MAKE_INTERNAL_PKG Procedure"


Synchronizes internal packages and tables in the replication catalog.

Note: Do not execute this procedure unless directed to do so by Oracle Support Services.

"SYNC_UP_REP Procedure"


Synchronizes internal triggers and tables/materialized views in the replication catalog.

Note: Do not execute this procedure unless directed to do so by Oracle Support Services.



REPLICATION_OFF Procedure

This procedure enables you to modify tables without replicating the modifications to any other sites in the replication environment. It also disables row-level replication when using procedural replication. In general, you should suspend replication activity for all master groups in your replication environment before setting this flag.

Syntax

DBMS_REPUTIL.REPLICATION_OFF();

Parameters

None


REPLICATION_ON Procedure

This procedure reenables replication of changes after replication has been temporarily suspended.

Syntax

DBMS_REPUTIL.REPLICATION_ON();

Parameters

None


REPLICATION_IS_ON Function

This function determines whether or not replication is running. A returned value of TRUE indicates that the generated replication triggers are enabled. A return value of FALSE indicates that replication is disabled at the current site for the replication group.

The returning value of this function is set by calling the REPLICATION_ON or REPLICATION_OFF procedures in the DBMS_REPUTIL package.

Syntax

DBMS_REPUTIL.REPLICATION_IS_ON()
  return BOOLEAN;

Parameters

None


FROM_REMOTE Function

This function returns TRUE at the beginning of procedures in the internal replication packages, and returns FALSE at the end of these procedures. You might need to check this function if you have any triggers that could be fired as the result of an update by an internal package.

Syntax

DBMS_REPUTIL.FROM_REMOTE()
   return BOOLEAN;

Parameters

None


GLOBAL_NAME Function

This function determines the global database name of the local database (the global name is the returned value).

Syntax

DBMS_REPUTIL.GLOBAL_NAME()
   return VARCHAR2;

Parameters

None


MAKE_INTERNAL_PKG Procedure

This procedure synchronizes the existence of an internal package with a table or materialized view in the replication catalog. If the table has replication support, then execute this procedure to create the internal package. If replication support does not exist, then this procedure destroys any related internal package. This procedure does not accept the storage table of a nested table.


Caution:

Do not execute this procedure unless directed to do so by Oracle Support Services.

Syntax

DBMS_REPUTIL.MAKE_INTERNAL_PKG (
   canon_sname    IN   VARCHAR2,
   canon_oname    IN   VARCHAR2);

Parameters

Table 22-2 MAKE_INTERNAL_PKG Procedure Parameters

ParameterDescription
canon_sname

Schema containing the table to be synchronized.

This parameter value must be canonically defined (capitalization must match object and must not be enclosed in double quotes).

canon_oname

Name of the table to be synchronized.

This parameter value must be canonically defined (capitalization must match object and must not be enclosed in double quotes).



SYNC_UP_REP Procedure

This procedure synchronizes the existence of an internal trigger with a table or materialized view in the replication catalog. If the table or materialized view has replication support, then execute this procedure to create the internal replication trigger. If replication support does not exist, then this procedure destroys any related internal trigger. This procedure does not accept the storage table of a nested table.


Caution:

Do not execute this procedure unless directed to do so by Oracle Support Services.

Syntax

DBMS_REPUTIL.SYNC_UP_REP (
   canon_sname    IN   VARCHAR2,
   canon_oname    IN   VARCHAR2);

Parameters

Table 22-3 SYNC_UP_REP Procedure Parameters

ParameterDescription
canon_sname

Schema containing the table or materialized view to be synchronized.

This parameter value must be canonically defined (capitalization must match object and must not be enclosed in double quotes).

canon_oname

Name of the table or materialized view to be synchronized.

This parameter value must be canonically defined (capitalization must match object and must not be enclosed in double quotes).


PKPd6_6PKfUI OEBPS/toc.ncxR Oracle® Database Advanced Replication Management API Reference, 11g Release 1 (11.1) Cover Title and Copyright Information Contents Preface Part I Configuring Your Replication Environment 1 Overview of Advanced Replication 2 Configuring the Replication Sites 3 Creating a Master Group 4 Creating a Deployment Template 5 Creating a Materialized View Group 6 Configuring Conflict Resolution Part II Managing and Monitoring Your Replication Environment 7 Managing a Master Replication Environment 8 Managing a Materialized View Replication Environment 9 Managing Replication Objects and Queues 10 Monitoring a Replication Environment Part III Replication Management API Packages Reference 11 Introduction to the Replication Management API Reference 12 DBMS_DEFER 13 DBMS_DEFER_QUERY 14 DBMS_DEFER_SYS 15 DBMS_OFFLINE_OG 16 DBMS_RECTIFIER_DIFF 17 DBMS_REFRESH 18 DBMS_REPCAT 19 DBMS_REPCAT_INSTANTIATE 20 DBMS_REPCAT_ADMIN 21 DBMS_REPCAT_RGT 22 DBMS_REPUTIL Part IV Replication Data Dictionary Reference 23 Replication Catalog Views 24 Replication Dynamic Performance Views 25 Deferred Transaction Views 26 Materialized View and Refresh Group Views Part V Appendixes A Security Options B User-Defined Conflict Resolution Methods Index Copyright PKìRPKfUIOEBPS/rarmviewgroup.htmlu Creating a Materialized View Group

5 Creating a Materialized View Group

This chapter illustrates how to create a materialized view group at a remote materialized view replication site.

This chapter contains these topics:

Before you build materialized view environments, you must set up your master site, create a master group, and set up your intended materialized view sites. Also, if conflicts are possible at the master site due to activity at the materialized view sites you are creating, then configure conflict resolution for the master tables of the materialized views before you create the materialized view group.

Overview of Creating a Materialized View Group

After setting up your materialized view site and creating at least one master group, you are ready to create a materialized view group at a remote materialized view site. Figure 5-1 illustrates the process of creating a materialized view group.


See Also:

Chapter 2, "Configuring the Replication Sites" for information about setting up a materialized view site, and see Chapter 3, "Creating a Master Group" for information about creating a master group.

Figure 5-1 Creating a Materialized View Group

Description of Figure 5-1 follows

Creating a Materialized View Group

This chapter guides you through the process of creating two materialized view groups at two different materialized view sites: mv1.example.com and mv2.example.com:

Therefore, the examples in this chapter illustrate how to create a multitier materialized view environment, where one or more materialized views are based on other materialized views.

Complete the following steps to create these two materialized view groups.


Note:

If you are viewing this document online, then you can copy the text from the "BEGINNING OF SCRIPT" line after this note to the "END OF SCRIPT" line into a text editor and then edit the text to create a script for your environment.

/************************* BEGINNING OF SCRIPT ******************************

Creating the Materialized View Group at mv1.example.com

Complete the following steps to create the hr_repg materialized view group at the mv1.example.com materialized view site. This materialized view group is based on the hr_repg master group at the orc1.example.com master site.


Step 1   Create materialized view logs at the master site.

If you want one of your master sites to support a materialized view site, then you must create materialized view logs for each master table that is replicated to a materialized view. Recall from Figure 2-1 that orc1.example.com serves as the target master site for the mv1.example.com materialized view site. The required materialized view logs must be created at orc1.example.com.

*/

SET ECHO ON

SPOOL create_mv_group.out

CONNECT hr@orc1.example.com

CREATE MATERIALIZED VIEW LOG ON hr.countries;
CREATE MATERIALIZED VIEW LOG ON hr.departments;
CREATE MATERIALIZED VIEW LOG ON hr.employees;
CREATE MATERIALIZED VIEW LOG ON hr.jobs;
CREATE MATERIALIZED VIEW LOG ON hr.job_history;
CREATE MATERIALIZED VIEW LOG ON hr.locations;
CREATE MATERIALIZED VIEW LOG ON hr.regions;

/*

See Also:

The CREATE MATERIALIZED VIEW LOG statement in the Oracle Database SQL Language Reference for detailed information about this SQL statement

Step 2   If they do not already exist, then create the replicated schema and its database link.

Before building your materialized view group, you must ensure that the replicated schema exists at the remote materialized view site and that the necessary database links have been created.

In this example, if the hr schema does not exist, then create the schema. If the hr schema already exists at the materialized view site, then grant any necessary privileges and go to the next task in this step.

*/

CONNECT system@mv1.example.com

CREATE TABLESPACE demo_mv1
 DATAFILE 'demo_mv1.dbf' SIZE 10M AUTOEXTEND ON
 EXTENT MANAGEMENT LOCAL AUTOALLOCATE;

CREATE TEMPORARY TABLESPACE temp_mv1
 TEMPFILE 'temp_mv1.dbf' SIZE 5M AUTOEXTEND ON;

ACCEPT password PROMPT 'Enter password for user: ' HIDE

CREATE USER hr IDENTIFIED BY &password;

ALTER USER hr DEFAULT TABLESPACE demo_mv1
              QUOTA UNLIMITED ON demo_mv1;

ALTER USER hr TEMPORARY TABLESPACE temp_mv1;

GRANT 
  CREATE SESSION, 
  CREATE TABLE, 
  CREATE PROCEDURE, 
  CREATE SEQUENCE, 
  CREATE TRIGGER, 
  CREATE VIEW, 
  CREATE SYNONYM, 
  ALTER SESSION,
  CREATE MATERIALIZED VIEW,
  ALTER ANY MATERIALIZED VIEW,
  CREATE DATABASE LINK
 TO hr;

/*


If it does not already exist, then create the database link for the replicated schema.

Before building your materialized view group, you must ensure that the necessary database links exist for the replicated schema. The owner of the materialized views needs a database link pointing to the proxy_refresher that was created when the master site was set up.

*/

CONNECT hr@mv1.example.com

CREATE DATABASE LINK orc1.example.com 
   CONNECT TO proxy_refresher IDENTIFIED BY &password;

/*

Step 3   Create the materialized view group.

The following procedures must be executed by the materialized view administrator at the remote materialized view site.

*/

CONNECT mviewadmin@mv1.example.com

/*

The master group that you specify in the gname parameter must match the name of the master group that you are replicating at the target master site.

*/

BEGIN
   DBMS_REPCAT.CREATE_MVIEW_REPGROUP (
      gname => 'hr_repg',
      master => 'orc1.example.com',
      propagation_mode => 'ASYNCHRONOUS');
END;
/

/*

Step 4   Create the refresh group.

All materialized views that are added to a particular refresh group are refreshed at the same time. This ensures transactional consistency between the related materialized views in the refresh group.

*/

BEGIN
   DBMS_REFRESH.MAKE (
      name => 'mviewadmin.hr_refg',
      list => '', 
      next_date => SYSDATE, 
      interval => 'SYSDATE + 1/24',
      implicit_destroy => FALSE, 
      rollback_seg => '',
      push_deferred_rpc => TRUE, 
      refresh_after_errors => FALSE);
END;
/

/*

Step 5   Add objects to the materialized view group.

Create the materialized views based on the master tables.

Whenever you create a materialized view, always specify the schema name of the table owner in the query for the materialized view. In the following examples, hr is specified as the owner of the table in each query.

*/

CREATE MATERIALIZED VIEW hr.countries_mv1 
  REFRESH FAST WITH PRIMARY KEY FOR UPDATE 
  AS SELECT * FROM hr.countries@orc1.example.com;

CREATE MATERIALIZED VIEW hr.departments_mv1 
  REFRESH FAST WITH PRIMARY KEY FOR UPDATE 
  AS SELECT * FROM hr.departments@orc1.example.com;

CREATE MATERIALIZED VIEW hr.employees_mv1 
  REFRESH FAST WITH PRIMARY KEY FOR UPDATE 
  AS SELECT * FROM hr.employees@orc1.example.com;

CREATE MATERIALIZED VIEW hr.jobs_mv1 
  REFRESH FAST WITH PRIMARY KEY FOR UPDATE 
  AS SELECT * FROM hr.jobs@orc1.example.com;

CREATE MATERIALIZED VIEW hr.job_history_mv1 
  REFRESH FAST WITH PRIMARY KEY FOR UPDATE 
  AS SELECT * FROM hr.job_history@orc1.example.com;

CREATE MATERIALIZED VIEW hr.locations_mv1 
  REFRESH FAST WITH PRIMARY KEY FOR UPDATE 
  AS SELECT * FROM hr.locations@orc1.example.com;

CREATE MATERIALIZED VIEW hr.regions_mv1 
  REFRESH FAST WITH PRIMARY KEY FOR UPDATE 
  AS SELECT * FROM hr.regions@orc1.example.com;

/*

Add the objects to the materialized view group.

*/

BEGIN
   DBMS_REPCAT.CREATE_MVIEW_REPOBJECT (
      gname => 'hr_repg',
      sname => 'hr',
      oname => 'countries_mv1',
      type => 'SNAPSHOT',
      min_communication => TRUE);
END;
/

BEGIN
   DBMS_REPCAT.CREATE_MVIEW_REPOBJECT (
      gname => 'hr_repg',
      sname => 'hr',
      oname => 'departments_mv1',
      type => 'SNAPSHOT',
      min_communication => TRUE);
END;
/

BEGIN
   DBMS_REPCAT.CREATE_MVIEW_REPOBJECT (
      gname => 'hr_repg',
      sname => 'hr',
      oname => 'employees_mv1',
      type => 'SNAPSHOT',
      min_communication => TRUE);
END;
/

BEGIN
   DBMS_REPCAT.CREATE_MVIEW_REPOBJECT (
      gname => 'hr_repg',
      sname => 'hr',
      oname => 'jobs_mv1',
      type => 'SNAPSHOT',
      min_communication => TRUE);
END;
/

BEGIN
   DBMS_REPCAT.CREATE_MVIEW_REPOBJECT (
      gname => 'hr_repg',
      sname => 'hr',
      oname => 'job_history_mv1',
      type => 'SNAPSHOT',
      min_communication => TRUE);
END;
/

BEGIN
   DBMS_REPCAT.CREATE_MVIEW_REPOBJECT (
      gname => 'hr_repg',
      sname => 'hr',
      oname => 'locations_mv1',
      type => 'SNAPSHOT',
      min_communication => TRUE);
END;
/

BEGIN
   DBMS_REPCAT.CREATE_MVIEW_REPOBJECT (
      gname => 'hr_repg',
      sname => 'hr',
      oname => 'regions_mv1',
      type => 'SNAPSHOT',
      min_communication => TRUE);
END;
/

/*

Step 6   Add objects to the refresh group.

All of the materialized view group objects that you add to the refresh group are refreshed at the same time to preserve referential integrity between related materialized views.

*/

BEGIN
   DBMS_REFRESH.ADD (
      name => 'mviewadmin.hr_refg',
      list => 'hr.countries_mv1',
      lax => TRUE);
END;
/

BEGIN
   DBMS_REFRESH.ADD (
      name => 'mviewadmin.hr_refg',
      list => 'hr.departments_mv1',
      lax => TRUE);
END;
/

BEGIN
   DBMS_REFRESH.ADD (
      name => 'mviewadmin.hr_refg',
      list => 'hr.employees_mv1',
      lax => TRUE);
END;
/

BEGIN
   DBMS_REFRESH.ADD (
      name => 'mviewadmin.hr_refg',
      list => 'hr.jobs_mv1',
      lax => TRUE);
END;
/

BEGIN
   DBMS_REFRESH.ADD (
      name => 'mviewadmin.hr_refg',
      list => 'hr.job_history_mv1',
      lax => TRUE);
END;
/

BEGIN
   DBMS_REFRESH.ADD (
      name => 'mviewadmin.hr_refg',
      list => 'hr.locations_mv1',
      lax => TRUE);
END;
/

BEGIN
   DBMS_REFRESH.ADD (
      name => 'mviewadmin.hr_refg',
      list => 'hr.regions_mv1',
      lax => TRUE);
END;
/

/*

Creating the Materialized View Group at mv2.example.com

Complete the following steps to create the hr_repg materialized view group at the mv2.example.com materialized view site. This materialized view group is based on the hr_repg materialized view group at the mv1.example.com materialized view site.


Step 1   Create materialized view logs at the master materialized view site.

If you want one of your master materialized view sites to support another materialized view site, then you must create materialized view logs for each materialized view that is replicated to another materialized view site. Recall from Figure 2-1 that mv1.example.com serves as the target master internalized view site for the mv2.example.com materialized view site. The required materialized view logs must be created at mv1.example.com.

*/

CONNECT hr@mv1.example.com

CREATE MATERIALIZED VIEW LOG ON hr.countries_mv1;
CREATE MATERIALIZED VIEW LOG ON hr.departments_mv1;
CREATE MATERIALIZED VIEW LOG ON hr.employees_mv1;
CREATE MATERIALIZED VIEW LOG ON hr.jobs_mv1;
CREATE MATERIALIZED VIEW LOG ON hr.job_history_mv1;
CREATE MATERIALIZED VIEW LOG ON hr.locations_mv1;
CREATE MATERIALIZED VIEW LOG ON hr.regions_mv1;

/*

See Also:

The CREATE MATERIALIZED VIEW LOG statement in the Oracle Database SQL Language Reference for detailed information about this SQL statement

Step 2   If they do not already exist, then create the replicated schema and its database link.

Before building your materialized view group, you must ensure that the replicated schema exists at the remote materialized view site and that the necessary database links have been created.

For this example, if the hr schema does not exist, then create the schema. If the hr schema already exists at the materialized view site, then go to the next task in this step.

*/

CONNECT system@mv2.example.com
CREATE TABLESPACE demo_mv2
 DATAFILE 'demo_mv2.dbf' SIZE 10M AUTOEXTEND ON
 EXTENT MANAGEMENT LOCAL AUTOALLOCATE;

CREATE TEMPORARY TABLESPACE temp_mv2
 TEMPFILE 'temp_mv2.dbf' SIZE 5M AUTOEXTEND ON;

ACCEPT password PROMPT 'Enter password for user: ' HIDE

CREATE USER hr IDENTIFIED BY &password;

ALTER USER hr DEFAULT TABLESPACE demo_mv2
              QUOTA UNLIMITED ON demo_mv2;

ALTER USER hr TEMPORARY TABLESPACE temp_mv2;

GRANT 
  CREATE SESSION, 
  CREATE TABLE, 
  CREATE PROCEDURE, 
  CREATE SEQUENCE, 
  CREATE TRIGGER, 
  CREATE VIEW, 
  CREATE SYNONYM, 
  ALTER SESSION,
  CREATE MATERIALIZED VIEW,
  ALTER ANY MATERIALIZED VIEW,
  CREATE DATABASE LINK
 TO hr;

/*

If it does not already exist, then create the database link for the replicated schema.

Before building your materialized view group, you must ensure that the necessary database links exist for the replicated schema. The owner of the materialized views needs a database link pointing to the proxy_refresher that was created when the master materialized view site was set up.

*/

CONNECT hr@mv2.example.com

CREATE DATABASE LINK mv1.example.com 
   CONNECT TO proxy_refresher IDENTIFIED BY &password;

/*

See Also:

Step 6 for more information about creating proxy master materialized view site users

Step 3   Create the materialized view group.

The following procedures must be executed by the materialized view administrator at the remote materialized view site.

*/

CONNECT mviewadmin@mv2.example.com

/*

The replication group that you specify in the gname parameter must match the name of the replication group that you are replicating at the target master materialized view site.

*/

BEGIN
   DBMS_REPCAT.CREATE_MVIEW_REPGROUP (
      gname => 'hr_repg',
      master => 'mv1.example.com',
      propagation_mode => 'ASYNCHRONOUS');
END;
/

/*

Step 4   Create the refresh group.

All materialized views that are added to a particular refresh group are refreshed at the same time. This ensures transactional consistency between the related materialized views in the refresh group.

*/

BEGIN
   DBMS_REFRESH.MAKE (
      name => 'mviewadmin.hr_refg',
      list => '', 
      next_date => SYSDATE, 
      interval => 'SYSDATE + 1/24',
      implicit_destroy => FALSE, 
      rollback_seg => '',
      push_deferred_rpc => TRUE, 
      refresh_after_errors => FALSE);
END;
/

/*

Step 5   Add objects to the materialized view group.

Create the materialized views based on the master materialized views.

Whenever you create a materialized view that is based on another materialized view, always specify the schema name of the materialized view owner in the query for the materialized view. In the following examples, hr is specified as the owner of the materialized view in each query.

*/

CREATE MATERIALIZED VIEW hr.countries_mv2 
  REFRESH FAST WITH PRIMARY KEY FOR UPDATE 
  AS SELECT * FROM hr.countries_mv1@mv1.example.com;

CREATE MATERIALIZED VIEW hr.departments_mv2 
  REFRESH FAST WITH PRIMARY KEY FOR UPDATE 
  AS SELECT * FROM hr.departments_mv1@mv1.example.com;

CREATE MATERIALIZED VIEW hr.employees_mv2 
  REFRESH FAST WITH PRIMARY KEY FOR UPDATE 
  AS SELECT * FROM hr.employees_mv1@mv1.example.com;

CREATE MATERIALIZED VIEW hr.jobs_mv2 
  REFRESH FAST WITH PRIMARY KEY FOR UPDATE 
  AS SELECT * FROM hr.jobs_mv1@mv1.example.com;

CREATE MATERIALIZED VIEW hr.job_history_mv2 
  REFRESH FAST WITH PRIMARY KEY FOR UPDATE 
  AS SELECT * FROM hr.job_history_mv1@mv1.example.com;

CREATE MATERIALIZED VIEW hr.locations_mv2 
  REFRESH FAST WITH PRIMARY KEY FOR UPDATE 
  AS SELECT * FROM hr.locations_mv1@mv1.example.com;

CREATE MATERIALIZED VIEW hr.regions_mv2 
  REFRESH FAST WITH PRIMARY KEY FOR UPDATE 
  AS SELECT * FROM hr.regions_mv1@mv1.example.com;

/*

Add the materialized views to the materialized view group.

*/

BEGIN
   DBMS_REPCAT.CREATE_MVIEW_REPOBJECT (
      gname => 'hr_repg',
      sname => 'hr',
      oname => 'countries_mv2',
      type => 'SNAPSHOT',
      min_communication => TRUE);
END;
/

BEGIN
   DBMS_REPCAT.CREATE_MVIEW_REPOBJECT (
      gname => 'hr_repg',
      sname => 'hr',
      oname => 'departments_mv2',
      type => 'SNAPSHOT',
      min_communication => TRUE);
END;
/

BEGIN
   DBMS_REPCAT.CREATE_MVIEW_REPOBJECT (
      gname => 'hr_repg',
      sname => 'hr',
      oname => 'employees_mv2',
      type => 'SNAPSHOT',
      min_communication => TRUE);
END;
/

BEGIN
   DBMS_REPCAT.CREATE_MVIEW_REPOBJECT (
      gname => 'hr_repg',
      sname => 'hr',
      oname => 'jobs_mv2',
      type => 'SNAPSHOT',
      min_communication => TRUE);
END;
/

BEGIN
   DBMS_REPCAT.CREATE_MVIEW_REPOBJECT (
      gname => 'hr_repg',
      sname => 'hr',
      oname => 'job_history_mv2',
      type => 'SNAPSHOT',
      min_communication => TRUE);
END;
/

BEGIN
   DBMS_REPCAT.CREATE_MVIEW_REPOBJECT (
      gname => 'hr_repg',
      sname => 'hr',
      oname => 'locations_mv2',
      type => 'SNAPSHOT',
      min_communication => TRUE);
END;
/

BEGIN
   DBMS_REPCAT.CREATE_MVIEW_REPOBJECT (
      gname => 'hr_repg',
      sname => 'hr',
      oname => 'regions_mv2',
      type => 'SNAPSHOT',
      min_communication => TRUE);
END;
/

/*

Step 6   Add objects to the refresh group.

All of the materialized view group objects that you add to the refresh group are refreshed at the same time to preserve referential integrity between related materialized views.

*/

BEGIN
   DBMS_REFRESH.ADD (
      name => 'mviewadmin.hr_refg',
      list => 'hr.countries_mv2',
      lax => TRUE);
END;
/

BEGIN
   DBMS_REFRESH.ADD (
      name => 'mviewadmin.hr_refg',
      list => 'hr.departments_mv2',
      lax => TRUE);
END;
/

BEGIN
   DBMS_REFRESH.ADD (
      name => 'mviewadmin.hr_refg',
      list => 'hr.employees_mv2',
      lax => TRUE);
END;
/

BEGIN
   DBMS_REFRESH.ADD (
      name => 'mviewadmin.hr_refg',
      list => 'hr.jobs_mv2',
      lax => TRUE);
END;
/

BEGIN
   DBMS_REFRESH.ADD (
      name => 'mviewadmin.hr_refg',
      list => 'hr.job_history_mv2',
      lax => TRUE);
END;
/

BEGIN
   DBMS_REFRESH.ADD (
      name => 'mviewadmin.hr_refg',
      list => 'hr.locations_mv2',
      lax => TRUE);
END;
/

BEGIN
   DBMS_REFRESH.ADD (
      name => 'mviewadmin.hr_refg',
      list => 'hr.regions_mv2',
      lax => TRUE);
END;
/

SET ECHO OFF

SPOOL OFF

/************************* END OF SCRIPT **********************************/
PK1llPKfUIOEBPS/rarpart1.htmQ Configuring Your Replication Environment

Part I

Configuring Your Replication Environment

Part I contains instructions for using the replication management API to set up both multimaster replication and materialized view replication. This part also contains instructions for configuring conflict resolution methods using the replication management API.

Part I contains the following chapters:

PKLPKfUIOEBPS/rardefsyspac.htm DBMS_DEFER_SYS

14 DBMS_DEFER_SYS

DBMS_DEFER_SYS procedures manage default replication node lists. This package is the system administrator interface to a replicated transactional deferred remote procedure call facility. Administrators and replication daemons can execute transactions queued for remote nodes using this facility, and administrators can control the nodes to which remote calls are destined.

This chapter contains this topic:


Summary of DBMS_DEFER_SYS Subprograms

Table 14-1 DBMS_DEFER_SYS Package Subprograms

SubprogramDescription

"ADD_DEFAULT_DEST Procedure"


Adds a destination database to the DEFDEFAULTDEST view.

"CLEAR_PROP_STATISTICS Procedure"


Clears the propagation statistics in the DEFSCHEDULE data dictionary view.

"DELETE_DEFAULT_DEST Procedure"


Removes a destination database from the DEFDEFAULTDEST view.

"DELETE_DEF_DESTINATION Procedure"


Removes a destination database from the DEFSCHEDULE view.

"DELETE_ERROR Procedure"


Deletes a transaction from the DEFERROR view.

"DELETE_TRAN Procedure"


Deletes a transaction from the DEFTRANDEST view.

"DISABLED Function"


Determines whether propagation of the deferred transaction queue from the current site to a specified site is enabled.

EXCLUDE_PUSH Function


Acquires an exclusive lock that prevents deferred transaction PUSH.

"EXECUTE_ERROR Procedure"


Reexecutes a deferred transaction that did not initially complete successfully in the security context of the original receiver of the transaction.

"EXECUTE_ERROR_AS_USER Procedure"


Reexecutes a deferred transaction that did not initially complete successfully in the security context of the user who executes this procedure.

"PURGE Function"


Purges pushed transactions from the deferred transaction queue at your current master site or materialized view site.

"PUSH Function"


Forces a deferred remote procedure call queue at your current master site or materialized view site to be pushed to a remote site.

"REGISTER_PROPAGATOR Procedure"


Registers the specified user as the propagator for the local database.

"SCHEDULE_PURGE Procedure"


Schedules a job to purge pushed transactions from the deferred transaction queue at your current master site or materialized view site.

"SCHEDULE_PUSH Procedure"


Schedules a job to push the deferred transaction queue to a remote site.

"SET_DISABLED Procedure"


Disables or enables propagation of the deferred transaction queue from the current site to a specified destination site.

"UNREGISTER_PROPAGATOR Procedure"


Unregisters a user as the propagator from the local database.

"UNSCHEDULE_PURGE Procedure"


Stops automatic purges of pushed transactions from the deferred transaction queue at a master site or materialized view site.

"UNSCHEDULE_PUSH Procedure"


Stops automatic pushes of the deferred transaction queue from a master site or materialized view site to a remote site.



ADD_DEFAULT_DEST Procedure

This procedure adds a destination database to the DEFDEFAULTDEST data dictionary view.

Syntax

DBMS_DEFER_SYS.ADD_DEFAULT_DEST (
   dblink   IN   VARCHAR2);

Parameters

Table 14-2 ADD_DEFAULT_DEST Procedure Parameters

ParameterDescription
dblink

The fully qualified database name of the node that you want to add to the DEFDEFAULTDEST view.


Exceptions

Table 14-3 ADD_DEFAULT_DEST Procedure Exceptions

ExceptionDescription
ORA-23352

The dblink that you specified is already in the default list.



CLEAR_PROP_STATISTICS Procedure

This procedure clears the propagation statistics in the DEFSCHEDULE data dictionary view. When this procedure is executed successfully, all statistics in this view are returned to zero and statistic gathering starts fresh.

Specifically, this procedure clears statistics from the following columns in the DEFSCHEDULE data dictionary view:

Syntax

DBMS_DEFER_SYS.CLEAR_PROP_STATISTICS (
   dblink   IN   VARCHAR2);

Parameters

Table 14-4 CLEAR_PROP_STATISTICS Procedure Parameters

ParameterDescription
dblink

The fully qualified database name of the node whose statistics you want to clear. The statistics to be cleared are the statistics for propagation of deferred transactions from the current node to the node you specify for dblink.



DELETE_DEFAULT_DEST Procedure

This procedure removes a destination database from the DEFDEFAULTDEST view.

Syntax

DBMS_DEFER_SYS.DELETE_DEFAULT_DEST (
   dblink   IN   VARCHAR2);

Parameters

Table 14-5 DELETE_DEFAULT_DEST Procedure Parameters

ParameterDescription
dblink

The fully qualified database name of the node that you want to delete from the DEFDEFAULTDEST view. If Oracle does not find this dblink in the view, then no action is taken.



DELETE_DEF_DESTINATION Procedure

This procedure removes a destination database from the DEFSCHEDULE view.

Syntax

DBMS_DEFER_SYS.DELETE_DEF_DESTINATION (
   destination   IN   VARCHAR2,
   force         IN   BOOLEAN := FALSE);

Parameters

Table 14-6 DELETE_DEF_DESTINATION Procedure Parameters

ParameterDescription
destination

The fully qualified database name of the destination that you want to delete from the DEFSCHEDULE view. If Oracle does not find this destination in the view, then no action is taken.

force

When set to TRUE, Oracle ignores all safety checks and deletes the destination.



DELETE_ERROR Procedure

This procedure deletes a transaction from the DEFERROR view.

Syntax

DBMS_DEFER_SYS.DELETE_ERROR(
   deferred_tran_id     IN   VARCHAR2,
   destination          IN   VARCHAR2);

Parameters

Table 14-7 DELETE_ERROR Procedure Parameters

ParameterDescription
deferred_tran_id

Identification number from the DEFERROR view of the deferred transaction that you want to remove from the DEFERROR view. If this parameter is NULL, then all transactions meeting the requirements of the other parameter are removed.

destination

The fully qualified database name from the DEFERROR view of the database to which the transaction was originally queued. If this parameter is NULL, then all transactions meeting the requirements of the other parameter are removed from the DEFERROR view.



DELETE_TRAN Procedure

This procedure deletes a transaction from the DEFTRANDEST view. If there are no other DEFTRANDEST or DEFERROR entries for the transaction, then the transaction is deleted from the DEFTRAN and DEFCALL views as well.

Syntax

DBMS_DEFER_SYS.DELETE_TRAN (
   deferred_tran_id     IN   VARCHAR2,
   destination          IN   VARCHAR2);

Parameters

Table 14-8 DELETE_TRAN Procedure Parameters

ParameterDescription
deferred_tran_id

Identification number from the DEFTRAN view of the deferred transaction that you want to delete. If this is NULL, then all transactions meeting the requirements of the other parameter are deleted.

destination

The fully qualified database name from the DEFTRANDEST view of the database to which the transaction was originally queued. If this is NULL, then all transactions meeting the requirements of the other parameter are deleted.



DISABLED Function

This function determines whether propagation of the deferred transaction queue from the current site to a specified site is enabled. The DISABLED function returns TRUE if the deferred remote procedure call (RPC) queue is disabled for the specified destination.

Syntax

DBMS_DEFER_SYS.DISABLED (
   destination  IN   VARCHAR2)
  RETURN BOOLEAN;

Parameters

Table 14-9 DISABLED Function Parameters

ParameterDescription
destination

The fully qualified database name of the node whose propagation status you want to check.


Exceptions

Table 14-10 DISABLED Function Exceptions

ExceptionDescription
NO_DATA_FOUND

Specified destination does not appear in the DEFSCHEDULE view.


Returns

Table 14-11 DISABLED Function Return Values

ValueDescription
TRUE

Propagation to this site from the current site is disabled.

FALSE

Propagation to this site from the current site is enabled.



EXCLUDE_PUSH Function

This function acquires an exclusive lock that prevents deferred transaction PUSH (either serial or parallel). This function performs a commit when acquiring the lock. The lock is acquired with RELEASE_ON_COMMIT => TRUE, so that pushing of the deferred transaction queue can resume after the next commit.

Syntax

DBMS_DEFER_SYS.EXCLUDE_PUSH (
   timeout   IN   INTEGER)
  RETURN INTEGER;

Parameters

Table 14-12 EXCLUDE_PUSH Function Parameters

ParameterDescription
timeout

Timeout in seconds. If the lock cannot be acquired within this time period (either because of an error or because a PUSH is currently under way), then the call returns a value of 1. A timeout value of DBMS_LOCK.MAXWAIT waits indefinitely.


Returns

Table 14-13 EXCLUDE_PUSH Function Return Values

ValueDescription
0

Success, lock acquired.

1

Timeout, no lock acquired.

2

Deadlock, no lock acquired.

4

Already own lock.



EXECUTE_ERROR Procedure

This procedure reexecutes a deferred transaction that did not initially complete successfully in the security context of the original receiver of the transaction.

Syntax

DBMS_DEFER_SYS.EXECUTE_ERROR ( 
   deferred_tran_id IN   VARCHAR2,
   destination      IN   VARCHAR2);

Parameters

Table 14-14 EXECUTE_ERROR Procedure Parameters

ParameterDescription
deferred_tran_id

Identification number from the DEFERROR view of the deferred transaction that you want to reexecute. If this is NULL, then all transactions queued for destination are reexecuted.

destination

The fully qualified database name from the DEFERROR view of the database to which the transaction was originally queued. This must not be NULL. If the provided database name is not fully qualified or is invalid, no error will be raised.


Exceptions

Table 14-15 EXECUTE_ERROR Procedure Exceptions

ExceptionDescription
ORA-24275 error

Illegal combinations of NULL and non-NULL parameters were used.

badparam

Parameter value missing or invalid (for example, if destination is NULL).

missinguser

Invalid user.



EXECUTE_ERROR_AS_USER Procedure

This procedure reexecutes a deferred transaction that did not initially complete successfully. Each transaction is executed in the security context of the connected user.

Syntax

DBMS_DEFER_SYS.EXECUTE_ERROR_AS_USER ( 
   deferred_tran_id IN   VARCHAR2,
   destination      IN   VARCHAR2);

Parameters

Table 14-16 EXECUTE_ERROR_AS_USER Procedure Parameters

ParameterDescription
deferred_tran_id

Identification number from the DEFERROR view of the deferred transaction that you want to reexecute. If this is NULL, then all transactions queued for destination are reexecuted.

destination

The fully qualified database name from the DEFERROR view of the database to which the transaction was originally queued. This must not be NULL.


Exceptions

Table 14-17 EXECUTE_ERROR_AS_USER Procedure Exceptions

ExceptionDescription
ORA-24275 error

Illegal combinations of NULL and non-NULL parameters were used.

badparam

Parameter value missing or invalid (for example, if destination is NULL).

missinguser

Invalid user.



PURGE Function

This function purges pushed transactions from the deferred transaction queue at your current master site or materialized view site.

Syntax

DBMS_DEFER_SYS.PURGE (
   purge_method         IN  BINARY_INTEGER := purge_method_quick,
   rollback_segment     IN  VARCHAR2       := NULL,
   startup_seconds      IN  BINARY_INTEGER := 0,
   execution_seconds    IN  BINARY_INTEGER := seconds_infinity,
   delay_seconds        IN  BINARY_INTEGER := 0,
   transaction_count    IN  BINARY_INTEGER := transactions_infinity,
   write_trace          IN  BOOLEAN        := NULL);
  RETURN BINARY_INTEGER;

Parameters

Table 14-18 PURGE Function Parameters

ParameterDescription
purge_method

Controls how to purge the deferred transaction queue: purge_method_quick costs less, while purge_method_precise offers better precision.

Specify the following for this parameter to use purge_method_quick:

dbms_defer_sys.purge_method_quick

Specify the following for this parameter to user purge_method_precise:

dbms_defer_sys.purge_method_precise

If you use purge_method_quick, deferred transactions and deferred procedure calls that have been successfully pushed can remain in the DEFTRAN and DEFCALL data dictionary views for longer than expected before they are purged. See "Usage Notes" for more information.

rollback_segment

Name of rollback segment to use for the purge, or NULL for default.

startup_seconds

Maximum number of seconds to wait for a previous purge of the same deferred transaction queue.

execution_seconds

If > 0, then stop purge cleanly after the specified number of seconds of real time.

delay_seconds

Stop purge cleanly after the deferred transaction queue has no transactions to purge for delay_seconds.

transaction_count

If > 0, then shut down cleanly after purging transaction_count number of transactions.

write_trace

When set to TRUE, Oracle records the result value returned by the PURGE function in the server's trace file. When set to FALSE, Oracle does not record the result value.


Returns

Table 14-19 Purge Function Returns

ValueDescription
result_ok

OK, terminated after delay_seconds expired.

result_startup_seconds

Terminated by lock timeout while starting.

result_execution_seconds

Terminated by exceeding execution_seconds.

result_transaction_count

Terminated by exceeding transaction_count.

result_errors

Terminated after errors.

result_split_del_order_limit

Terminated after failing to acquire the enqueue in exclusive mode. If you receive this return code, then retry the purge. If the problem persists, then contact Oracle Support Services.

result_purge_disabled

Queue purging is disabled internally for synchronization when adding new master sites without quiesce.


Exceptions

Table 14-20 PURGE Function Exceptions

ExceptionDescription
argoutofrange

Parameter value is out of a valid range.

executiondisabled

Execution of purging is disabled.

defererror

Internal error.


Usage Notes

When you use the purge_method_quick for the purge_method parameter in the DBMS_DEFER_SYS.PURGE function, deferred transactions and deferred procedure calls can remain in the DEFCALL and DEFTRAN data dictionary views after they have been successfully pushed. This behavior occurs in replication environments that have more than one database link and the push is executed to only one database link.

To purge the deferred transactions and deferred procedure calls, perform one of the following actions:


PUSH Function

This function forces a deferred remote procedure call (RPC) queue at your current master site or materialized view site to be pushed (propagated) to a remote site using either serial or parallel propagation.

Syntax

DBMS_DEFER_SYS.PUSH (
   destination          IN  VARCHAR2,
   parallelism          IN  BINARY_INTEGER := 0,
   heap_size            IN  BINARY_INTEGER := 0,
   stop_on_error        IN  BOOLEAN        := FALSE,
   write_trace          IN  BOOLEAN        := FALSE,
   startup_seconds      IN  BINARY_INTEGER := 0,
   execution_seconds    IN  BINARY_INTEGER := seconds_infinity,
   delay_seconds        IN  BINARY_INTEGER := 0,
   transaction_count    IN  BINARY_INTEGER := transactions_infinity,
   delivery_order_limit IN  NUMBER         := delivery_order_infinity)
  RETURN BINARY_INTEGER;

Parameters

Table 14-21 PUSH Function Parameters

ParameterDescription
destination

The fully qualified database name of the master site or master materialized view site to which you are forwarding changes.

parallelism

0 specifies serial propagation.

n > 1 specifies parallel propagation with n parallel processes.

1 specifies parallel propagation using only one parallel process.

heap_size

Maximum number of transactions to be examined simultaneously for parallel propagation scheduling. Oracle automatically calculates the default setting for optimal performance.

Note: Do not set the parameter unless so directed by Oracle Support Services.

stop_on_error

The default, FALSE, indicates that the executor should continue even if errors, such as conflicts, are encountered. If TRUE, then stops propagation at the first indication that a transaction encountered an error at the destination site.

Note: If stop_on_error is set to TRUE and the parallelism parameter is greater than 0 (zero), then transactions might continue to be propagated and applied for a period of time after an error is encountered.

write_trace

When set to TRUE, Oracle records the result value returned by the function in the server's trace file. When set to FALSE, Oracle does not record the result value.

startup_seconds

Maximum number of seconds to wait for a previous push to the same destination.

execution_seconds

If > 0, then stop push cleanly after the specified number of seconds of real time. If transaction_count and execution_seconds are zero (the default), then transactions are executed until there are no more in the queue.

The execution_seconds parameter only controls the duration of time that operations can be started. It does not include the amount of time that the transactions require at remote sites. Therefore, the execution_seconds parameter is not intended to be used as a precise control to stop the propagation of transactions to a remote site. If a precise control is required, use the transaction_count or delivery_order parameters.

delay_seconds

Do not return before the specified number of seconds have elapsed, even if the queue is empty. Useful for reducing execution overhead if PUSH is called from a tight loop.

transaction_count

If > 0, then the maximum number of transactions to be pushed before stopping. If transaction_count and execution_seconds are zero (the default), then transactions are executed until there are no more in the queue that need to be pushed.

delivery_order_limit

Stop execution cleanly before pushing a transaction where delivery_order >= delivery_order_limit.


Returns

Table 14-22 PUSH Function Returns

ValueDescription
result_ok

OK, terminated after delay_seconds expired.

result_startup_seconds

Terminated by lock timeout while starting.

result_execution_seconds

Terminated by exceeding execution_seconds.

result_transaction_count

Terminated by exceeding transaction_count.

result_delivery_order_limit

Terminated by exceeding delivery_order_limit.

result_errors

Terminated after errors.

result_push_disabled

Push was disabled internally. Typically, this return value means that propagation to the destination was set to disabled internally by Oracle for propagation synchronization when adding a new master site to a master group without quiescing the master group. Oracle will enable propagation automatically at a later time.

result_split_del_order_limit

Terminated after failing to acquire the enqueue in exclusive mode. If you receive this return code, then retry the push. If the problem persists, then contact Oracle Support Services.


Exceptions

Table 14-23 PUSH Function Exceptions

ExceptionDescription
incompleteparallelpush

Serial propagation requires that parallel propagation shuts down cleanly.

executiondisabled

Execution of deferred remote procedure calls (RPCs) is disabled at the destination.

crt_err_err

Error while creating entry in DEFERROR.

deferred_rpc_quiesce

Replication activity for replication group is suspended.

commfailure

Communication failure during deferred remote procedure call (RPC).

missingpropagator

A propagator does not exist.



REGISTER_PROPAGATOR Procedure

This procedure registers the specified user as the propagator for the local database. It also grants the following privileges to the specified user (so that the user can create wrappers):

Syntax

DBMS_DEFER_SYS.REGISTER_PROPAGATOR (
   username  IN  VARCHAR2);

Parameter

Table 14-24 REGISTER_PROPAGATOR Procedure Parameter

ParameterDescription
username

Name of the user.


Exceptions

Table 14-25 REGISTER_PROPAGATOR Procedure Exceptions

ExceptionDescription
missinguser

Specified user does not exist.

alreadypropagator

Specified user is already the propagator.

duplicatepropagator

There is already a different propagator.



SCHEDULE_PURGE Procedure

This procedure schedules a job to purge pushed transactions from the deferred transaction queue at your current master site or materialized view site. You should schedule one purge job.


See Also:

Oracle Database Advanced Replication for information about using this procedure to schedule continuous or periodic purge of your deferred transaction queue

Syntax

DBMS_DEFER_SYS.SCHEDULE_PURGE (
   interval             IN  VARCHAR2,
   next_date            IN  DATE,
   reset                IN  BOOLEAN        := NULL,
   purge_method         IN  BINARY_INTEGER := NULL,
   rollback_segment     IN  VARCHAR2       := NULL,
   startup_seconds      IN  BINARY_INTEGER := NULL,
   execution_seconds    IN  BINARY_INTEGER := NULL,
   delay_seconds        IN  BINARY_INTEGER := NULL,
   transaction_count    IN  BINARY_INTEGER := NULL,
   write_trace          IN  BOOLEAN        := NULL);

Parameters

Table 14-26 SCHEDULE_PURGE Procedure Parameters

ParameterDescription
interval

Allows you to provide a function to calculate the next time to purge. This value is stored in the interval field of the DEFSCHEDULE view and calculates the next_date field of this view. If you use the default value for this parameter, NULL, then the value of this field remains unchanged. If the field had no previous value, it is created with a value of NULL. If you do not supply a value for this field, you must supply a value for next_date.

next_date

Allows you to specify a time to purge pushed transactions from the site's queue. This value is stored in the next_date field of the DEFSCHEDULE view. If you use the default value for this parameter, NULL, then the value of this field remains unchanged. If this field had no previous value, it is created with a value of NULL. If you do not supply a value for this field, then you must supply a value for interval.

reset

Set to TRUE to reset LAST_TXN_COUNT, LAST_ERROR, and LAST_MSG to NULL.

purge_method

Controls how to purge the deferred transaction queue: purge_method_quick costs less, while purge_method_precise offers better precision.

Specify the following for this parameter to use purge_method_quick:

dbms_defer_sys.purge_method_quick

Specify the following for this parameter to user purge_method_precise:

dbms_defer_sys.purge_method_precise

If you use purge_method_quick, deferred transactions and deferred procedure calls that have been successfully pushed can remain in the DEFTRAN and DEFCALL data dictionary views for longer than expected before they are purged. For more information, see "Usage Notes". These usage notes are for the DBMS_DEFER_SYS.PURGE function, but they also apply to the DBMS_DEFER_SYS.SCHEDULE_PURGE procedure.

rollback_segment

Name of rollback segment to use for the purge, or NULL for default.

startup_seconds

Maximum number of seconds to wait for a previous purge of the same deferred transaction queue.

execution_seconds

If >0, then stop purge cleanly after the specified number of seconds of real time.

delay_seconds

Stop purge cleanly after the deferred transaction queue has no transactions to purge for delay_seconds.

transaction_count

If > 0, then shut down cleanly after purging transaction_count number of transactions.

write_trace

When set to TRUE, Oracle records the result value returned by the PURGE function in the server's trace file.



SCHEDULE_PUSH Procedure

This procedure schedules a job to push the deferred transaction queue to a remote site. This procedure performs a COMMIT.


See Also:

Oracle Database Advanced Replication for information about using this procedure to schedule continuous or periodic push of your deferred transaction queue

Syntax

DBMS_DEFER_SYS.SCHEDULE_PUSH (
   destination          IN  VARCHAR2,
   interval             IN  VARCHAR2,
   next_date            IN  DATE,
   reset                IN  BOOLEAN        := FALSE,
   parallelism          IN  BINARY_INTEGER := NULL,
   heap_size            IN  BINARY_INTEGER := NULL,
   stop_on_error        IN  BOOLEAN        := NULL,
   write_trace          IN  BOOLEAN        := NULL,
   startup_seconds      IN  BINARY_INTEGER := NULL,
   execution_seconds    IN  BINARY_INTEGER := NULL,
   delay_seconds        IN  BINARY_INTEGER := NULL,
   transaction_count    IN  BINARY_INTEGER := NULL);

Parameters

Table 14-27 SCHEDULE_PUSH Procedure Parameters

ParameterDescription
destination

The fully qualified database name of the master site or master materialized view site to which you are forwarding changes.

interval

Allows you to provide a function to calculate the next time to push. This value is stored in the interval field of the DEFSCHEDULE view and calculates the next_date field of this view. If you use the default value for this parameter, NULL, then the value of this field remains unchanged. If the field had no previous value, it is created with a value of NULL. If you do not supply a value for this field, then you must supply a value for next_date.

next_date

Allows you to specify a time to push deferred transactions to the remote site. This value is stored in the next_date field of the DEFSCHEDULE view. If you use the default value for this parameter, NULL, then the value of this field remains unchanged. If this field had no previous value, then it is created with a value of NULL. If you do not supply a value for this field, then you must supply a value for interval.

reset

Set to TRUE to reset LAST_TXN_COUNT, LST_ERROR, and LAST_MSG to NULL.

parallelism

0 specifies serial propagation.

n > 1 specifies parallel propagation with n parallel processes.

1 specifies parallel propagation using only one parallel process.

heap_size

Maximum number of transactions to be examined simultaneously for parallel propagation scheduling. Oracle automatically calculates the default setting for optimal performance.

Note: Do not set the parameter unless so directed by Oracle Support Services.

stop_on_error

The default, FALSE, indicates that the executor should continue even if errors, such as conflicts, are encountered. If TRUE, then stops propagation at the first indication that a transaction encountered an error at the destination site.

Note: If stop_on_error is set to TRUE and the parallelism parameter is greater than 0 (zero), then transactions might continue to be propagated and applied for a period of time after an error is encountered.

write_trace

When set to TRUE, Oracle records the result value returned by the function in the server's trace file.

startup_seconds

Maximum number of seconds to wait for a previous push to the same destination.

execution_seconds

If >0, then stop execution cleanly after the specified number of seconds of real time. If transaction_count and execution_seconds are zero (the default), then transactions are executed until there are no more in the queue.

delay_seconds

Do not return before the specified number of seconds have elapsed, even if the queue is empty. Useful for reducing execution overhead if PUSH is called from a tight loop.

transaction_count

If > 0, then the maximum number of transactions to be pushed before stopping. If transaction_count and execution_seconds are zero (the default), then transactions are executed until there are no more in the queue that need to be pushed.



SET_DISABLED Procedure

To disable or enable propagation of the deferred transaction queue from the current site to a specified destination site. If the disabled parameter is TRUE, then the procedure disables propagation to the specified destination and future invocations of PUSH do not push the deferred remote procedure call (RPC) queue. SET_DISABLED eventually affects a session already pushing the queue to the specified destination, but does not affect sessions appending to the queue with DBMS_DEFER.

If the disabled parameter is FALSE, then the procedure enables propagation to the specified destination and, although this does not push the queue, it permits future invocations of PUSH to push the queue to the specified destination. Whether the disabled parameter is TRUE or FALSE, a COMMIT is required for the setting to take effect in other sessions.

Syntax

DBMS_DEFER_SYS.SET_DISABLED (
   destination   IN   VARCHAR2,
   disabled      IN   BOOLEAN := TRUE,
   catchup       IN   RAW := '00',
   override      IN   BOOLEAN := FALSE);

Parameters

Table 14-28 SET_DISABLED Procedure Parameters

ParameterDescription
destination

The fully qualified database name of the node whose propagation status you want to change.

disabled

By default, this parameter disables propagation of the deferred transaction queue from your current site to the specified destination. Set this to FALSE to enable propagation.

catchup

The extension identifier for adding new master sites to a master group without quiescing the master group. The new master site is the destination. Query the DEFSCHEDULE data dictionary view for the existing extension identifiers.

override

A FALSE setting, the default, specifies that Oracle raises the cantsetdisabled exception if the disabled parameter is set to FALSE and propagation was disabled internally by Oracle.

A TRUE setting specifies that Oracle ignores whether the disabled state was set internally for synchronization and always tries to set the state as specified by the disabled parameter.

Note: Do not set this parameter unless directed to do so by Oracle Support Services.


Exceptions

Table 14-29 SET_DISABLED Procedure Exceptions

ExceptionDescription
NO_DATA_FOUND

No entry was found in the DEFSCHEDULE view for the specified destination.

cantsetdisabled

The disabled status for this site is set internally by Oracle for synchronization during adding a new master site to a master group without quiescing the master group. Ensure that adding a new master site without quiescing finished before invoking this procedure.



UNREGISTER_PROPAGATOR Procedure

To unregister a user as the propagator from the local database. This procedure:

Syntax

DBMS_DEFER_SYS.UNREGISTER_PROPAGATOR (
   username  IN  VARCHAR2
   timeout   IN  INTEGER DEFAULT DBMS_LOCK.MAXWAIT);

Parameters

Table 14-30 UNREGISTER_PROPAGATOR Procedure Parameters

ParameterDescription
username

Name of the propagator user.

timeout

Timeout in seconds. If the propagator is in use, then the procedure waits until timeout. The default is DBMS_LOCK.MAXWAIT.


Exceptions

Table 14-31 UNREGISTER_PROPAGATOR Procedure Exceptions

ParameterDescription
missingpropagator

Specified user is not a propagator.

propagator_inuse

Propagator is in use, and thus cannot be unregistered. Try later.



UNSCHEDULE_PURGE Procedure

This procedure stops automatic purges of pushed transactions from the deferred transaction queue at a master site or materialized view site.

Syntax

DBMS_DEFER_SYS.UNSCHEDULE_PURGE();

Parameters

None


UNSCHEDULE_PUSH Procedure

This procedure stops automatic pushes of the deferred transaction queue from a master site or materialized view site to a remote site.

Syntax

DBMS_DEFER_SYS.UNSCHEDULE_PUSH (
   dblink   IN   VARCHAR2);

Parameters

Table 14-32 UNSCHEDULE_PUSH Procedure Parameters

ParameterDescription
dblink

Fully qualified path name for the database at which you want to unschedule periodic execution of deferred remote procedure calls.


Exceptions

Table 14-33 UNSCHEDULE_PUSH Procedure Exceptions

ExceptionDescription
NO_DATA_FOUND

No entry was found in the DEFSCHEDULE view for the specified dblink.


PK xNu?uPKfUIOEBPS/dcommon/oracle-logo.jpg~(JFIFC    $.' ",#(7),01444'9=82<.342C  2!!22222222222222222222222222222222222222222222222222'7" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE!KEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEzE7V%ȣOΏ9??:a"\fSrğjAsKJ:nOzO=}E1-I)3(QEQEQEQEQEQEQE֝Hza<["2"pO#f8M[RL(,?g93QSZ uy"lx4h`O!LŏʨXZvq& c՚]+: ǵ@+J]tQ]~[[eϸ (]6A&>ܫ~+כzmZ^(<57KsHf妬Ϧmnẁ&F!:-`b\/(tF*Bֳ ~V{WxxfCnMvF=;5_,6%S>}cQQjsOO5=)Ot [W9 /{^tyNg#ЄGsֿ1-4ooTZ?K Gc+oyڙoNuh^iSo5{\ܹ3Yos}$.nQ-~n,-zr~-|K4R"8a{]^;I<ȤL5"EԤP7_j>OoK;*U.at*K[fym3ii^#wcC'IIkIp$󿉵|CtĈpW¹l{9>⪦׺*ͯj.LfGߍԁw] |WW18>w.ӯ! VӃ :#1~ +މ=;5c__b@W@ +^]ևՃ7 n&g2I8Lw7uҭ$"&"b eZ":8)D'%{}5{; w]iu;_dLʳ4R-,2H6>½HLKܹR ~foZKZ࿷1[oZ7׫Z7R¢?«'y?A}C_iG5s_~^ J5?œ tp]X/c'r%eܺA|4ծ-Ե+ْe1M38Ǯ `|Kյ OVڅu;"d56, X5kYR<̭CiطXԮ];Oy)OcWj֩}=܅s۸QZ*<~%뺃ȶp f~Bðzb\ݳzW*y{=[ C/Ak oXCkt_s}{'y?AmCjޓ{ WRV7r. g~Q"7&͹+c<=,dJ1V߁=T)TR՜*N4 ^Bڥ%B+=@fE5ka}ędܤFH^i1k\Sgdk> ֤aOM\_\T)8靠㡮3ģR: jj,pk/K!t,=ϯZ6(((((((49 xn_kLk&f9sK`zx{{y8H 8b4>ÇНE|7v(z/]k7IxM}8!ycZRQ pKVr(RPEr?^}'ðh{x+ՀLW154cK@Ng C)rr9+c:׹b Жf*s^ fKS7^} *{zq_@8# pF~ [VPe(nw0MW=3#kȵz晨cy PpG#W:%drMh]3HH<\]ԁ|_W HHҡb}P>k {ZErxMX@8C&qskLۙOnO^sCk7ql2XCw5VG.S~H8=(s1~cV5z %v|U2QF=NoW]ո?<`~׮}=ӬfԵ,=;"~Iy7K#g{ñJ?5$y` zz@-~m7mG宝Gٱ>G&K#]؃y1$$t>wqjstX.b̐{Wej)Dxfc:8)=$y|L`xV8ߙ~E)HkwW$J0uʟk>6Sgp~;4֌W+חc"=|ř9bc5> *rg {~cj1rnI#G|8v4wĿhFb><^ pJLm[Dl1;Vx5IZ:1*p)إ1ZbAK(1ׅ|S&5{^ KG^5r>;X׻K^? s fk^8O/"J)3K]N)iL?5!ƾq:G_=X- i,vi2N3 |03Qas ! 7}kZU781M,->e;@Qz T(GK(ah(((((((Y[×j2F}o־oYYq $+]%$ v^rϭ`nax,ZEuWSܽ,g%~"MrsrY~Ҿ"Fت;8{ѰxYEfP^;WPwqbB:c?zp<7;SBfZ)dϛ; 7s^>}⍱x?Bix^#hf,*P9S{w[]GF?1Z_nG~]kk)9Sc5Ո<<6J-ϛ}xUi>ux#ţc'{ᛲq?Oo?x&mѱ'#^t)ϲbb0 F«kIVmVsv@}kҡ!ˍUTtxO̧]ORb|2yԵk܊{sPIc_?ħ:Ig)=Z~' "\M2VSSMyLsl⺿U~"C7\hz_ Rs$~? TAi<lO*>U}+'f>7_K N s8g1^CeКÿE ;{+Y\ O5|Y{/o+ LVcO;7Zx-Ek&dpzbӱ+TaB0gNy׭ 3^c T\$⫫?F33?t._Q~Nln:U/Ceb1-im WʸQM+VpafR3d׫é|Aү-q*I P7:y&]hX^Fbtpܩ?|Wu󭏤ʫxJ3ߴm"(uqA}j.+?S wV ~ [B&<^U?rϜ_OH\'.;|.%pw/ZZG'1j(#0UT` Wzw}>_*9m>󑓀F?EL3"zpubzΕ$+0܉&3zڶ+jyr1QE ( ( ( ( ( ( ( (UIdC0EZm+]Y6^![ ԯsmܶ捆?+me+ZE29)B[;я*wGxsK7;5w)}gH~.Ɣx?X\ߚ}A@tQ(:ͧ|Iq(CT?v[sKG+*רqҍck <#Ljα5݈`8cXP6T5i.K!xX*p&ќZǓϘ7 *oƽ:wlຈ:Q5yIEA/2*2jAҐe}k%K$N9R2?7ýKMV!{W9\PA+c4w` Wx=Ze\X{}yXI Ү!aOÎ{]Qx)#D@9E:*NJ}b|Z>_k7:d$z >&Vv󃏽WlR:RqJfGإd9Tm(ҝEtO}1O[xxEYt8,3v bFF )ǙrPNE8=O#V*Cc𹾾&l&cmCh<.P{ʦ&ۣY+Gxs~k5$> ӥPquŽўZt~Tl>Q.g> %k#ú:Kn'&{[yWQGqF}AЅ׮/}<;VYZa$wQg!$;_ $NKS}“_{MY|w7G!"\JtRy+贾d|o/;5jz_6fHwk<ѰJ#]kAȎ J =YNu%dxRwwbEQEQEQEQEQEQEQEQEQE'fLQZ(1F)hQ@X1KEQE-Q@ 1KE3h=iPb(((1GjZ(-ʹRPbR@ 1KE7`bڒyS0(-&)P+ ڎԴP11F)h&:LRmQ@Q@Š(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((?l:ϊw "{{-3j3%{sj~2= 7 ~MڅKrHb|P3 r=Ҁ +Ş/$iu7=q2dԂxn⸷9$l]H #WI񯄴;\[ݚD8C3p&0U9^AnK vI+!I8>5(zqj03Y.X ,@85ߛ8>pq8=} \xmm常8` $Q@$v7zwp]ɝA GX;y_]覮O&4 SPtY.X),@84U=7Vuv K4,$g{@<+uqtiGw3; I@ORմn5MBp%8'ƫ%u6uBJrHRN2@ϸ J(9i[[m$|@񗌯|-(0Y8~[_w׮F?kiZҴeեՕVQȠ78w*z66h)[ELrɜ/$wO hgA}>3;vmwguy|Y`Z *VZ8fWh[$a9S#U(vz\][j3>˘]lNTCU/:5ޛc; u"b# 1g^S Y3h$#`pÃ*=KVtku5 K,S,J[ g{Ee^%tk56v@DrF@b2ϱ'+yc Pƀ5(7zwp]ɝA GV(vz\][j3>˘]lNTCT|YN;;iWwRgd0^#' N'7A%wG`((((((((((((((/CcaSm+3O \\K0E$QDOk?; z a3|$Xwx"}aؑ޶<5g6H{ ;fst+oi sg%Qm`YYSi3E5QHmeFd+oGE,y'~>b'A" IY޻!%d|>EmۼGf*⦳  H%UE'q> +HW݂FT* F i_xYDrd:W KRQxR^l;/#6?7xo0G;$  =>dU C{(Dr?:m=wrOA-{ElzW1za @B◂t8cx#+[2LYX`s ^#m䷂Lar[j4 82q$mBגi S7(Vm$``7y I_>!<#mOT̍0V~b9U+?#kMi0-o-[p<8ךk#Mnuv"5>djm ;* I#=+dYkVe`:=:|Ķ^)֤5s%̓\Hnp<)ܬv.3HKz',g}+i_3n3/;cq,ҵ^3>BIm]YY'>-xlWZtQԭ32` cMq=-.&)S#rRq@ŭ&? k0j:3iqkoz-o)ݜ)(.KmoS]ٯ!ݞq.m ۏ'$ɯ@-MXx5JL;Qw9 w So'u7>V78q ( ( ( ( ( ( ( ( ( ( ( ( ( (9'þ1/ϲ}${wcwa^’yBN (5[z} ;XV%-2B3}\Po@>2 HP`#;z}rY h F#o$ԄWAEg:95{/m['dɝ7)ꭂpgXw_2_zW.d v#ʺ('5,DrGe.!2s}hz\ kw9$28 -.S62:uŠӿ?K>/#{ٳng9~gn{M.}Ȁ f+Ws[=:WaEs?#HI2lqߔFqؾ䳿LoxĈ  Ep?Gu y8$rzA[FuRL.I|]n[P7ž(vX';N+F#`p=G^H =&vy]8#g$Cv=]ECuo-QRHPF Aby |>war#s«j( C=%a1=YXrkB(mW5q1RJoQEe%JU#GBjmN/%ጾbc9|9EpG ;o'9Ǘf6ci^ ]c&[W7`R 3@Eo߅|#_d# ?%(H$a؎?*(gguE|xdK03NX}k9q)hE(gd'H߻LNkCĞѼ]GaY9DʞkLJr:آ Ƿi⋿gWC=ǚz qzZآ+XYvrYAwk&7;|9șY&CG(T8ֺ 6euK^?X HtZآ ( ( ( ( ( ( ( ( ( ( ( ( ( (<Mֱ t'[ҿ䶒[I>¡VG7ŸY>(W:Q]V&!1 z WCxp4WHX< @8OHxUmk}+YpƒG+68{Aƺ-/0G-D+W' A}ɝ/LWWigWh#<|Ў#B]OI 9$ >'xZo IZ沌pP@3SB(CEx4{9s˽1$3!Q'Fx]jzO_}R}=cq3ݿ@E|i>#hi$wyhp ; ),koY>uVv/r Ȯ' IaY?TU|1w&ԥm^ o ݎ?O5 N/>(j4?-~F<UhgmkC⯋}GJOm ;w8rXdd=Bg]d3k{Hܣ 9+,rr{LoŮ%vLX–Qx^O㼑|]yя>N Y706c00*}5#x|Ks.*֢4_VH5Y,ȧ1@r@.rJ+4\[5?㯛͍k<τ*֥5I%Χ20HsAJ+ WWĿivޙNWԚԀUX ᕦʞ+Cƿ ᆈ|[jV: U&Dg@mPݷ(L Sy>Oۭ"nٽmqg(揉~!eɤxHx"0#N^PH#nzJgF-E;@u #8>~MYgqJO+V #An1 ZYw 6Rkkpa}GErfuƮ-:igPgn2 LMl1M*F {ez/Wn5{ r #??#Bkwv6}cW=麍jD!de*͌!(oۜ𕟌|u.}[ėXws&{ 3T!p*ƿ ᆈ|[jV: U&Dg@mPݷ(LGOe>xmcz ik#3/* XBA";+>]? xRէ@|yfb0# US 4+k_jw- U 7+rGQ^GdOs}Ͻu֮O=麍jD!de*͌!(o+Ҽk_|e<,O[To41݌~~8jx V/uBqIAEn:GON(=Hj'v0"v*sg?O5 \mmⷷ8`GjQ@W?iѦ[fuf UWjvt>,T Wp^EHX(oܓfŸᘰqֽZm5E=/żTmvI WJ43S6Ka (K=N; .dɠHA#?/>X4 'yw("̎.خn\K*]0#e;ʠ'ѓӒO5_4XƺZ٤&U*y$Xsր[DFi0Oe6H o8,vlHFKtU(<6:mqq,p$0UEےI<9d?KHtf$?G!FM8$<G5+6=fmSKԦ[veBVڊsh?kQF|)~4ăE[wXg1>%1( Ij>0{_ۋycg_((ۜz·N{ ^ V2gi z`0gh^|xݿwM=1^?Y4f d`߾# ˕b+(h<+G>ng>о^fvoێ>w56{NK " +U cq z` 8 ;£FWAInQnxoZowTI\ΥQ;a0Rz ×zku{8:@ $_ K]SttmKi +xi,U(' z @?:*?ֲ(|.F[GKݼVdQƏ3q7˹؀}BZm5E=/żTmvI<⾛"Ki +{KxB IPNShuKuw,8 #V|7g]wOkꣵ\ttmKi +xi,U(' z ? lRIkW{ͺ$0.9F9Oi Ѿ/GHqi5I7ڀpM' ?jDnUXI!][o\ap*_XhQ]O-ȒkCK)$f0v76aO4 `oƾ |yCW pjX+.a9]%x|Y`Z-7FZD,>PM<X\3^e6ǚ"X c*6?^?9玑WnM^[Qwx`qs@w' <+4'RHKm0S&6 x φlnѬW񴄅 LqjM7Ih[Uw|`#Wqo GÖkkc$:@^Ko>OM ?f_zT>.eሧu8dND(#pwW:%/W:N ܰ0bRQ̀%$ =7<_^ךҰ*76X*fٴ PS^j Z[4?d1tb8UxOKK^f%'9V8$s^^_VK}hleU$ն 2~Þ1ёuK`\%ͥ13Hc %Dy3*OPTz< uߍ.$PQ3 jڶq{<.]wLx`AȮI6:5o `5 0gQ^Wo~#oGiQk nePz.PF,*WWPEPEpK2II%F',y>k>a-$!I!]KmAۜdg((((((((((((((((4<`tUb a 3)9zWG~zIk> Sh="A9ڟy5?xa{QcEv#U&|é ?4?@׾X#O;X2qNA|:˵ii;Qd,p98"k3_b4R^xLr'V`Idw_ "h%$E [pA}6rO=싌A$ y#WK_xV#[X7Hۏ>`8 V+ hH"VF  kr<?6⽂?6⽂<ow:i /5.Od$kjd&=+cow:~ ׁ|=qqi-I$ĤJyq8[Gai麔NtϘ##r DzW_]|cnl|R ?A *?u(|KjZ;IR[h/bf.DZcV2Ns(ޥm !O( @#?#tQ> nmsǷڽ:W8V2 Fp8'h'cRפxSnaguuC nsld2H@Oosߋ_r췑2T06[s!5o㯄wϊGָ=B;IQI`Jf# rAucW~MfwdLbؖb8 c%$_:ΗpMJ]<& 6[trzc4|XզIj>$NR໴*GʺOPy g7|5ꚇKO$dP6BŶ+Y󼑴WI?L; nĻ8ɮO<5`_z4m:Xm3alP;rHb |1bBp¿Vs]|MS| &o$; (?ƾQ5(5_hitoʱVPzƼgxy6۝ogvPEP)?jܻOl>ynw1QEs6&>>?yͻdWuZ3IEmۿb݌gMhQ@|XVM7P[;c  xaʩ>;캊uE+ˑ ox8ɫP-Fo xU-n0ds J'5/Kx/~"ԼA[Em=ӰX0f$ձ#5P<=ohɻ[7suۍ=?ּ@|Cj~K=ʱ!0Wl<|o"_Y״JR3-#\9xc_hlڼ^fݲ+܌n: Lwm"v߱N3&( cKv6ʲ8{0 A8~ r]^aKU 2rp3^Er~-CPu8; 真Gx5ohm?#^Cv}n{ (?]?=>wImݻoBg8ȬcXlg|^^3ܜcv:?ּ@|Cj~K=ʱ!0Wl<ԞYy\$䳿ɍ #`2|ZOh/,VkbocxЏ )n0F;WQ@)5]M6^aՎ0yy]{P\hݡl&lʃ=+(^׼/{xR`{vmF,x# t#<=w"̎Y%vdE$1 9+4/YK}g J<[9S|`@g9گ/:Ώlfu3*lH5~Ϻl? ĭKn" NBa6;V4k=„|9(uWA6[0D#5 `(J( ( ( ( ( ( ( ( ( ( ( ( ( ( (<◎AGÖj. a! ;t9_MAym6kHL6YKBy뵱ԌGikc6y$(ܒI9z|mo,h]wxU$ڀ+o K(;i]K##% @uRVŜiΡ<) &-'3 Yǫ.-m$ֵ0֊߀KceG,HQ^.tvsjYҬm.p|^x\9v oy=RY]n (9!XHꮸ s<3o7|C7zMc S^^?:*?ֺψ=_ivki%NTf[ /9b@Ҋs|xPΕe#otАLS2km{Yꖚͬzvװ@IA GUuf0Q^o⛏ڿ Eci1^+2*/Cm s^#^:$Ԗ1% \`HQ\|Yg'ۭb$@TtK/3 ŖQvZ]Iolѡ2C  xW_Na}>?_`}v/^{r~#G :} Vx.00XjQ^?5vJ״. @rq$thk9<[h_i*pyu Ş/t_ xFMN{u/f6܏®vya{(.|Ga+K"X)h0]ZP'Tۊ +B}ƐItcg$ݰ2G$)uEx*KFBh 0ka?ծSϘuސ)60 'cOep?)V"my2^En3 ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (<_u/VZ2n#r4G# =qoaIݺb+Cv;]a؏BpA;Vx;T84[qr;ua0R:( KcX0N⌥KI)[3.{}>Z_^!7M2Ub.0N]}Ew ԭ~,D`.m3k v?1#S^y \GE۹=Te{9x>/Ѿ >)VO{dmK-Zc՟>4il,T cRyxf] 2}?ȴCnrd8\`4jV?uK=( #,6n C6ʸ-kvszb?#s=\|_|A|SOMۻږ [1%|Pǎ=>|hPxM7akVRĂsznltWi_}Ϭjgv8B"8IhU ߋ'x]Ѵ/Ihz+B'yK Ն ۴p5#^_5-N ] pt 'Gg..Ge]_K\]}уr pY#0߃7񅄗^']yvF-RPrWxL- V: LRX)?Ar`;m !?ԭu{M>ST ͏/895I ~YxZ}BK;,sЄ*N q|bXXk3gtr<Ӡu=~ĺ|]rjГDJ!@D#dB;f"mR4)-oYnoczKAfSnH z߆+˭oXC{5Ԏ"ar%Q68U/9w«ˏ<ako: 7-Xۜg`U {|j hrZD̞X 2-2 ^w&VnCWq@=vZ[?Ma&\r63pz>5n4VX(PNr+"Y_Mn$WQc. m*:8Huw҈' *E-y~/^#uohw3"ٳv 9Xx5 |\Ѯ4Kh͢<1m`B@Lhrz+񶕬k~Ӵ jsy~MϜlĊ ,2ZX{Ln>}Q\M" ۏ'$ɠ r+!@>®QEQEQEQEQEW䳿LoxĈ  !($ qUE81RQ@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@PKb~~PKfUIOEBPS/dcommon/doccd_epub.jsM /* Copyright 2006, 2012, Oracle and/or its affiliates. All rights reserved. Author: Robert Crews Version: 2012.3.17 */ function addLoadEvent(func) { var oldOnload = window.onload; if (typeof(window.onload) != "function") window.onload = func; else window.onload = function() { oldOnload(); func(); } } function compactLists() { var lists = []; var ul = document.getElementsByTagName("ul"); for (var i = 0; i < ul.length; i++) lists.push(ul[i]); var ol = document.getElementsByTagName("ol"); for (var i = 0; i < ol.length; i++) lists.push(ol[i]); for (var i = 0; i < lists.length; i++) { var collapsible = true, c = []; var li = lists[i].getElementsByTagName("li"); for (var j = 0; j < li.length; j++) { var p = li[j].getElementsByTagName("p"); if (p.length > 1) collapsible = false; for (var k = 0; k < p.length; k++) { if ( getTextContent(p[k]).split(" ").length > 12 ) collapsible = false; c.push(p[k]); } } if (collapsible) { for (var j = 0; j < c.length; j++) { c[j].style.margin = "0"; } } } function getTextContent(e) { if (e.textContent) return e.textContent; if (e.innerText) return e.innerText; } } addLoadEvent(compactLists); function processIndex() { try { if (!/\/index.htm(?:|#.*)$/.test(window.location.href)) return false; } catch(e) {} var shortcut = []; lastPrefix = ""; var dd = document.getElementsByTagName("dd"); for (var i = 0; i < dd.length; i++) { if (dd[i].className != 'l1ix') continue; var prefix = getTextContent(dd[i]).substring(0, 2).toUpperCase(); if (!prefix.match(/^([A-Z0-9]{2})/)) continue; if (prefix == lastPrefix) continue; dd[i].id = prefix; var s = document.createElement("a"); s.href = "#" + prefix; s.appendChild(document.createTextNode(prefix)); shortcut.push(s); lastPrefix = prefix; } var h2 = document.getElementsByTagName("h2"); for (var i = 0; i < h2.length; i++) { var nav = document.createElement("div"); nav.style.position = "relative"; nav.style.top = "-1.5ex"; nav.style.left = "1.5em"; nav.style.width = "90%"; while (shortcut[0] && shortcut[0].toString().charAt(shortcut[0].toString().length - 2) == getTextContent(h2[i])) { nav.appendChild(shortcut.shift()); nav.appendChild(document.createTextNode("\u00A0 ")); } h2[i].parentNode.insertBefore(nav, h2[i].nextSibling); } function getTextContent(e) { if (e.textContent) return e.textContent; if (e.innerText) return e.innerText; } } addLoadEvent(processIndex); PKo"nR M PKfUIOEBPS/dcommon/cpyr.htmd Oracle Legal Notices

Oracle Legal Notices

Copyright Notice

Copyright © 1994-2016, Oracle and/or its affiliates. All rights reserved.

License Restrictions Warranty/Consequential Damages Disclaimer

This software and related documentation are provided under a license agreement containing restrictions on use and disclosure and are protected by intellectual property laws. Except as expressly permitted in your license agreement or allowed by law, you may not use, copy, reproduce, translate, broadcast, modify, license, transmit, distribute, exhibit, perform, publish, or display any part, in any form, or by any means. Reverse engineering, disassembly, or decompilation of this software, unless required by law for interoperability, is prohibited.

Warranty Disclaimer

The information contained herein is subject to change without notice and is not warranted to be error-free. If you find any errors, please report them to us in writing.

Restricted Rights Notice

If this is software or related documentation that is delivered to the U.S. Government or anyone licensing it on behalf of the U.S. Government, then the following notice is applicable:

U.S. GOVERNMENT END USERS: Oracle programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, delivered to U.S. Government end users are "commercial computer software" pursuant to the applicable Federal Acquisition Regulation and agency-specific supplemental regulations. As such, use, duplication, disclosure, modification, and adaptation of the programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, shall be subject to license terms and license restrictions applicable to the programs. No other rights are granted to the U.S. Government.

Hazardous Applications Notice

This software or hardware is developed for general use in a variety of information management applications. It is not developed or intended for use in any inherently dangerous applications, including applications that may create a risk of personal injury. If you use this software or hardware in dangerous applications, then you shall be responsible to take all appropriate fail-safe, backup, redundancy, and other measures to ensure its safe use. Oracle Corporation and its affiliates disclaim any liability for any damages caused by use of this software or hardware in dangerous applications.

Trademark Notice

Oracle and Java are registered trademarks of Oracle and/or its affiliates. Other names may be trademarks of their respective owners.

Intel and Intel Xeon are trademarks or registered trademarks of Intel Corporation. All SPARC trademarks are used under license and are trademarks or registered trademarks of SPARC International, Inc. AMD, Opteron, the AMD logo, and the AMD Opteron logo are trademarks or registered trademarks of Advanced Micro Devices. UNIX is a registered trademark of The Open Group.

Third-Party Content, Products, and Services Disclaimer

This software or hardware and documentation may provide access to or information about content, products, and services from third parties. Oracle Corporation and its affiliates are not responsible for and expressly disclaim all warranties of any kind with respect to third-party content, products, and services unless otherwise set forth in an applicable agreement between you and Oracle. Oracle Corporation and its affiliates will not be responsible for any loss, costs, or damages incurred due to your access to or use of third-party content, products, or services, except as set forth in an applicable agreement between you and Oracle.

Alpha and Beta Draft Documentation Notice

If this document is in preproduction status:

This documentation is in preproduction status and is intended for demonstration and preliminary use only. It may not be specific to the hardware on which you are using the software. Oracle Corporation and its affiliates are not responsible for and expressly disclaim all warranties of any kind with respect to this documentation and will not be responsible for any loss, costs, or damages incurred due to the use of this documentation.

Private Alpha and Beta Draft Documentation Notice

If this document is in private preproduction status:

The information contained in this document is for informational sharing purposes only and should be considered in your capacity as a customer advisory board member or pursuant to your beta trial agreement only. It is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions. The development, release, and timing of any features or functionality described in this document remains at the sole discretion of Oracle.

This document in any form, software or printed matter, contains proprietary information that is the exclusive property of Oracle. Your access to and use of this confidential material is subject to the terms and conditions of your Oracle Master Agreement, Oracle License and Services Agreement, Oracle PartnerNetwork Agreement, Oracle distribution agreement, or other license agreement which has been executed by you and Oracle and with which you agree to comply. This document and information contained herein may not be disclosed, copied, reproduced, or distributed to anyone outside Oracle without prior written consent of Oracle. This document is not part of your license agreement nor can it be incorporated into any contractual agreement with Oracle or its subsidiaries or affiliates.

Documentation Accessibility

For information about Oracle's commitment to accessibility, visit the Oracle Accessibility Program website at http://www.oracle.com/pls/topic/lookup?ctx=acc&id=docacc.

Access to Oracle Support

Oracle customers that have purchased support have access to electronic support through My Oracle Support. For information, visit http://www.oracle.com/pls/topic/lookup?ctx=acc&id=info or visit http://www.oracle.com/pls/topic/lookup?ctx=acc&id=trs if you are hearing impaired.

Oracle Logo

PKS\UKPKfUIOEBPS/dcommon/blafdoc.cssc@charset "utf-8"; /* Copyright 2002, 2011, Oracle and/or its affiliates. All rights reserved. Author: Robert Crews Version: 2011.8.12 */ body { font-family: Tahoma, sans-serif; /* line-height: 125%; */ color: black; background-color: white; font-size: small; } * html body { /* http://www.info.com.ph/~etan/w3pantheon/style/modifiedsbmh.html */ font-size: x-small; /* for IE5.x/win */ f\ont-size: small; /* for other IE versions */ } h1 { font-size: 165%; font-weight: bold; border-bottom: 1px solid #ddd; width: 100%; text-align: left; } h2 { font-size: 152%; font-weight: bold; text-align: left; } h3 { font-size: 139%; font-weight: bold; text-align: left; } h4 { font-size: 126%; font-weight: bold; text-align: left; } h5 { font-size: 113%; font-weight: bold; display: inline; text-align: left; } h6 { font-size: 100%; font-weight: bold; font-style: italic; display: inline; text-align: left; } a:link { color: #039; background: inherit; } a:visited { color: #72007C; background: inherit; } a:hover { text-decoration: underline; } a img, img[usemap] { border-style: none; } code, pre, samp, tt { font-family: monospace; font-size: 110%; } caption { text-align: center; font-weight: bold; width: auto; } dt { font-weight: bold; } table { font-size: small; /* for ICEBrowser */ } td { vertical-align: top; } th { font-weight: bold; text-align: left; vertical-align: bottom; } li { text-align: left; } dd { text-align: left; } ol ol { list-style-type: lower-alpha; } ol ol ol { list-style-type: lower-roman; } td p:first-child, td pre:first-child { margin-top: 0px; margin-bottom: 0px; } table.table-border { border-collapse: collapse; border-top: 1px solid #ccc; border-left: 1px solid #ccc; } table.table-border th { padding: 0.5ex 0.25em; color: black; background-color: #f7f7ea; border-right: 1px solid #ccc; border-bottom: 1px solid #ccc; } table.table-border td { padding: 0.5ex 0.25em; border-right: 1px solid #ccc; border-bottom: 1px solid #ccc; } span.gui-object, span.gui-object-action { font-weight: bold; } span.gui-object-title { } p.horizontal-rule { width: 100%; border: solid #cc9; border-width: 0px 0px 1px 0px; margin-bottom: 4ex; } div.zz-skip-header { display: none; } td.zz-nav-header-cell { text-align: left; font-size: 95%; width: 99%; color: black; background: inherit; font-weight: normal; vertical-align: top; margin-top: 0ex; padding-top: 0ex; } a.zz-nav-header-link { font-size: 95%; } td.zz-nav-button-cell { white-space: nowrap; text-align: center; width: 1%; vertical-align: top; padding-left: 4px; padding-right: 4px; margin-top: 0ex; padding-top: 0ex; } a.zz-nav-button-link { font-size: 90%; } div.zz-nav-footer-menu { width: 100%; text-align: center; margin-top: 2ex; margin-bottom: 4ex; } p.zz-legal-notice, a.zz-legal-notice-link { font-size: 85%; /* display: none; */ /* Uncomment to hide legal notice */ } /*************************************/ /* Begin DARB Formats */ /*************************************/ .bold, .codeinlinebold, .syntaxinlinebold, .term, .glossterm, .seghead, .glossaryterm, .keyword, .msg, .msgexplankw, .msgactionkw, .notep1, .xreftitlebold { font-weight: bold; } .italic, .codeinlineitalic, .syntaxinlineitalic, .variable, .xreftitleitalic { font-style: italic; } .bolditalic, .codeinlineboldital, .syntaxinlineboldital, .titleinfigure, .titleinexample, .titleintable, .titleinequation, .xreftitleboldital { font-weight: bold; font-style: italic; } .itemizedlisttitle, .orderedlisttitle, .segmentedlisttitle, .variablelisttitle { font-weight: bold; } .bridgehead, .titleinrefsubsect3 { font-weight: bold; } .titleinrefsubsect { font-size: 126%; font-weight: bold; } .titleinrefsubsect2 { font-size: 113%; font-weight: bold; } .subhead1 { display: block; font-size: 139%; font-weight: bold; } .subhead2 { display: block; font-weight: bold; } .subhead3 { font-weight: bold; } .underline { text-decoration: underline; } .superscript { vertical-align: super; } .subscript { vertical-align: sub; } .listofeft { border: none; } .betadraft, .alphabetanotice, .revenuerecognitionnotice { color: #f00; background: inherit; } .betadraftsubtitle { text-align: center; font-weight: bold; color: #f00; background: inherit; } .comment { color: #080; background: inherit; font-weight: bold; } .copyrightlogo { text-align: center; font-size: 85%; } .tocsubheader { list-style-type: none; } table.icons td { padding-left: 6px; padding-right: 6px; } .l1ix dd, dd dl.l2ix, dd dl.l3ix { margin-top: 0ex; margin-bottom: 0ex; } div.infoboxnote, div.infoboxnotewarn, div.infoboxnotealso { margin-top: 4ex; margin-right: 10%; margin-left: 10%; margin-bottom: 4ex; padding: 0.25em; border-top: 1pt solid gray; border-bottom: 1pt solid gray; } p.notep1 { margin-top: 0px; margin-bottom: 0px; } .tahiti-highlight-example { background: #ff9; text-decoration: inherit; } .tahiti-highlight-search { background: #9cf; text-decoration: inherit; } .tahiti-sidebar-heading { font-size: 110%; margin-bottom: 0px; padding-bottom: 0px; } /*************************************/ /* End DARB Formats */ /*************************************/ @media all { /* * * { line-height: 120%; } */ dd { margin-bottom: 2ex; } dl:first-child { margin-top: 2ex; } } @media print { body { font-size: 11pt; padding: 0px !important; } a:link, a:visited { color: black; background: inherit; } code, pre, samp, tt { font-size: 10pt; } #nav, #search_this_book, #comment_form, #comment_announcement, #flipNav, .noprint { display: none !important; } body#left-nav-present { overflow: visible !important; } } PKr.hcPKfUIOEBPS/dcommon/oracle.gifJGIF87aiyDT2F'G;Q_oKTC[ 3-Bq{ttsoGc4I)GvmLZ).1)!ꑈ53=Z]'yuLG*)g^!8C?-6(29K"Ĩ0Яl;U+K9^u2,@@ (\Ȱ Ë $P`lj 8x I$4H *(@͉0dа8tA  DсSP v"TUH PhP"Y1bxDǕ̧_=$I /& .)+ 60D)bB~=0#'& *D+l1MG CL1&+D`.1qVG ( "D2QL,p.;u. |r$p+5qBNl<TzB"\9e0u )@D,¹ 2@C~KU 'L6a9 /;<`P!D#Tal6XTYhn[p]݅ 7}B a&AƮe{EɲƮiEp#G}D#xTIzGFǂEc^q}) Y# (tۮNeGL*@/%UB:&k0{ &SdDnBQ^("@q #` @1B4i@ aNȅ@[\B >e007V[N(vpyFe Gb/&|aHZj@""~ӎ)t ? $ EQ.սJ$C,l]A `8A o B C?8cyA @Nz|`:`~7-G|yQ AqA6OzPbZ`>~#8=./edGA2nrBYR@ W h'j4p'!k 00 MT RNF6̙ m` (7%ꑀ;PKl-OJPKfUIOEBPS/title.htm Oracle Database Advanced Replication Management API Reference, 11g Release 1 (11.1)

Oracle® Database

Advanced Replication Management API Reference

11g Release 1 (11.1)

B28327-03

August 2008


Oracle Database Advanced Replication Management API Reference, 11g Release 1 (11.1)

B28327-03

Copyright © 1996, 2008, Oracle. All rights reserved.

Primary Author:  Randy Urbano

Contributors:  N. Arora, S. Balaraman, Y. Chan, A. Downing, C. Elsbernd, Y. Feng, J. Galagali, D. Goddard, L. Kaplan, V. Krishnamurthy, A. Lakshminath, P. Lane, J. Liu, E. Lu, P. McElroy, V. Moore, M. Pratt, A. Rajaram, N. Shodhan, W. Smith, J. Stamos, J. Stern, M. Subramaniam, L. Wong, D. Zhang

The Programs (which include both the software and documentation) contain proprietary information; they are provided under a license agreement containing restrictions on use and disclosure and are also protected by copyright, patent, and other intellectual and industrial property laws. Reverse engineering, disassembly, or decompilation of the Programs, except to the extent required to obtain interoperability with other independently created software or as specified by law, is prohibited.

The information contained in this document is subject to change without notice. If you find any problems in the documentation, please report them to us in writing. This document is not warranted to be error-free. Except as may be expressly permitted in your license agreement for these Programs, no part of these Programs may be reproduced or transmitted in any form or by any means, electronic or mechanical, for any purpose.

If the Programs are delivered to the United States Government or anyone licensing or using the Programs on behalf of the United States Government, the following notice is applicable:

U.S. GOVERNMENT RIGHTS Programs, software, databases, and related documentation and technical data delivered to U.S. Government customers are "commercial computer software" or "commercial technical data" pursuant to the applicable Federal Acquisition Regulation and agency-specific supplemental regulations. As such, use, duplication, disclosure, modification, and adaptation of the Programs, including documentation and technical data, shall be subject to the licensing restrictions set forth in the applicable Oracle license agreement, and, to the extent applicable, the additional rights set forth in FAR 52.227-19, Commercial Computer Software--Restricted Rights (June 1987). Oracle USA, Inc., 500 Oracle Parkway, Redwood City, CA 94065.

The Programs are not intended for use in any nuclear, aviation, mass transit, medical, or other inherently dangerous applications. It shall be the licensee's responsibility to take all appropriate fail-safe, backup, redundancy and other measures to ensure the safe use of such applications if the Programs are used for such purposes, and we disclaim liability for any damages caused by such use of the Programs.

Oracle, JD Edwards, PeopleSoft, and Siebel are registered trademarks of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners.

The Programs may provide links to Web sites and access to content, products, and services from third parties. Oracle is not responsible for the availability of, or any content provided on, third-party Web sites. You bear all risks associated with the use of such content. If you choose to purchase any products or services from a third party, the relationship is directly between you and the third party. Oracle is not responsible for: (a) the quality of third-party products or services; or (b) fulfilling any of the terms of the agreement with the third party, including delivery of products or services and warranty obligations related to purchased products or services. Oracle is not responsible for any loss or damage of any sort that you may incur from dealing with any third party.

PK@PKfUIOEBPS/img/repma015.gifGIF87aX`?**?***UU?UUU????**?*******?*******U*U?*U*U*U**?*****?*****?*****?***UU?UUUU*U*?U*U*U*UUUU?UUUUUUUU?UUUUU?UUUUU?UUUUU?UUU?**?***UU?UUU?????**?***UU?UUU?????**?***UU?UUU?ժժ?ժժժ???**?***UU?UUU?????***UUU,X` H*\ȰÇ#JH1"@,h „8`A&TaC!F8bE1fԸcGAJ0 <0!B~ H*\ȰÇ#JHŋ3jȱǏ #R>~!C 2dȐ!C 2dȐ )Q!C 2dȐ!C 2dȈ򅔨_Ȑ!C 2dȐ!C 2dDBJ/dȐ!C 2dȐ!C 2|!%2dȐ!C 2dȐ!C _ 2dȐ!C 2dȐ!C/_H 2dȐ!C 2dȐ!CF/D}B 2dȐ!C 2dȐ!#˗_|0@߿ O@8>~ H*\ȰÇ#JHŋ3jȱǏ #˗0_ |O| 2dȐ!C 2dȐ!C/_|`>#`> 2dȐ!C 2dȐ!CF/>}G_ 7?2dȐ!C 2dȐ!C _>o`>O |߿| HP?$XA .dC%NXE5nGC@#0@?}?  <0… :|1ĉ+Z1ƍ;z2|/|߿|#O>~!C 2dȐ!C 2dȐK/_|~#`> 2dȐ!C 2dȐ!CF/D}B 2dȐ!C 2dȐ!#R>~!C 2dȐ!C 2dȐ )Q!C 2dȐ!C 2dȈ򅔨_Ȑ!C 2dȐ!C 2dDBJ/dȐ!C 2dȐ!C 2|!%2dȐ!C 2dȐ!C @'p "LhP?$XA .dC%NXE5nGO@ DР>~ H*\ȰÇ#JHŋ3jȱǏ #O@ D!?$XA .dC%NXE5nG!˗H"E)RH"E)RH'RH"E)RH"E)R|)RH"E)RH"E|0'p "Lp!ÆB(q"Ŋ/b̨q#ǎ? q|O@ DPB >QD-^ĘQF=~#|  <0… :|1ĉ+Z1ƍ;z2G~ ? 4xaB 6tbD)VxcF9vqb?~`>'p "Lp!ÆB(q"Ŋ/b̨q#ǎ?F08`A&T | <0… :|1ĉ+Z1ƍ;zQ|  <0…˗,h „ 2l!Ĉ'Rh"ƌ7r#D} o`>~ H*\X_|8`A&TaC!F8bE1fԸcG!˗/_}'P ,h „ ̗,h „ 2l!Ĉ'Rh"ƌ7r#}?  <0…O@ DPB >QD-^ĘQF=~`>  ? 4xaB 6t"D$XA .dC%NXE5nQ|8> 4xaB 6t| H*\ȰÇ#JHŋ3jȑ>7P ?$XA .dC1bĈ#F1bĈ#F1bĈ#F|(,h „ 2l!DE1bĈ#F1bĈ#F1bĈ#FT0 O@ DPB >_#F1bĈ#F1bĈ#F1bĈ 'p A H*\ȰÇ1bĈ#F1bĈ#F1bĈ#Fqa?? 4xaB 6t"D"F1bĈ#F1bĈ#F1bĈ#6ܗ/_|˗_Ć`K@~"2/_>~E/_Ĉ#F1bĈ#F1bĈ#F1bDO>~-| ؐ_}̷o| =|/_Ĉ#F1bĈ#F1bĈ#F1bDo ?/?O_>}`/'_|ۗ|˗| 0˧߿/_~˗ϟ|˗߿߿|?}/߿O@ DPB >QD-^ĘQF W0|?} _> ϟ@~/_'|/?+/߿}+_O|o߿|O`>~o`'߿|G_>=zѣG=zq"?}/?'0߿|3؏| /|O`>#/_}'0_|/Ao` '0~/߿|O@8`A&TaC!F8bE1fԸcGGp|(_?}/߿ϟ@0@/߿Ǐ_> O'P`_?}o_>~O@'P?_ _}| H*\ȰÇ#JHŋ3jȱ#A~ '>'|'0?}7'0߿|O ? '0߿|G_W0?~/70߿|߿|/߿|O ?#/G=zѣG=z8>70?_|?}+/_|ӗ/_O_|O`ӧ}/?'0?~_>?}/˗/>O_|˗/_O@ DPB >QD-^ĘQF ѣGѣG=zѣG=NϣG=ϣG=zѣG=zOG=z=zx_>=zѣG=zq"?}=z|=zѣG=zD~$XA .dC 'QD%J(QD%J(QD%Jx>%J(QĆI(QD%J(QD%J(QD%OD%J(|%J(QD%J(QD%J(QD(QD%Jl/D%J(QD%J(QD%J(QA~$J(QD'QD%J(QD%J(QD%Jx>%J(QĆI(QD%J(QD%J(QD%OD%J(|%J(QD$H"$H"$H"$H">$XA .dC 'QD%J(QD%J(QD%Jx_>$XA .dC  <0… :|1ĉ+Z1ƍ;P <0… ˗aÆ 6O@ DPB >QD-^ĘQF=~/_>~ A $H A $H AR/? A $H A $H )˗H A $H A $Hӧ/_|$H A $H A dC} 8? 4xaB 6tbD)VxcF9vdȎ8P>$XA .dC%NXE5nG!=O| H*\ȰÇ#JHŋ3jȱǏ CO@~ H*\ȰÇ#JHŋ3jȱǏ C0@ H*\ȰÇ#JHŋ3jȱǏ˗/> ˗/? A $H A $8P`?$XA .4/_| H*\ȰÇ#JHŋ3jȱǏ'p ~ H*\h0_~ H*\ȰÇ#JHŋ3jȱǏ˗~$B~@ $H A $H ˗/߾/_~ A"$H A $H A/_|˗O`| $H A $H A`>׏ @},h „ 2l!D H*\ȰÇ#JHŋ3jȑ#|o@$XA .dCO@ DPB >QD-^ĘQF(?~O@ DPB >_#F1bĈ#F1bĈ#F1bĈ ˗o?~ ? 4xaB 6tC"F1bĈ#F1bĈ#F1bĈ#*̗/_1bĈ#F|/_Ĉ#F1bĈ#F1bĈ#F1bD8p>$XA .dC1bĈ#F1bĈ#F1bĈ#F| <0… :|1|#F1bĈ#F1bĈ#F1bĈ˗O?/b||1bDE1bĈ#F1bĈ#F1bĈ#FtO_A~1|0|1bĈ1bĈ#F1bĈ#F1bĈ#F萟 'P?~'_|˧|̧o|?}ӗO?~?O>~O`>ӗo_Ĉ1bĈ#FQDEQDEQDEQDEC@|O`>'@Ǐ_ /_>70۷} '0_'p "L_>$XA .dC%NXE5nؑ ?}/?'0߿|+߾#/?} /?#o| /| '0|/ѣG=zѣG=N䧯`>0@/߿ ߿O߿|/߿/߿߿_|߿_/,h „O@ DPB >QD-^ĘQF W> O?_>'?_@~#/?}_|oNjyѣG=zѣG3/_}/_>~˧Oӗ/'0?~_|ϟ| W|'0?'p_>}ӗoGyѣG=zѣGc|7ѣG=z#<#&>$XA .da>:/,h „ 2l!Ĉ'Rh"ƌ7rH>=zx_>=zѣG=zq"?}=z|=zѣG=zD~=zx_>=zѣG=zq"@'p "Lp!ÆBH_>%J(QD%J(QD%J(QăI(QD%6OD%J(QD%J(QD%J( ?}%J(QD (QD%J(QD%J(QD%J%J(QD%J(QD%J(QăI(QD%6OD%J(QD%J(QD%J( ?$XA .dC'p "Lp!ÆB(q"Ŋ/b̨q#ǎ8`A&Ta|1dȐ!C8`A&TaC!F8bE1fԸcG-˗H A $H A $H$H A $H A $H$H A $H A dD$? 4xaB 6tbD)VxcF9vdH8p ,h „ 2l!Ĉ'Rh"ƌ7r#Ȑ8P ?$XA .dC%NXE5nG!=O| H*\ȰÇ#JHŋ3jȱǏ CO~ H*\ȰÇ#JHŋ3jȱǏӷ$H(? 4xaB 6tbD)VxcF9vQ"| <0…˗,h „ 2l!Ĉ'Rh"ƌ7rcD$ <0…˧? 4xaB 6tbD)VxcF9v1b|/_|@D/? A $H A $~O$~@ $H A $H ˗/>~/_>} A $H A $H A*O}? 4xaB 6t"D$XA .dC%NXE5n`>`> 4xaB 6tbā H*\ȰÇ#JHŋ3jȑc|ӗ/|رcǎرcǎ;vرcǎ9˗/_ ̗/_;vX_;vرcǎ;vرc|/_|:vرA:vرcǎ;vرcǎ8?$XA .dC1bĈ#F1bĈ#F1bĈ#Fp|  <0… :||#F1bĈ#F1bĈ#F1bĈ'P ? o ? 4x`~C}!BO@ DPB >QD-^ĘQF g_}̷0| )̷o|9O`|ѣG=zѣG=N`>/}+/_>˷O '_|O_|˧߾|̧o|?}/'P?~#?}ۗ/?O_}ѣG=zѣG'W_۷|/}'0/@~/߿|> o߾ _O|o|O`>~ (0O`>O(_>$XA .dC%NXE5nؑ ?}O߿|70| 70߿| /@ӷ| G0߿}G_#_>~ G0@}O`O`"˷П>=zѣG=zcA~ 'P|/߿_/߿8_> '߾| /|Ǐ_>'0? /߿߿_/߿߿| H@ ܗ/?$XA .dC%NXE5n8> O߾ӷ|/|/>~ӷO```_>o`>'O?}o?/|_>˗_ǎ;vرcǎ;v8> ϟ|/>}˗@}ϟ|/_~/_~/_~O`ӧ|?} ~O߿|ӗ/_ӧ߿|O@g|O@ DPB >QD-^ĘQF0_ǎ/_A} >'p "Lp!ÆB(q"Ŋ/b̨q#DžuD/;"W_8` H*\ȰÇ#JHŋ3jq!?};vؑ|'p 8`A&TaC!F8bE1fԸB~:vر#C O|(P_| H*\ȰÇ#JHŋ3jq!?};vؑ|'P? ԗ/,h „ 2l!Ĉ'Rh"ƌ7r\O_ǎ;vd/_}WP_|;vرcǎ;vرB~:vر#Cӗ_A}uرcǎ;vرcǎ رcǎ c_A}uرcǎ;vرcǎ رcǎ 囨/_;vرcǎ;vq!?};vؑ|ױcǎ;vرcǎ;.䧯cǎ;2o|:vرcǎ;vرcDžuرcGMԗ/_ǎ;vرcǎ;v츐;v| H A}'p "Lp!ÆB(q"Ŋ/b̨q#DžuرcGMԗ/_ǎ;vرcǎ;v츐;v_رcǎ;vرcǎױcǎ7Q_|;vرcǎ;vرB~:vر#C&˗cǎ;vرcǎ;v\/@~,h „ 2l!ĈO@ ˗? 4xaB 6tbD)VxcF9.P <0… ˗aÆ 6O@ ˗? 4xaB 6tbD)VxcF9v_|>~HP_|?~Ǐ?~ǏGǏ?~Ǐ?~/?ԗ/Ǐ?~Ǐ?~>}˗O>}>~/_?~Ǐ?~#G} 8? 4xaB 6/_>$XA .dC%NXE5n#G (p,h „ 2l8P_| H*\ȰÇ#JHŋ3jȱǎ80,h „ 2lHP_| H*\ȰÇ#JHŋ3jȱǎ8,h „ 2lHP_| H*\ȰÇ#JHŋ3jȱG(? 4xaB 6,/_>$XA .dC%NXE5n|ǁǏ?~Ǐ?~ܗ/_?ԗ/Ǐ?~Ǐ?~|}|>~Ǐ?~ǏǂǏ?~Ǐ?~ǏǏ?~Ǐ?~_?ԗ/Ǐ?~Ǐ?~c|ǁǏ?~Ǐ?rܗ/~˷ǏǏ?~Ǐ?~O|O} <0… ˗? 4xaB 6tbD)VxcF9vx_|)/_>~?nԗ/Ǐ?~Ǐ?~}簟||>~Ǐ?~Ǐ˗oE~E}}Ǐ?~Ǐ!˗/_?GǏ?~Ǐ?6/_}8ۗ/>?Fԗ/Ǐ?~Ǐ?~qa|8_|}P_|?~Ǐ?~DŽ~cC}}>裏>裏> ˗o?$XA˗o &L0aB}'p "Lp!ÆB(q"Ŋ/b̨q#ǎ ˗/˗ǏǏ?~Ǐ?~o_|}O_|>~4/_?~Ǐ?~c?}߾|q|>~Ǐ?~GG~?}}Ǐ?~Ǐ˗o_ ӗ/>;˗Ǐ?~Ǐ?~O_|8g0_|˧ǍǏ?~Ǐ+˗O_3`? 4x߾q}1?,˗ϣG=zѣG=z/_|<>~/߿} |O?~˗?P_|=zѣG=z#}>~o`_|]/@~?~˗ϣG=zѣG=zO_|y<0@/߿| <}0@ O K8P_| H*\ȰÇ#JHŋ3jȱ#B~1a|ӷ|/džob _}'p A}'p "Lp!ÆB(q"Ŋ/b̨q#ǎ˗O_? O?}O_>}<>/_>~ O ?S/_>=zѣG=zQb?}Da|S/_>=zѣG=z"|#F~|ѣG=zѣG=./_>~#滘`>߾|O@ $/_>$XA .dC%NXE5nx_|uO`&|'p " <0… :|1ĉ+Z1ƍ-˗O_'P߾|˗?}/_?'P?~O`} '_|˗ϟ|o} H'p "Lp!ÆB(q"Ŋ/b̨q#Nj˧F߿|o|| o}߿}/@~/߿|/_|8`A'p "Lp!ÆB(q"Ŋ/b̨q#Go| /| '0߿|`_ /@ #|رcǎ;vرcǎ;vDO_|U짏| /| '0? /߿_/߿| ? oo_|'p "Lp!ÆB(q"Ŋ/b̨q#ǎ˗O_O`>_>>~}?~@~_>Ǐ?~Ǐ?~_|E/>}?}߿|/_>~/_~˷O`?}|˗Ǐ?~Ǐ?~}#|˗O_?~Ǐ?~F~|>ۗ/>?~G}G}G}@? 4xaB 6/_|8`A&TaC!F8bE1fԸcG ۗ/~ A^/~ A $H A $Ȍ$H˷H A $H A c?}d~$H A $H A9p_|_| $H A $H A/_>~ A/~ A $H A $H ˗o?˗o? A $H A $H~$H A $H AY_|/_>}'p "Lp!ÆB(q"Ŋ/b̨q#ǎ?Lo_|o_| 2dȐ!C 2dȐ!C:/_~!ӗ/!C 2dȐ!C 2dȉ˷/$B~2dȐ!C 2dȐ!C y߾| 9_| 2dȐ!C 2dȐ!Cr/_>~˗o!C 2dȐ!C 2dH˷ϟ~2dȐ!C 2dȐ!C |/_|B 2dȐ!C 2dȐ!C&/_>~˗o!CRH!RH!RH!RCۗ/> HP`?}O@ DPB >QD-^ĘQF=~r"|C/_|D)RH"E)RH"E/_>~˧H"E)RH"E)RH˷o_|)RH"E)RH"E|/_>}OH"E)RH"E)RA3/|"E)RH"E)RH" ˗| 'p_|D)RH"E)RH"E˗|߾})RH"E)RH"EO>}ӧO?_? 4xaB 6tbD)VxcF9vdH8p_? 4xaB 6tbD)VxcF9vdH8Pϟ? 4xaB 6tbD)VxcF9vdȇ80߿|? 4xaB 6tbD)VxcF9vdH ? 4xaB 6tbD)VxcF9vq>}p|'p "Lp!ÆB(q"Ŋ/b̨q#ǎ?JO|8`A&T`|O@ DPB >QD-^ĘQF=~08`A&T |'p "Lp!ÆB(q"Ŋ/b̨q#ǎ?FO@~O@ DPBO@ DPB >QD-^ĘQF=~`>70,h „ ? 4xaB 6tbD)VxcF9v1"||8`A&TР?$XA .dC%NXE5nLj _'p "Lp!ÆB <0… :|1ĉ+Z1ƍ9˗/?O@$XA .dC'p "Lp!ÆB(q"Ŋ/b̨q#G |رcǎرcǎ;vرcǎ9O|O@ DPB >_#F1bĈ#F1bĈ#F1bĈ 80? H*\ȰÇ1bĈ#F1bĈ#F1bĈ#FQ>$? 4xaB 6tC"F1bĈ#F1bĈ#F1bĈ#.0'p "Lp!ÆB/_Ĉ#F1bĈ#F1bĈ#F1bĆ˗| +`~'0|+@~"./_>~E8_#F1bĈ#F1bĈ#F1bĈ3/> 3/> #/b|/_|/?"F/bĈ#F1bĈ#F1bĈ#F1C~ o| ܗ_>/|O ?}'p_|ۗ@~`>}/_~˗?}/߿|/_>˗,h| H*\ȰÇ#JHŋ3jȱ#A~ o߾}+/߿}_O`o?/?`>~?}>'||O Ϣ|=zѣG=zD~ o`_O`o`#/|O߿|ӷ|O`>_>'?}aϣGyGyGyD@ /߿߿| 0@/߿|_/߿_߿| >O?~ۗ|(߿|߿߿| ߾|8`AO@ DPB >QD-^ĘQF G__`|ӷ|/| O߾'0߿|'0_|/߿|o`>'7_@~ g_>=zѣG=zq"?}O?}O_>}7>ϟ| /ӗ/_/_>}W0?/_>}˗|˗|˗o|O_|˗/_?$X? <0… :|1ĉ+Z1ƍ)ױcǎ˷p_>;vرcǎ;vرD~:vر#C˗/;vرcǎ;vq"?};vؑ|'P?$XA .dC%NXE5n8;v_>8@ O@ DPB >QD-^ĘQF رcǎ #`> ̧? 4xaB 6tbD)VxcF9.䧯cǎ;2o>$XP>$XA .dC%NXE5n丐;v_>8`|8`A&TaC!F8bE1fԸB~:vر#C O@ />$XA .dC%NXE5n丐;v_>˗_A}uرcǎ;vرcǎ رcǎ K/_| ˧cǎ;vرcǎ;v\O_ǎ;vd/B~ԗO_ǎ;vرcǎ;v츐;v_رcǎ;vرcǎױcǎ7Q_>};vرcǎ;vرB~:vر#C&˧cǎ;vرcǎ;v\O_ǎ;vd/D}uرcǎ;vرcǎ رcǎ_>$X|8`A&TaC!F8bE1fԸB~:vر#C&˧cǎ;vرcǎ;v\/@},h „ 2l!Ĉ'p  <0… :|1ĉ+Z1ƍO@ DPBǐ!C O@ ˧? 4xaB 6tbD)VxcF9v_|>~HP_>}?~Ǐ?~ǏGǏ?~Ǐ?~/?ԗOǏ?~Ǐ?~|}|>~Ǐ?~Ǐ/_}G}}Ǐ?~Ǐ9'p A H*\Ȱ@}'p "Lp!ÆB(q"Ŋ/b̨q#ǎ9O@8`A&TaÁO@ DPB >QD-^ĘQF=vO@8`A&TaÁO@ DPB >QD-^ĘQF=v08`A&TaCO@ DPB >QD-^ĘQF=z0@ H*\ȰaA}'p "Lp!ÆB(q"Ŋ/b̨q#ǎ=˗/_}?~/?~Ǐ?~G}#A}}Ǐ?~Ǐ?˗Ǐ ˧Ǐ?~Ǐ?~߾|?~,/?~Ǐ?~G>~XP_>}?~Ǐ?~ǏcA}}Ǐ?~Ǐ=˗/_>~?~/?~Ǐ?~#}O_|}Q_>}?~Ǐ?~nj˗o? ܗ/~ H*\Ȱ|8`A&TaC!F8bE1fԸcG˗B~F}}Ǐ?~Ǐ)ۗ/~˗o1˧Ǐ?~Ǐ?~(|Q/~?ZԗOǏ?~Ǐ?~"|/_|>~/?~Ǐ?~cC珣}cD}}Ǐ?~Ǐ˗/˗ǏǏ?~Ǐ?~L/_>}>/_>~?6ԗOǏ?裏>裏>裏 |O@ Dh߾|K0a„ &ԗO,h „ 2l!Ĉ'Rh"ƌ7r |_|}P_>}?~Ǐ?~˧NJ˷GǏ?~Ǐ=ӗ/߾W0_EǁǏ?~Ǐ9˗/?3`>Ǐ?~Ǐ3ۗ/>7p_>~/~cG}}Ǐ?~Ǐ˗Fo߾۷|˧`?$XA ԗO,h „ 2l!Ĉ'Rh"ƌ7rH_|q_?} /|˗/? 䧯| ˧? 4xaB 6tbD)VxcF9v|/_|< o>~}h_|a?~?}S/>=zѣG=z|HpӗOӧ#~wQ|_>S/8`A&TaC$XA .dC%NXEӗ/>5jo_|Qϟ|o?k`> 4xaB 6 <0… :|1ĉ+Z1#C~QFob _}'p A}$H?$XA .d,h „ 2l!Ĉ'Rh"ƌ ˗O_?5j/_>~ O ?S/O@ DPB? 4xaB 6tbD)VxcƃO|5>/_>}O_|˗/_?k/_>5"ԗ/?5jԨQF5j/_|4:'0ƅ4/_>~˧!|4jԈP_|4jԨQF5jԨ}_|ۗ}/'_|o}O |/_>/_>w|iL/ӨQ#B}ӨQF5jԨQƆO?} ߿|o߿_߿|/?ϟ}?~ 4`> 4x@} Hp |8`A&T!B}kذaÆ 6lذaÆ 6lذaÆ 6\/_>}6,/|70| /?+O`>O>O ?6$`> 4x>$8_| H*\|5lذaÆ 6lذaÆ 6lذaÆ &/_>}6O?~_O` _> '0|/~|? 4x?} H'p O@ DPBaÆ 6lذaÆ 6lذaÆ 6lؐ|k_>O`O`>@~+O`>_>~a˷? 4x!/_>$XA .dP_|6lذaÆ 6lذaÆ 6lذaÆ /_>~ ˗O>~ ϟ| _>ӗ/? O`ӧ|?}!C~װaCkذaÆ ˗_Æ 6lذaÆ 6lذaÆ 6lذaÁ˷_Æ 6lذBaÆ ˗aÆ 6D/_> 6lذaÆ 6lذaÆ 6lذaÆ ˗O_ 6lذaCǯaÆ ˗aÆj!җ/?$XA .dC%NXE˗/?5j/_|4j4/_>5"ԗ/?5jԨQF5jo_|iOa|it/_>}4jD/_>5"ԗ/?5jԨQF5j/_|4Ṙ0?4./_}5./F˗ϟF5jԨQF5jO_|4*/_>˧| '0ƄOƆӨQ#B}ӨQF5jԨQF˗O_?o߿|O ?i˗o?#˗OFOF5jԨQF5&/_}4/0@? 4x_?}C!B"D/_>"D!B'p |8`A&TaC!F8bE1f/_>}4_'?˗F˧QF8 ,h „ 2l!Ĉ'Rh"ƌ˗F/߿|˗|˧F˧QƂ 8,h „ 2l!Ĉ'Rh"ƌ˗o?ۗ/>5/F O|8`A&TaC!F8bE1fH_|mX_|mܸ_|7n`>8`A&TaC!F8bE1fx|m_|mܸQ |6nH`>'p "Lp!ÆB(q"Ŋ/b̨1}Ѣ}qF۸q#A~˷qƍ7nܸqƍ˗/˗ƍ˗oƍoƍ7nܸqƍ7>/_}˗/7&/ƍ ˧oƍ7nܸqƍ7J/_>}6&ܗ/~7n\/_7oƍ7nܸqƍ7V/_>~ ۗ/>7nl/_7nܸqƍ7nܸqƍ˗o?oƍ˷qƂ? 4xaB 6tbD)VxcF˧E~qF۸q@~ ? 4xaB 6tbD)VxcF˗_Doƍ˷q~O`?}qƍ7nܸqƍ1ۗ/> ˗ƍ/˗oƌ!|۸qƍ7nܸqƍ˧B~qƌ۸Ѣ}ǰ_|mܸqƍ7nܸqƌǏ |۸qF~mH_|E/_}6nܸqƍ7nܸq#F۷/_}6nܸQ |6no_|Y/~7nܸq6h6(#˧߿/,h „ 2lؐ_|:tؐ_|9lO_|:tСC:tСC:tСC:T/_>~ϡC:th_|:t߾|sp}СC:tСC:tСC:tA?˗ϟC:t_|:t_|9t_|9tСC:tСC:tСC:tX_|߿|oC:t_|:tX߾|sa?}sСC:tСC9C9C9C94@߿|_O@ DPB ˗ϡC˗/>s߾|sСC:tСC:tСC:t_|_sСC˗ϡC˗O_?!|sСC:tСC:tСC:t_|/_ϡC:t/_>2/_}"/@}˗ϟC˷ϟC:tСC:tСC:tСÄ70@~ӗ/_?:t!|:t߾| /߿}/@~/_>}8`A&TaC!F8bE1fh_|6nܸ |6Z/_}4>'_F~qƍ7nܸqƍ ˗ƍ7/|x߾|(`>o@ H˷,h „ 2l!Ĉ'Rh"ƌ˗ƍ7/|X|8_O?m/_>}6nܸqƍ7nܸQ|'p "Lp!Æ˗?'0}8p /_|8`A 7ӗ/?"/_>~ H*\ȰÇ#JHŋ3^0 <0… :t/߿}7p/_}8`A&TAaÆ 6lذaÆ 6lذaÆ 6lذaÃ8`A&TaC80߿~o`8|O@ DPB ˗_Æ 6lذaÆ 6lذaÆ 6lذaÆ'p "Lp!Æ'p`>o`|O@ DPB ӗ/?$XA .dC%NXE5nѣ|O߾9/_>~}4ȏ߿|}/_}>~Ǐ?~Gϟ|-/_}4Cc>/_|>~Ǐ?~Ǐ˗}/_~_| ˗߿}o_>~/?~O_>}b?}Ǐ?~Ǐ?6/_}6_ '0?#o?o|O ||} H˧,h „ 2l!Ĉ'Rh"ƌ7r!|o`> G_>70| '0߿| /?}u/_>~?~Ǐ?RO@ DPB >(|O@ $o`O`㗏`>O`>_ۗB ӗ/> H*\ȰÇ#JHŋ30 <0… :|>$X_>_>#o|O`>_ /?~!D|O@ DPB >QD-^Ĉ|,h „ 2l!D8`A ӗOӧ߿|˧Oϟ| '0|ϟ|_|!D? <0… :|1ĉ+Z"|'p "Lp!ÆB/_|8`A&TaC ۗ/>!B"D!B"D!BH_| B"D˗o?!B~"D!B"D!B"D"D!B!|"D!/~!B"D!B"D!B_| B"D!˗/?!"/_|"˷D!B"D!B"D!0'p "Lp!ÆB4O_|"FX0_|/~1bĈ#F1bĈ#F1bă8?$XA .dC ˧_Do_|ӗ/'0@~O` ˗_Ĉ#F1bĈ#F1bĈO@8`A&TaC!2/_~O}?~߾o߾'~"*/~#F1bĈ#F1bĈ#Fl08`A&TaC!>/_>~o`o_ 7_˗o#F1bĈ#F1bĈ#>08`A&TaC!F/_} o`>'߾|o`'PO@ /_>~ H*\ȰÇ#JHE  <0…(P,h „ 2l!Ĉ˧Do??~@~$/~%J(QD%J(QB} (p,h „ /_|2dȐ!C 2dȐ@~`>}ӗ/_|| ϟ|Р}ǐ!C 2dȐ!C 2dȐ!C O@8`A&T|1dȐ!C 2dȐ!CǏ!| 2d|1dȐ!C 2dȐ!C 2dȐ!C˗O@~ǐ!C ǐ!C 2dȐ!C ۗ/> cȐ!ÃǏ!C 2dȐ!C 2dȐ!C 2$/_|O_|1dȐ!Å1dȐ!C 2dȐ!C׏!C /~ 2dȐ!C 2dȐ!C 2dȐA 'P|8`A&TaC!F8bEϢE˷ϟE-ZhѢE-"OO@ DPB > ,h „ 2l(|9ta?}sСC:tСC:taB O߿'p "Lp!ÆBt/,h „ 2lH߾|saB~СC:tСC:tСÅ O࿁'p "Lp!ÆBt/_Ĉ#Fl/_>}"Fdo_|E1bĈ#F1bĈ#/_|/_|#F1bĈ1bĈ˗_Ĉ˗o_Ĉ#F1bĈ#F1|'p_|E1bĈ#>/bĈ#F/_>~#/_>~#F1bĈ#F1bĈ8p>$XA .dC1bĈۗ/>!˗O_#F1bĈ#F1bĈ8,h „ 2l!ĈE1bĈ˧_ą˷_Ĉ#F1bĈ#F1bDGp_|Ex`>'p A+X| /_| ,X`  <0… :$/_|&/_>~>|Ç>|Ç>\O_|a0| _>~s/Ç>|Р?}{X_|=|Ç>|Ç>|!?}#?~o_>~O>~˗|˗_| /?'0?~|ӗO?~O}7_O_}˷O| /_>} {Ç&ܗ/>O?$XA .dC%NXEw_>/?~?|7 '0_/?~O| ̷o?/_}O`>_~۷}ϡ|1bH_|)/_}1bĈ#F1b>˗/_>~ '0߿||O _>~/߿/߿|?/߿8?}'0|70_o7p@~8`A&TaC˗~Ç>|Ç>|Ç#~ _(߿|Ǐ_ ߿߿_맏|O߿|߿߿|_'߿_>$H_˗? 4xaB 6tH߾| /~>|Ç>|Ç>\O?엏@'@~?@~O?}//?}| ̧o?`?}_|o߿|ۧo?ϡ|˗/Ç>||Ç>|Ç>|Ç ˷ ?}˗O?}O`>ӗ/?˗O>~0_>~ o|˗|_׏_|߿|O`> /_}ӧO`>} ̧/߾O`> 8p?0 H*\ȰÃÇ>|Ç>|Ç˗/=||>L``>'p A}8`A&TaÄСC:tСC:tСCO@? 4xaB -\p|-\x_8`8`A&TaÄg߾9tСC:tСC'P?$XA 0 ?} H*\ȰÇ#_?$X ?$XA .d0!|O`>:tСC:t|s0C'p  <0… :|1"AO| (0_|8`A&TaÄw /ϡC:tСC:,`>'P|˗?~/>O@ O,h „ 2l!Ĉ+`>8P|'p "Lp!Æ >~'߿|СC:tСC7 '0_'?} !AO@8p߿O@ DPB >|˗/B}(QD |'?}I(QD%J( |߿?? } <0… :|1"A˗|I(QD0@ ߾|8`A&TaC!F8qaO@o@~_>$XA_|? 4xaB 6tbD)܇P_|$J(QAӗ/>~+o>~70D%J(QDO?}/'_>OCC/?I(QD%6O?}(QD8 O_|˗/_?$XA .dC%N\`O`>}/_>~ӧ߿|(./?G"E)R/D}H"ň8P ?$XA .dC%NX`> ˗D~,ZhѢE囨/_>~-Z`>'p "Lp!ÆB(q"ŊYX_|&gѢE-Z/D}hѢE8,h „ 2l!Ĉ'RhBOF1b_W?~0b(`>8`A&TaC!F8CO|7P߿O@~8poO,h „ 2l!ĈO_|$08`A&T`|ǐ!C 2dȐ!C 2dȐ!|o`> O~+Bcx> 2dȐ!C 2d_>ǏaA 8p,h „ ԗ/_> 2dȐ!C 2dȐ!C د|G0}#/'P?~ A~2dȐ!C 2dȐ?ԗ/?'p ~ H*\X_|2dȐ!C 2dȐ!C 2LO?g0@~/߾>1/_> П <0… :|1"A~8`Ag ~G_| 4hРA 4hP>$XA .dC%N?} G`>O߿߾}_/$/_> $`> 4xaB 6tbă H A}3h|0'p "LpaA2dȐ!C 2dȐ!C 2L@#`>#_c(_|2dȐ!C ˗C 2dȐ?}cH0_| /_|8`A&TaC!BO@ DPB > G0|O|/|/bĈ#6/#FP_| ˗/>0 <0… :|1@$XA .dC ˗o|(߿| 8p_|ϟ| G A <0… /?:t谡|90? 4xaB 6tC"F1bĈ#F|E1bĆ1bĈ˗}/߾/bĈ#Fѡ|#F1bĈ#Fx_|"F1B$? 4xaB 6/_>~˗/>˗OC:tСC sСC:tСC/?:tp> <0… ԗ/?'p A H*\ȰÇ1bĈ#Fqa> 拈_|"F1B? 4xaB 6/_>~ O@? _ ,(p_| ,ȏ_>+Xp |O@ 3H0A ? 4xaB 6tbą/B(QD'p`>$XA .dؐ|9,o_|O}s?}s` OÂs_>:tСC˗ϟ@~/_>ׯ| ̷/>˗ϟ@~/>СC6O~ H*\Ȱ!A}sx o_|ۗ?}'p_>~O>~篠~ ܗ/?O_>}O |˧`>˗ϟ?}/_>'0?}o_|ۗC:tСC:4/@~}߿|o|/||-/?:t!? O@ DPB ˗ÃWp߾ _>o߿~O`>~ W0}'0O`_ ؏?~}o| '0|O`>~9ϡC:tСC G_O`>o`_[/_>:tС|СC2ԗ/?+`O`>O`>@~70| /|߿O@ /߿߿|߿| _? ? 4xaB 6tB O?~O| o`>0'p` /?$XA .d`|9tСC A~ #/| '0| '0|O@߿߿|/߿/߿|'P` |/߿|߿| _? ? 4xaB 6tB}?'0߿|Է|o߿| O>[/_>#Fa|"F1"C}H O߾ '0|_|O` }o?O`}W0@'_>/|_>s/_Ĉ#F1B_|/_~ GП| ԗ/>˗?߿| (P|'p "Lp!ÆsСC˗Ã/߾O`>?}/>}/_>~˷O?}O`>__>~ϟ|˗/_O`'0˗|9ϡC:tСCp|9tСCϡC:l/_>~?sСC:\/C:tСC:/> ϡC:\o_|˷ϟC:B˗,h> ,/_|8`A&TaC"D!B`>!2/?!Bذ|/_~!B|'p O@ DPB >|%J(QD ̷0D OD%/~˗D%J0 $?/8p8`A&TaC{Ç>|P_>}O |ӗO@}?~O_|./>|߾|co_|=|C8`A'P`}8P`>8_>$XA .dСC>|Ç2'0_'0|o?} /=\/_>>|p!|{8_|=|C8`AO|'_|˧_>~ۗ/?ϟ|'p "Lp!ÆÇ>|a>#/|/߿|o Ç&ܗ/~ӗ/߾>|@~ ?~'|o߾۷|oÇ>||>|ÇO`O`Ǐ_?}o_>~˗Ç>4O_|=\o_|=|Ç+߾@~ '0_}>|Ç {Çh >C/߿_'P|?? 4X_||!||/?|/_|./>|߾|{`?}Ç*䧯`>~O`>/?}|>|C=|Ç>|ÇÇӗ/˗O_>|!?}O`O`>~ O_|ӗOÇ>|_>|Ç>||'p "LpA~ǐ!CǏ!C 2dȐ> 2dȐ!C 2d_> 2dȐ!C 2dȐ!C!C &/_}2dP}ǐ!C 2LOC 2dȐ!C 2/C 2dȐ!C 2W0|-p|1dȐ!ÃǏ!C ˗O_? 2dȐA~2dȐ!C 2dȐ?2dȐ!C 2dȐaC!Áǐ!C ˗O_? 2dO_|2dȐ!C <0… :|1"A$J(QD˗}/|O|ܗ_>ۗ}#/_>%JDO_|I(Q}'QD(QD%Jl/D%J(Q@o?~_ o߾ܷ| /?/߿}G_|$Jh_|I4@~$J/_|$J(!?}%J(QD (QD%J,/߿|70߿|/߿_/߿_/߿|'p "LP}p!|˷pBo… .\X .\p… .\p| .\p… .\p`?}o`0@/߿__߿|/߿? 4xaB˷O„ ԗO| Ǐ|)T߾|SPB & ? 4xaB 6tbD'p "Lp!ÆBT?_>~ӷ|/|o`߿~˗ϟ@~1B~a>~߾}|Et/_|"F1a?$XA .dC'p "Lp!ÆBT/_>}ӗOӧ?}O_>}ӗO>/| ϟ|/ 1"B/"|/߿| /?"B/_}#F1bĈ#F1bĈ#F1bĈ'pAO?~˗?qa?}Q`_0@8`A ۗ/~ H*\ȰÇ#JHŋ3jȱc|#/_>'_>>ׯc|/?}'0?}!|رcǎ;vرcǎ;/?@~߾|0?O_|O_|:./_}:vرcǎ;vq|`>(߿?'p  /'P /_>~ H*\ȰÁÇ>|Ç>|Ç>|a~70| o?}{_| @~ |{Ç/_>~>|Ç>|Ç>|Ç o`> #o ?~=t/_> /_>~˗˷Ç>|p}Ç>|Ç>|Ç>|p>~ #`C{ |{P|{p`?O@ DH_|'p "Lp!ÆB(q"Ŋ/b̨b?~ |70>O,h?O@ O_|'p "4?%LP`>˗0a„˗,h „ 2l!Ĉ'Rh"ƌ7_3m`> 4x>$XA O`>ӗo@}/_>/K0aƒ? 4xaB 6tbD)VxcF /|̇?m`> 4xa>}8`Aܧ??}O}'0?ӗ0a„˗,h „ 2l!Ĉ'Rh"ƌ˗/>'P 8p| G A O@ D/_|8`AO_~ /| ̗o`>/_„ ܗ/> H*\Ȱ#JHŋ3jȱǂ˷G O`>_ '0|h|}Ǐ?~Ǐ˗//|?~>}'0|˗/?~Ǐ?~~q |/>}˷O`>}/_~ o`˧Ǐ?~Ǐ?~q}a>R/_}>~Ǐ?~Ǐ˗DžO| H/_>~ H*\ȰÇ#JHŋ3jȱǎ˷Ǐ˗Ǐ?~Ǐ?~@~}Ǐ?~Ǐ?~x_|}hџ|}Ǐ?~Ǐ?2/_}>~/_|>~Ǐ?~Ǐ#˗/_˗O_?~Ǐ?~NJG˷Ǐ?~Ǐ?~cFǁǏ?~Ǐ?~#|_>O@ DPB >QD-^ĘQF=~9| yq_| 2dȐ!C 2dȐ!C"ܗ/~!%ӗ/߾!C 2dȐ!C 2dȆ/~2dȐ!C 2dȐ!C ߾| _| 2dȐ!C 2dȐ!CZ/~! ۗ/>!C 2dȐ!C 2dȐ˗_~2dȐ!C 2dȐ!C ߾|/_|B 2dȐ!C 2dȐ!C/_~˧_Ȑ!C )B )B )B:~ /_} H*\ȰÇ#JHŋ3jȱǏ C2/_>}˗/?"E)RH"E)RHO!|)RH"E)RH"EI|#o_|)RH"E)RH"EL/_>}˗H"E)RH"E)RH˗H"E)RH"E)RȈ'RH"E)RH"E)R|)RH"E)RH"E/_>~"E)RH"E)RH"_|o`>? 4xaB 6tbD)VxcF9vdȉ H߿/,h „ 2l!Ĉ'Rh"ƌ7r#Ȑ'p@}O?$XA .dC%NXE5nG!'p@_>۷} H*\ȰÇ#JHŋ3jȱǏ C:0(0߿~o`>$XA .dC%NXE5n˗OH 'P? 'P_|  <0… :|1ĉ+Z1ƍ;z`>O@ DP‚˗o|O߾'p "Lp!ÆB(q"Ŋ/b̨q#ǎ;O@8`A&T|7_? 4xaB 6tbD)VxcF9v`> O@ DP‚ <0… :|1ĉ+Z1ƍ;zQ_|/_>~ Aܗ$H A $H A |>$XA .4? 4xaB 6tbD)VxcF9v1"|`>$XA .dC8`A&TaC!F8bE1fԸ#Go@} H*\ȰÇ <0… :|1ĉ+Z1ƍ9'p}O@ DPB >_#F1bĈ#F1bĈ#F1bĈ ˗/߾  <0… :||#F1bĈ#F1bĈ#F1bĈ˗/ ? 4xaB 6tC"F1bĈ#F1bĈ#F1bĈ#.O8`A&TaC!B/bĈ#F1bĈ#F1bĈ#F1"C? 4xaB 6tbD"F1bĈ#F1bĈ#F1bĈ#:̗ ? 4x? `8`A&T| H*\ȰÇ#JHŋ3jȱ#A~ Oǃ0|=6ϣG=zѣG=zO_| /_>ۗ|˗_|/?'0@~|ӗO?~O}y/G=zѣG=z8_>߾ϟ|/@~ Ǐ_>O| '0|O`>~y/G=zѣGyGO'P`}߿|/߿? O~߿|/߿߿?_'p "L| H*\Ȱ#JHŋ3jȱ#A~ O? ߾|/߿_߿|o@/߿| ߿~_/߿ <0B'p "Lp!ÆB(q"Ŋ/b̨q#ǎ+o?}/| O?7П>}/'0}_>ӷ| 籣|=zѣG=zD~ #?}/_|˧O| ϟ|G0?}O_} O_|˧OO_|cG=zx_>=zѣG=zq"?}=z|=zѣG=zD~%J(QD%J(QD%J(QăI(QD%6OD%J(QD%J(QD%J( ?}%J(QD (QD%J(QD%J(QD%J ,h „ 2l!Ĉ'Rh"ƌ7rX? 4xaB ˗/_Æ 6l <0… :|1ĉ+Z1ƍ;zx1_>} A $H A $H AFǏ|ǯH A $H A $H 'p@~ H*\ȰÇ#JHŋ3jȱǏ Cr08`A&TaC!F8bE1fԸcGA`>O@ DPB >QD-^ĘQF=~#|O@ DPB >QD-^ĘQF=~>  <0… :|1ĉ+Z1ƍ;z2d|'RH"E)RH"E)2"|)RH"E)RH"E)1_>}"E)RH"E)RH"'OH"E)RH"E)R$E~"E)RH"E)RH'p "L? 4xaB 6tbD)VxcF9vD~8`A&4,h „ 2l!Ĉ'Rh"ƌ7r#Ȉ􅔘_Ȑ!C 2dȐ!C 2dD~BJ/dȐ!C 2dȐ!C 2"?}!%2dȐ!C 2dȐ!C  2dȐ!C 2dȐ!CO_H 2dȐ!C 2dȐ!CF/|B 2dȐ!C 2dȐ!#Rb>!C 2dȐ!C 2dȐ )1!C 2dȐ!C 2dȈ=O@_ ? 4xaB 6tbD)VxcF9vdD~3/| a>!C 2dȐ!C 2dȐ{`>~o?} 2dȐ!C 2dȐ!CO|_>{_Ȑ!C 2dȐ!C 2dD~'P/߿/,,h „ 2l!Ĉ'Rh"ƌ7r#Ȉ=g0@} 7П 2dȐ!C 2dȐ!CFa>˗O`=/dȐ!C 2dȐ!C 2"?}(߿|߿'p O@ DPB >QD-^ĘQF=~ 2dȐ!C 2dȐ!CO_H 2dȐ!C 2dȐ!CF/|B 2dȐ!C 2dȐ!#Rb>!C 2dȐ!C 2dȐ )1!C 2dȐ!C 2dȈ􅔘_Ȑ!C 2dȐ!C 2dD~BJ/dȐ!C 2dȐ!C 2"| H? 4xaB 6tbD)VxcF9vd~ H" <0… :|1ĉ+Z1ƍ;z2ȑ$K<2ʕ,[L| 3̙4kڼ3Ν<{ 4СD=4ҥL:} 5ԩTZ5֭\z 6رd˚=6ڵlۺ}{6 ;;PK_ߚrhPKfUIOEBPS/img/repma012.gifGIF87aX0?**?***UU?UUU????**?*******?*******U*U?*U*U*U**?*****?*****?*****?***UU?UUUU*U*?U*U*U*UUUU?UUUUUUUU?UUUUU?UUUUU?UUUUU?UUU?**?***UU?UUU?????**?***UU?UUU?????**?***UU?UUU?ժժ?ժժժ???**?***UU?UUU?????***UUU,X0 H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜIfK$XA 'p "Lp!ÆB(q"Ŋ/b̨q#ǎ?`> 4xaB8`A&TaC!F8bE1fԸcGAF/D}B 2dȐ!C 2dȐ!#R>~!C 2dȐ!C 2dȐ )Q!C 2dȐ!C 2dȈ򅔨_Ȑ!C 2dȐ!C 2dDBJ/dȐ!C 2dȐ!C 2|!%2dȐ!C 2dȐ!C _ 2dȐ!C 2dȐ!C/_H 2dȐ!C 2dȐ!CF/|`>/_ 'p?}8`A&TaC!F8bE1fԸcGAF/a~70_A~ 7П>2dȐ!C 2dȐ!C _70_| G0| 2dȐ!C 2dȐ!C/_}+|o`?~)/dȐ!C 2dȐ!C 2| ӗ|O@ ߿8>~ H*\ȰÇ#JHŋ3jȱǏ #ˇП G`>?~/? 4xaB 6tbD)VxcF9vdD7_7PG0B}B 2dȐ!C 2dȐ!#˗_|7pG0| 2dȐ!C 2dȐ!C/_H 2dȐ!C 2dȐ!CF/D}B 2dȐ!C 2dȐ!#R>~!C 2dȐ!C 2dȐ )Q!C 2dȐ!C 2dȈ򅔨_Ȑ!C 2dȐ!C 2dDBJ/dȐ!C 2dȐ!C 2"O@ DР>~ H*\ȰÇ#JHŋ3jȱǏ #R>~!C 2dȐ!C 2dȐ'p "L,h „ 2l!Ĉ'Rh"ƌ7r#H HAw H*\ȰÇ#JHŋ3jȱǏ C./?"E)RH"E)RHOH"E)RH"E)RD~)RH"E)RH"E)_|D)RH"E)RH"EJ/?"E)RH"E)RHOH"E)RH"E)RD~)RH"E)RH"E)_|D)RH"E)RH"E:0'p "Lp!ÆB(q"Ŋ/b̨q#ǎ? `>O@ DPB >QD-^ĘQF=~c? <0… :|1ĉ+Z1ƍ;z2G} ? 4xaB 6tbD)VxcF9vdȏ8? 4xaB 6tbD)VxcF9vdȐ˗H"E)RH"E)RH˗OH"E)RH"E)R})RH"E)RH"E91_>"E)RH"E)RH)RH"E)RH"E)RH"E)RH"E)RA)RH"E)RH"E |O@ DPB >QD-^ĘQF=~|O_|D)RH"E)RH"E/_} ۗ/>"E)RH"E)RH"˗/?OH"E)RH"E)}|)RH"E)RH"En/_}˗O_? 䗏b>僘OH"E)RH"E$/_|4˗/? ԗa>$)RH"E)RH"ۗ/>˗o ԗO |/>~/_~Ǐ_|/_>/,h „ 2l!Ĉ'Rh"ƌ7rQa?}Xp_|]ǯ?~O`>'|O|7P o߾}Ǐ?~Ǐ˗O_ ˗_|/A@~ G_>o|o`?~Ǐ?~c~cCOb_?}|߿|/߿O߿ ߿8`A&TaC!F8bE1fԸcG˗ljb_>>~O`O`#@~/Ǐ?~Ǐ?~߾|x_|9_>˗O>~/_>~ _|_}ϟ|/>}?~Ǐ?~@~>~(|߾|Ǐ?~Ǐ/_|?F/_>~O~ؐ_|O@ DPB >QD-^ĘQF/?~O_|˧| Ǐ_ǎ˗o_? ̗O ?~-W0~q!?~c;vرcǎ5?~_>| ǯcGa>߿|/_~7P_>} O|˗_Cׯc|رcǎ;vرcǎ_ӷ|O` ˗/_?Ǐ߿|/?_> ߾>~ 7p˗/?$XA 7?~߿| <0… :|1ĉ+Z1Ƅ_~'߾|0@O@ DPaAo}ϟ>#/| oO ˗o… ߾?~? 4xaB 6tbD)VxcF 㧏߿|@~۸`|ȏ_>O`O`O` ? $o_|4hРA70_>~߾|'p "Lp!ÆB(q"Ŋ/b̨Qa /_>}˗/_?ӗ/?6n/_>}.˷O|_>`>?~ϟE~q>'pǏ,h „ 2l!Ĉ'Rh"ƌ7r옰|Ә~|/? O`>}/_>~˗o#O?ӗ?}'yѣG=zѣG˗O_?70DŽϣG=zѣG=z_?}cEϣG=zѣG=z_|y,ȏ|AQ!|ѣGyGyGyQEۗ/> HKP`%L0a~ <0… :|1ĉ+Z1ƍ8`A&T |O@ 4/_>GP?~'P|O |/_߾| Է/?"o_|'p O@ DPB >QD-^ĘQA H*\hP_?$XO`'|/߿|/?} '0߾}߿|"D8|,h |8`A&TaC!F8bE1fh|,h „  C!'p "? 4xaB 6tbD)VxcF˗ ? 4xaB ӗ/> H '0_|(߿|/߿|_?}/߿߿|O@ O_|8`A ˗O,h „ 2l!Ĉ'Rh"ƌ ˗Oƍ˗ƁO`'_'0_>O`>}'0|˗/_ ˧oƍ7nܸqƍ7/'ӗ/߾˗|/_>~˷O`ӗ/_?~_>~ӗ/_?o_|m\/_>}7nܸqƍ7nܸѠ|mX߾|H1ƍ˗oFӷqƍ7nܸqƍ ˗>$XA .d/_|2d0C */_>~ 2} H*\ȰÇ#JHŋ3j4/_>}7j/_}6J̧_|62/~%˗Oƍ7nܸqƍ7n4/_>}7n/_>}6J̇0?6&/_}6R/7nܸqƍ7nh_|6nH_|mDO_|ӗO?~O`˗Ƌӷqƍ7nܸqƍ ˗Oƍ ۗ/> ߾/@~X_|m/_>}7nܸqƍ7nܸѠ|mܸ1!?O@ o@~C}!B/>$XA .dC%NXE5/7./_>~ۗ߿|O@ }7nO_|6nDo_|mܘ_|6nܸqƍ7nܸqA۸q#EoƁoFӷqƍ7nܸqƍ ˗Oƍ/˗/˗ƍ 8 ?$XA .dC%NXE5 /7f/_}6Vܗ/>7608`A&TaC!F8bE1f8_|6nܸ||m`>O@ DPB >QD-^ĘQ@۸qƁo#~q~ ? 4xaB 6tbD)VxcF˧oƍ ۗ/>˗O_-'p`?$XA .dC%NXE5/7nD/_|6 /_}6n`>8`A&TaC!F8bE1fX_|6nܸQa?}O_|6nO_|mܸqƍ7nqƂӷqƍ ˗O_?oƍ˧oƍ7nܸqƍ7/7n|/_| ˗O7ԗƍ7nܸqƍ7n4/_>}7n|SO_|6nܘП7nܸqƍ7nx_|6nܸ|3/_|6nȰ7nܸqƍ7n8П?ϟ?7n(_|_|'p "Lp!Æ˗/?:tСC:tСC:tСC8`?$XA .dC˗/>!Ba}O_| B"D!B"D!B~ 8? 4xaB 6t!?~!B!|+o_|A"D!B"D!B"D (,h „ 2l!Ĉ'R|/_>}˗/+VXbŊ+VXbE8P,h „ 2l!Ĉ'RlO_|9/_}*VXbŊ+VП+Vt`>'p "Lp!ÆB(q"ŅǏ|XbŊ+VX"~˗o_Ŋ+2/_|*VXbŊ+VLo_|U/_|*VXbŊ+VXp|  <0… ԗ/_>:tСC:tСÃǏ`|sh߾|sСC:tСC:D`> ? 4xaB 6/_}:tСC:tСC`9D/_>}:tСC:tСC ˗/_}'P ,h „ 2lHp_>:tСC:t!Aaۗ/?ϟ|/_>~:tСC:tСC˗O?(,h „ 2lHpC:tСC:tP`|[`}_>߾˷ϟC:tСC:tС>7P ?$XA .dC%NXE˧_|_>~ӷϟC~1cƌ3fh`>O@ DPB >Qć8`A&TaC˷ϟӗo` _}'p A? 4xaB 6tbD)*0 П <0… :|1ĉO@ DPB ˗/? O߾O ?s(߾|sСC:tСC0  <0… :|1ĉH"E˧|ϟ|/_>~˗D~G"E)RHC o@$XA .dC%NLE ~G"Ń˷"E)RH"E8`?$XA .dC%NLE bD~G"Ņ˧E)RH"E 'p@~ H*\ȰÇ#JP?O`G1}GB~(/_>~)RH"E).08`A&TaC!F8q>~)./oŃǏ|Q4O_|QH"E)Rp_>˗/?S@~(&/_>~QH"EHqa˗o`>˧E}ӗ@~O_|_|o|˗ϟ@}Iܗ/~)RH"E)"䧯`~w0_|)̷o|9|H"EHqa>70E˷E_/߿|/?~_>~ ߾}8_|'p "Lp!ÆB(q"D~ د?~/>O_}/@~O_|˧|Ǐ|O_>}?}H"EHqa>ӷ|˗ł|70߿|`"A"E)RH"Łܧ? '0_| >~|_>|ǯ>} /?~?~(RHA}8`A&4o |O!}P| >~ /'P80߿|  4/_>}8`A&TaC!F8q!?}ӗ_>~ W0| 70߿}G_#_>~w?}/߿|o?)RP?)F/_}(&'0|/?~O?g0?}'0ńǏ"E)RHD~7|? O`ϟǏ_>'0? ?/߿|O@? 4xaB 6t(P>|/_|>O`>˗O>~_>~O`>ӗ/_?>o_|=|Ç>|o`| _ O`>?}?O` /_~/߿|>|ÇsÇۗ/߾~>|ÄÇ>|ÇW_|/_>~#O_| ̧/>'0?~|/?/˗/>O_|˗/_?$XA .dС@}˗Çӗ/>|~Ç>|Ç {P`>|ÇO!|ÃÇ>|p}Ç>|Ç {P`>|Ç!? <0!AOB ;_>%̧P| /_>~ *TPB *TPB >70B ˗߿~*TPB *TP„08`A&$/_|8`A CP`>C!B"4/_|8`A&TaC!FO>~E_ 7qĉ'N_A} H*L,(P߾|_|Ǐ_|?~?~_|/@}@~'0ӗ/_| /_>}8`A&TaC!F87|/_~˷|˗ϟ@} O`>M8qĉg|,h „ O@ϟ|O`>~'0/| 珟۷|ǯ߿|o~o`>_`˷,h „ 2l!Ĉ' 䧯>/??}/@~;O`?})RH"E!08`A&TO_|)O`>O`|O`>_>O#>'P_?~o`>~_>~%/_>~ *TPB *TPB *,O_|'0A_ '0A ̧PB *TPB "O|PB ˗O_?>~ O>~_7P|߿/߿/?o_>~o@/_|8`A&TaC!F8 ?} Gp|맏| /? /7P`>$XA .dC c/_>#FL/_|O`|'0>~ '0_>_>'p?}G~Oӧ >~ܗ/~#F1bĈ#FdO_|o||o߿|߿|3/bĈ#F>~ 1bą˷_| /_}˷O_|_|_}O_|ӗO> ϟ|@~_|/?}O@ DPB >QD7_||/|O_|#/_|G"E)RDE)/~)R_|QH"E)RHQA})RH"ńQH~G"E ˧E)RH"E3| H"E)&Ǐ"E ۗ/>)Rh߾|H"E)RH!?})RH"E)Ǐ"E˗/?)/_?˗E)R"(h!O@ DPB >QćQH~Gb|󗏢A~G"E)RHbC~(RH"E)R,E)2/_>}(/?O_>} G|H"E)RH!?})RH"E)Ǐ"E˗/? 'P?}>G}G"E)RHbD~(RH"E)R,E)F/_}"'@ ̧o?G_|QH"E)R"O@ DPB >QćQH"}`>߿ۗ߿/,8_|'p "Lp!ÆB(q"E8`A&TaC!F81"?$XA .dpa|k@~O`>~ Р}СC:tСC:t? 4xaB 6T/_>:taA$XA .dС}П|_?}˗/_? װ|9tСC:tСC:tСC˗ϡC:tСC:t_|9tp |sСC:tСC:tСC&ԗ/C:tСC:tp`?}s!|sСC:tСC:tСC.ԗ/C:tСC:t谠}AϡC:tСC:tСC:tP_|:tСCr!r!/_>~ H˗,h „ 2l!Ĉ'Rh"ƌ ˧QF5jȰ|i/_|4jԨQF5jԨQ@}iԨQF5:/_>}*ۗ/>5jԨQF5jԨ|4jԨQF#˗/˷OF5jԨQF5ԗ/F5jԨQ~!|ӨQF5jԨQFӧ/_|ۧQF5j(_|!/~5jԨQF5jԨ`?? 4xaB 6tbD)J/_>~˗o+VXbŊ+VXbE8P ,h „ 2l!Ĉ'Ro_|ǯbŊ+VXbŊ+VX?? 4xaB 6tbD)V/_~-ZhѢE-ZhE'p ,h „ 2l!Ĉ'RH0_|-ZhѢE-Zd؏߾},Zh?  <0… :|1ĉ+̗/E-ZhѢE08`A&TaC˗ϡC:tСC:ta|:tСC:tСC60'p "Lp!ÆϡC:tСC:ta|:tСC:tСC6̗/_>~˗oC:tp_>}:tСC:tСC g߾9tСC:tСC6/_}/_|:t|:tСC:tСC˗`>9tСC:tСC:ܗ/_>~/_>~:tСB:tСC:tСCw /ϡC:tСC:CO| ? 4xaB 6tbDO@ DPB >l/_>/@~oD!B"D!B(`>7P @},h „ 2l!Ĉ'"? 4xaB 6ta|O`>~ӷD!B"D!BHP_|`>'p "Lp!ÆB(q"B}(RH"ņKo |o_>~ H*\ȰÇ#JH"|`>'p "Lp!ÆB(q"B}(RH"ņKo>~70E)RH"E˗_|QH"E)RE)R0_| /_>~˗E)RH"EO@ H*\ȰÇ#JP?)RHa|(RH"E)RHa?̧,h „ 2l!Ĉ'*Ǐ"E)Rl/_>)RH"E)Rt/_>}QH"E)R(P?)RHa|(RH"E)RH!?}Ǐ|G1|H"E G"E)6̗/E)RH"E)>䧯 ?}oa}ka>~H"E G"E)&ܧO|ӧoE)RH"E).䧯~ Ǐ| /_/_>/@~O_| |߿~Ǐ߾|߿|ӗo,h „ 2lP?:tСC'p@~ H*\ȰÇ#JH"E~ ;|O`>'_|/??~/@~/a>~O`>O?-ZlE-Z08`A&TaC!F8bŊw0߿|#/|ȯ`|70߿|`'0߿| '0|YhbC},Zh"E ,h „ 2l!Ĉ'RX|맏|7PO?}맏|ۗ߿| /߿߿_/߿߿| H*\ȰB}:tСC0 H*\ȰÇ#JHE~ '>'|'0?}G0?~/70߿|߿|'П|ӷ|O`>hѢņYX_|h?  <0… :|1ĉ+Z | ϟ|/>}O_| /|˧O?/?'0_~O|˗}O_}-ZP?)'p@~ H*$/_|.\p… .\p… .\p…[p… .\o… .\pA}.\p!B$? 4xaBo… .\p… .\p… .\ .\p….\p… o… O@~'p "L|.\p… .\p… .\p…3O| ̷pB o… .\p… o… ̗/_}'P>$XA ̷p… .\p… .\p… .O_~'p?̷P?}o… .\p… o… ԗ/_>}O@$XA p… .\p… .\p… .O_}O`>~ /_?O_>}O>~'0@~.\p… .\paA}.\pA} o@$XA .dC%NX!?$XA .$O_A}_ '0__>g>1dȐ!C 2dȐ!A}2dȐ?} o@$XA .dC%NX>} H*\H;O`> 70߿|O`>!C 2dȐ!C ǐ!C OO@ DPB >QDgѢE'0} >~ 70߿|(߿|߿? 4xaB 6t"C}"F`> ? 4xaB 6tbD)VlOE W0@~'0|/|/?}/A~'pE-ZQ?%'p࿁8`A&TaC!F8bEYh ?} /߾/_>}˧/>ӗ/? ˗~,ZhѢEY8`> O@ DPB >QDgѢEׯb>YhѢEh"|  <0… :|1ĉ+>ϢE3b>YhѢEhb?}'_|9G0|G1|=GgѢE-*ϢEhѢE-ZxP?-W0_;`>7P_>&擘`YhѢE h"A~,ZhѢE-ϢE7_O_>}'P| 7P_>O_>}>~/_~ /_|˗ϟ}O@}O |_>~O@ DPB >~'0| Ǐ_>_O` "D!BOD!"D!B"D"D3؏|O`o`>_> /?o| '߾ /|O` ߾~? 4xaB 6t!?}!Bh>!B"D!BlD! ?'p(0o|/߿~'0? ߿/߿ ߿8P|O@맏?$XA .dCAA~8`A&TaC!F8a>~ H*\/~˧@~+@~>_O` /|O`>@~/A~ O?ӗ?}.\p… .\x .\`?$XA .dPa|:tСC'p "Lp|˗o?'0?˷ϟ|+|/>}O_|_|O`}O_|ӗO ϟ| | .\p… .DO… .\p… .\|.\p .\p…[Pa .\p… .\p… &o… .\p… .\xP_| .\p… .\p‚-\0… .\p… .\p… ӷp… .B -B -t@O@ DPB >1|%J(QD%J(1"?}%J(QD˗OD%J(Q"B /_>~I|/_>(QD%J(!?}%J(QDOD%J(Q"B '>1C'PD%J(QD(QD%JP_|%J(QDWp@}_~O>}ӗO?~ '?%J(QD'QD%J(Q|$J(QD%"_> 70ϟ>O'|O`?} H*\ȰÇ#J8>)RH"EH"E)RT/_|'0A_ '0A G"E)RH!?})RH"E G"E)R_#_>Ǐ_>|?(0,h „ 2l!Ĉ'䧏"E)RH|(RH"EW0@~/|/|/?}/_~ H"E)Rؐ>)RH"E/_>~H"E)R4/_A}˷O`>˗O>~˷O`>~O`˗O`~)RH"EG"E)R| <0… :|1bC 'q`> I(QD%J萟>%J(QD8p?$XA .dCgpā$&'QD%J(QC~$J(QD%0'p "Lp!ÆB_>%J(QD%J>%J(QD80,h „ 2l!Ĉ(QD%J(QD(QD%J|O@ DPB >|%J(QD%J(1"?}%J(QD˗/_>%J(QD(QD%J(QD(QD%J_|I(QD%J$XA .dC%NX>} H*\ȰÇ#J/'N8qD8`A&T0_| .\p… .\p…'p "Lp!ÆB(Q 'N8qĉ'NL/_>~'N8qĉ'N8qĉ'N8qĉ'N8qă7qĉ'N8qĉ'N8qC7qĉ'N8qĉoĉ'N8qĉ'N8qD/_|&N8qĉ'N8|M8qĉ'N8qĉ'N_| /_}&N8qĉ'N8Q|M8qĉ'N8qĉ'Nx߾|C/_>}&N8qĉ'N8_|8`A&TaC!F8bE1f/_|˗/?5jԨQFQF5jԨQF˗O_˷ϟF5jԨQCӨQF5jԨQF˗o?OF5jԨ|iԨQF5jԨQFO~QF5jԸ_|4jԨQF5jԨ1}맱}QF5jԈ_|4jԨQF5jԨb?}Ӹ_|iԨQF5/?5jԨQF5Ҩ"˗,h ‚˷? 4xaB 6tbD) /+VXbŊ+VXCOb~ ۗ/~+VXbŊ)˗_Ŋ+VXbŊ+VXa|/߾˗_Ŋ+VXbEWbŊ+VXbŊ+V\/_>}*/@}/˷_Ŋ+VXbŇWbŊ+VXbŊ+VDO_|U/߿}_>*ۗ/~+VXbŊ˗_Ŋ+VXbŊ'70_Ŋ0_>~ HO`> w? 4xaB 6tbD˗E)RH"E)*̗o`>) /_>}("O7P?$X ~? 4xaB 6tbD˗E)RH"E)*Ǐ|"E˷~/@}G!|H"E)R_|(RH"E)RHQao߾QȐ_|Qd~O_|(./_>~)RH"E˗E)RH"E)*"ń˷E)/_}(RH"E)*/?)RH"E)RTO~"ŃǏ"E0_~ H*\ȰÇ#J/_>~'N8qĉ'N8q`>o?&N}&N81b?}8qĉ'N_|&N8qĉ'N8q|O_|&N$o_|MoD~o"Coĉ'N8q"C8qĉ'N8qĉ'F/_>~ Cob|%7 |8qĉ'N_|&N8qĉ'N8qĉ˧Ă'_|˧|/'P>ӗO߿|/_>/_> H˷? 4xaB 6tbDoĉ'N8qĉ'NȰ|hp߾O`>'0A~˷o?/|߾/M,o_|M8qĉ'N,/_>~'N8qĉ'N8qDob|O`>7_O`>ooB~7qĉ'N8q|M8qĉ'N8qĉۗ/~_?}_?}#`0߿/߿| O`}'p /_}8`A&TaC!F/_>~%J(QD%J( @,h „˗o,h`A}/ /ԷO`>}'0| /?}"Dp_|'p "Lp!ÆB_|$J(QD%J(QA$XA O@ }˗O>~/>}ӗ/_?'0| /?/?!B˧,h „ 2l!ĈOD%J(QD%O@ D> H*\ȰÇ˗o?!B"D˗D!B"D!B_|8`A&/_>}8`A&TaCӗ/?!B"D˗D!B"D!B_| B(_|A"D ˗/?!B"D˗D!B"D!B_| BH߾||w_| B/_>} B"D!B_| B"D!B"D"ă"D w0? :/_} B"D!B8_| B"D!B"D"Ą"D}߾|/_>˷߿|߿~O@ /_>~ H*\ȰÇ#J\/_>~'N8qĉ'N0_|'No_|MT?}o߿|ۗ?~߿}O ?M}&N8qĉ'6/'N8qĉ'Nl/_'/_>~/|'P> 70߿| 7_˗o'N8qĉoĉ'N8qĉ˗oĉ˗oD70~o_>~ 70?| H? 4xaB 6tbDoĉ'N8qĉ˗oĉ ˗O_o}o`>~'0˧@~&/_>~'N8qĉ'/'N8qĉ'Nl/_'2/_>~ӗo?_|˗/_˗o|Ǐ`>oĉ'N8qā7qĉ'N8qĉ 7qD˷_|'J/_}&N8qĉ'N,/_>~'N8qĉ'N|8`A&T!|c80C /_>~ 2dȐ!C 2dȐ!CǏ!C 2dȐ!C 2dȐ!C ˗!C 2$/_|2dȐA~ǐ!C 2dȐ!C 2d_|2dȐ!C 2dȐ!C 2d_|2dȐ!C˷C 2/_}2dȐ!C 2dȐ!C ˗C 2dȐ!C 2dȐ!C ˗/C 2d_|1dȐ!~ǐ!C 2dȐ!C 2d|O@ DPB >QD˗ϢE˗E˗E-ZhѢńgѢE-Zhb|Yhq}g@~gѢE-Zhq|YhѢE-ZX1_|-Z/_|,R/_},ZhѢE-6/?-ZhѢE+˗ϢEӗ/>ӗ/?-ZhѢEϢE-ZhѢŊhѢłB~gѢE-ZhQ|YhѢE-ZX1_|-Z ˗,h} <0… :|1ĉ˗_Ŋ+VXbŊ˗bŊۗ/>ӗ/߾+VXbŊ˗_Ŋ+VXbŊ˗bŊ!˗O_ǯbŊ+VXbņWbŊ+VXbEXbE!|XbŊ+VX|UXbŊ+VXQa|*VX}߾|XbŊ+VX1|UXbŊ+VXQa|*VX@~W|UXbŊ+VH@ <0… :|1ĉ+*̗/E-V/_}˗E-ZhѢE ϢE-ZhѢŊhѢE˗/>-ZhѢE-:/?-ZhѢE+˗ϢE-ԗ/E-ZhѢEϢE-ZhѢŊhѢEgѢE-Zh"DhѢE-Zhb|,Zh@}YhѢE-Z_|,ZhѢE-Z/_>-Z8P_|-ZhѢE-B/?-ZhEYdQE <0… :D/_>|Ç>|B{Ç>|Ç>/_>|!B}=|Ç>|Ç˗Ç>|Ç>||=|Ç˗Ç>|Ç>|_|>|Ç>|Ç˗Ç>|P_|OÇ>|Ç>|_|>|Ç>|Ç˗Ç>|P_|Ç>|Ç>t/_>~>|C=C=C=@'p "Lp!Æ˗ ?}/_>˗Ç>|Ç>|(_|>|Ç>|Ç˗Ç>|P_|'_>߾>|Ç>|П?ϟ>|Ç>|a|=|Ç˗|'?}=|Ç>|Ç8?$XA .dC%NX`|,Zh@}%7`>/?$XA .dC%N`>O@ DPB >QD˗ϢE-ԗ/_|,ZhѢE-2O@8`A&TaC!F8bŃhѢE˗0@_|YhѢE-Zd`>'p "Lp!ÆB(q"ŊgѢE˗ϢE-ZhѢŇ  <0… :|1ĉ+&̗/E-Vϟ?}ϟE-ZhѢE ˗/>-ZhѢE)˗ϢE+O8`A&TaC!F8bgѢE-Zhb|YhѢE? 4xaB 6tbD)V/_>~-ZhѢE-V̗/E-Z0'p "Lp!Æ6/a~Q`>`|!/a~H0|A"D!B0_|!BC? 4xaB 6t!|+o@}h0ĂX?˷o` ԗa>A"D!Ba| B"ć(p,h „ 2la| ԗO|'_|ӗ/?}/?O_|ӗO?~#߿||㗯D O|7P_>O_>}O>~ /_?/_>}O|A"D!2̗/_BӷD!B0@ H*\ȰÇ ||_>| o`>_ G'0߿|"D||O` '0'0| |۷|!B"D ˇp| <0… /_}:tСC> O>O ?`'A/| '0Á˷ϟCO|O߿|_>~ '0AO }_:tСC:̗/A} 8p,h „ 2lH0_|:tСC'P(0?}>~ /'P(߾||߿|߿|߿| H`|/~ ,Xp |?O߿|/|(߿|O?~/߿~7P| <0… :|`| ˗/?˗_Ĉ#FL/#F1~/_|/߿||O ?70|O ?O_?O`׏`|񋈰_W0?~/ O?'0߿|'0߿|O ?/bĈ#F`| ˗o?}˗/#Fp_Ĉ#F>~||/_|ϟ|߿˗߿O_|( /8p~o@˷8>~'0?~_>~O`>˗O>~˷/_|ӗ/ӧ? 4xaB 6t"|/_}/_|"F1bĈ#F1bĈ#F_|9/_~#F1bĈ#F1a| O}(> 4xaB 6tbDO@ DPB >/_>}/_>~>|Ç>|Á+`>o`} H*\ȰÇ#J0?$XA|"D!B˗oB˗o_?"DA~'0,h „ 2l!Ĉ+/_|'0_|"F1bĈ#FP ׯaEt/_|"./_>~#FTo~#F1bĈ˗`|˧O`|E1bĈ#F>~O?~O_} ܗ/ O߾|'_|ۗ?}ETo_|E|O_|"FP?/_>?~"F1bĈ˗`|/_|"F1bĈ#FP `?}o?_߿|/,h`|;x˗O_˧E˗Eo`|o_}H"E)˗a?? 4xaB 6tbDGQa'P_߿}߿|7P_>$X`}g0| Ϡ~ϠA 4h>'pǏ,h „ 2l!DS/>~˗C~勨p_|/| (,H0 4hРA 4hP? 4o~ _>}/?>~O`> 4_|`> g}gРA 4(}'㧯,h „ 2l!D[B~0_D ǯa>+o?}C/bĈa|O_|ӗo|˗|O`O`>߾|[`>Oo| ܗ//bćO_|_#F1bĂ[B}/_>|/?} 'P?~篠~ ܗ/O_>} _|G`|/_>߿|/?}o_|ӷ/?$XA o… -/… ӗ/߾o߾_} ܷ|oB˷… .\p… .\p…˷0? >'0|/߿| |gp߾_>߾W0~'߿|۷o?O`>۷}o… o… -/_ /_>~ 'p|߾~߿|/߿'p ˧,h „ 2l!Ĉ':̗/|+o`>O`O`>'_| /| '0_+0@/߿߿|/߿߿|O@ DPA}.\p… ۗ/߾~ #_O?~ /| ӗ/ .\p… .\p… ˗oa>ܗo`>O`O`>'P߿__'? o ?}(߿~߿|/߿/߿8`A&ThP O@ H`| 4h`?}3h|ӷ|O_}3hР@ϠA 4/_|O@ DPB >0_| Co@~/| '0?}/߿~@~'߾_>O`>}`O ?ӷ| _>ӷ| 1bDE|/|ED/_>}"G0?'/>}˗_D/bD|#F1bĈ ˷0ϟ| '0|/߾|ӧO`> |ϟ|'0| O_|'P`>/_>~˗?}O| _>'0| H*4… /?/'0?~/󷰠}p… .~ *'_>/_?OO` p`|[p… .o_|-\P>} '0?~[p… .\pB[… ˗… .\p… .\p>8`A @~ '0߿|7_>'B!B"D!B˗B O_~ /?"D!B"D!B̗/'p "Lp!ÆB(qC}(2'`>_߿|Ǐ_( /_}8`A&TH0|̇0~۷p!B/|(,h „ 2l!ā[|˧0|7_#F1bC}">'P?'0|o߿|O` |Qak`k/_>}"*o`| O?E1bĈ#̗/|7P_s/"|0_Ĉ#FQ /_>~ '0߿|_|?}#o_|O`'0|?~˗@}`>}ӗO߿}O|O`>/|˧_>~ /˗,h |O`>~? 4xaB 6t"|-a>}/_>_~O|/_>O}̧o|?}ӗO?~#F>~#B`?}Co߿~o|_}O`>'0_|o_|ۗO`>۷| _ 䇰|1bĈ#FQa|0~_>߿|o߿}/ p?_> ǯ?~O`_ '0?$XA .d@}>|X0ÂoaO`>o_'0|/| ̗O`>70_| /?˗O_>|Ç6̗/|'߿| /| O> '0|O߿|o'|>|C=|!B>O`> O?~/| W0߿|70_>/| '0 ? /_>~ H*\ȰÇ#J,/_!O?}O@__߾|߿_> O?}맏|_ _>$XA .d!A}>P @~ o_|'p  <0… :|q`|0?~O?O`}o`O`> O_>~/bĈ#F<_ć H'p O_|˧O_A~'_|O`>ϟ|ԗ/߾'0|ӧ`>~ ϟ|4H|,h |8`A&TaC!̗/|/|˗߿|?}O_>}˗/_O`> /|˧O?/?'0_Ĉ#FxP8`A  ? 4xaB 6t(>$XA'p "Lp!ÆB/_E1bĈ#F1?}">̗O@,h`~? 엯,h „ 2l谟|'p />$XA .dC˷0#F1bĈ#F_ćQ |qa ˗_Ą/bā1bĈ#F80_| KO| a|/bĈ#FQ>~˧/bD/bĈ|˗o ˗O_Ĉ#F1|-a~|5O>"F1bĈa|"F4o_|E4/_>>O?~O} Է/~_|ۗ?}_>$X`?}3hРA ˗O,h „ 2l!ā[}O`>~ /_?O_>}O>~'@~"F1bĈa|"FL/_|"O ?/O`>~ _~O '0~" /_>~#*/#F1bā[B}_ '0__>70_| /bĈ#F1>~˧/bą˷_|O`>`߿|/߿__߿'p ˧A 4h|'p "Lp!ÆB/_!'0|O`@~̷O}E1bĈ#&/|Ep_|=O@?}_/߿_@߿|? /_} ,X` />$XA .dC˷0?#O`>Ǐ_>|߿_'p "Lp!ÆBL_ć"|k@~O ?}O}O`>>~'0|ӗ/#˗O_Ĉ#F1|-a> O`>_>_ _> Oྈ#F1bĄE|/#/_}ӗ/?ϟ| /_~ '0|/_>~ '0˗/_# /#F1bā[B}˗o߿|/|ϟ|?˷O`~ H*\ȰÇa|"FH_|E1}1bD1bĈ#F80_| Cȯ_D"&1bĈ#FP1bD/bĈ ӗ/߾#/#F1bā[_} 拘_Ĉ#F1B}">̗O_Ĉۗ/>#F_|E1|E1bĈ#̗/|"F1bĈ#F>~˧/bĈ ˗_Ĉ˗O_#./#F1bā <0… :|1ĉ0_>})R$O_|(Ro_|QH|QH"E˷0?)RH"E Ga|(Rh߾|Ha?}HAH"E'˗oa>)RH"E)Ǐ"|QH1!|Hq!|HbBH"E'˗oa>)RH"E)Ǐ"|QHqa?}G}G"ŅG"E)N̗/|(RH"E)R,EO@ DPB׏!C˗oC 2d(_|2dȐ!C 2dx0_| cȐ!C 2dȐ!C 2dO? ˧!C 2$/_|2d_|1dȐ!C˧!C 2dȐ!C˷0? 2dȐ!C 2dȐ!Cca|2dȐ!C˷C˧C 2dh_|2dȐ!C 2dx0_| {E8`A&TaC!F8Q"?$XAC!B"D|C@!B"D!BC!B"D!B"D80_|'p "Lp!Æ СC:$ }"D!B/_>~/_>~"D!B/>"D!B"D!Bˇ!B"D!B ̗OB"D!B"D|!D!B"DX߾|CP |C!B"D|!D!B"D!B"/_>"D!B"DP`|"D!B"D!B˧!B"D!B}!B"DAC!B"DB!B!4@'p "Lp!Æ˧Ç>|a|>|~ۗП|=|ÇÇ>|`|>|Ç >|p>}˧O>~>|}G_|=|Cۗ/_>~{Ç>|/_>|a|=|Ç.0'p "Lp!ÆǏ_|5lذaÆ 'p@ H*\ȰÇ"D!B/>!B"D (p,h „ 2l8|sСCO@8`A&TaC!˗"D!B(0_>}!B"D'p`>$XA .dC%N,`>O@ DPB >/_>!B|A"D!O} H*\ȰÇ#JX|O@ DPB >/_|#F1"|E1bĈO@$XA .dC%N<`>8`A&TaC! ̗/_Ĉ#F0_>}#F1bć/bĈ#F1bĈ ˗o_Ĉ#F1|E1bĈ }/bĈ#2/_#F`?}1bĈ˗/_Ĉ#F1|E1bĈ >̧? 4xaB 64/?:tСA80?$XA .d0_>~ 6lذaÆ &̗/_Æ 6lذ|5l(p| <0 ϡC:tx0_|˗/?:t|:tСC˗ϡC:tP`|6/_>~˗/?:t萡?:tСA}o?sСCsСC:t0_|:tСC簡|ӷ|sСC:tСC ˗߿|˗oC:tСC:tС|9tСC ̗OÆ/_>ϡC:tСC:`>70,h „ 2l!Ĉ'R/_+V0_>} O@} P <0… :|1D8`A(p߿~'p "Lp!ÆB? 4xaB˷p… .\p!|-\H|o} H*\ȰÇ#J,,h_|`>8`A&TaC!F|/,h „ ˗o… .\pB[`|`>8`A&TaC!Fh0˗o?~ ? 4xaB 6tbćI(Q`|$J(QD铘p_|O@} H*\ȰÇ#J4āW0_|&N8qĉ!7q|M8qĉ雘0_~oĉ'N8q|&0'p "Lp!ÆB_>% ̗/D%Jh0_>}OO ?$XA˗_‚&L0a„ &L`> 0O ?$XA !B!|o߿|ܗ/>"D_>"Da|"D!B"D!BCaA ߿o?$XP`> 7P_?3hРA4hРA 4h`| 4h|?} g`}3(0A3h`gРA ϠA $/A 4hРAO@ DPB &̗OÇǯ_A}?~/_~_| ˗_|/_>˷O`>o_?ۗ|˗ϟ@}/>|/ A}?~/_~_| 7P_>O_>}O>~ /_?/_>}O|O`>˗?}>~˗߿| ԧ/߾{|'p "Lp!Æ˧Cw0?~O|O ? W0|_~߾}o߿~/_?'|Ç !| ;|O`>'_|/?| _ '0߿|/@~/_A~'0|_}̇0_>O{|=|Ç˧Cw0߿|O@@~ /@ _>~'_/|O`>'|  <0… cp`>/?'0߿|+߾#/|O`>'0߿|@~ g0߿}O ۗ_>˗/߿| /| Р| 2d0_| 2dȐ!C ˧!CGp|(_?}/߿>~'P`O@_߿}߿|7P_>$XA .\C3>'P~_߿|/߿~_߿|/߿O߿ ߿8P|8߿|߿߿~/߿_/,8_> 4hРA <0… :L/w> O?_>'`O ?_O |O` _>{Ç{0? O` / O?>~|O ? / /?}ϟ}3O߾?}׏`|ӗ_>_ }Å{Ç&/>$XA!/߾ӗ/ӧ߿|˗A~Ǐ`|O_|ӗo|˗|O`O`>!B"D`>"A~?}/_>}ϟ|_>˗O>~/_>~ _|_}ϟ|/>}ϟ| |˗O?} /_~ӧO`>}!D8_>"Da|"D!BB!B!ʗO,h A}"D!B!4/B"D!B!BO@ DPB >0_ĂE`|"F1bDP#6װ_~#F1b>1bĈ#F0_ĂE`|"F1bDP?˗|#_#F1|"*ཱྀ'0_D_#Fѡ|#F,/_#Fa|">`~߿|A̗O#F1|"*`~߿|=WP_Ĉ#F_#̗/_Ĉ#F0_>}?@~O | ԧ/߾/_>GP|O@ DPB >$ą7P_㗯@~O_}_|ǏA"D"D"D! ̗OD70|O|߿|O`>~O`?}!B"DA\ϟA}_ '0__>G_| "D!B8_>!"̗/D!BQ`| B` | /߿|} "D!Bd|8`A3o`>#/|/?3|'p "Lp!Å{Ç&̗OÇ;o`>_?}o`'PO| <0… :|H0? 3o`>_?}o`'P8p`8`A&TaC {|=|Ç˧C7>'0߿|'0O?ˇ0}>|Ç{0?'߾?߾' _>|Ç {|=|Ç˧CG_||/|O_|CO`~>|Ç{0?˗o|/>}ӗo|˗| /_~O@ DPB *Ç Ç>L/w_=\Ç>|`>g_=dÇ>|_.̗/Ç>|0a|>} {Ç>|a|2྇=dÇ>|_.̗/Ç>|0a|>Ç>|Ç!|>|Ç>|_.̗/Ç>|0a|>Ç>|Ç!|>|Ç>|(!O@ DP|-\p… .\H0_>} *o… .\p… .\`> o… .\p… .\_ .\/_| .\p… ̗O… [p… .\p… .<…[p… .\p… &o… ˗/… .\p…ӷpB}.\p… .\p… pa|.\p… .\p… [p…˷p… .\p!|-\P .\p… .\h:|8`AO@ DPB >Q@&N/_'N81_>}7qĉ'N8a>7qĉ'N8q|'J̗/ĉ'N/ 8qĉ'N08qĉ'N8_%˗oĉ'N̗OĆM8qĉ'NdDM8qĉ'N/ĉ7qĉ'˧obC}&N8qĉ'2o"|&N8qĉ'oD8qĉ7>~'N8qĉ7a>'N8qĉ? 4xaB˷p… .\p!|-\P .\p… .\pƒ-\X0 .\p… .\paB.\p|-\p… .\H0_>} *o… .\p… .\`> o… .\p… .\_ .\/_| .\p… ̗O [p… .\p… .<…[p… .\p… &o… ˗/… .\p…ӷpB}8`A&TaC!F0?$XР|8`A&TaC!F8_%˗oĉ'N̗OĆ8`A&TaC!F,h |,h „ 2l!Ĉ'p "L_|.\p… .$/ .\p… ./ .\p… 8`A&Ta~kذaÆ 'p "L_|.\p… .$/ .\p… ./ .\p… .\p… ˗O… .\p… ̗/… .\p…ӷp… .\p…ӷp… .\p… .\p@[p… .\pƒ[p… .\`|.\p… .\P`|.\p… .\p… ./_>} .\p… .\x0_| .\p… ̗O… .\p…  ̗O… .B -B -B -@˗O,h „ 2l!ā1bĈ˧/bĈ#F0_>}#F1bĈ#Fl/_>}#F1bĈ1bĈ#2̗O_Ĉ#Fa|"F1bĈ#F_|"F1bĈ˗/bĈ#Fd/#F1|E1bĈ#F|E1bĈ#̗/_Ĉ#F0_>}#F1bć1bĈ#F1bC1bĈ#F/_#Fa|"F1bĈ1bĈ#F1bĆ1bDEQD P> H*\ȰÄ{Ç>t/>|Ç>|X_|>|Ç̗/Ç>|0a|>|Ç˧>|Ç/>|ÇÇ>L/>|C{Ç>|Ç˧Ç>|!|=|Ç˧Ç>|a|>|Ç>|aA{Ç>|H0_|>|Ä{Ç>t/>|Ç=C/_>} H*\ȰÇ˗/bĈ#Fd/#F1B$? 4xaB 6tbD ˗OE)R81_|)RHa|(RH"E8p ,h „ 2l!Ĉ'/>)RHqb|(RH|QH"E 8P ?$XA .dC%N})RH|QH"EH"EO| H*\ȰÇ#J_|(RH"ʼnH"EG"E)2O@~ H*\ȰÇ#J_|(RH"ʼnH"EG?(RH1b? O@ DPB >QĄG"E)N̗/E)Rt/> 'P ?$XA .dذ`|sСC:tСC˗OC:tСÆsСC:/>O@8`A&TaÁСC:tСC/>:tСC СC:t(0_>}˗~СC.ԗC:tСC:tH_|:tСC6̗/C:tС|9l/_}/_|:tСC9tСC:tСC˧ϡC:ta|9tСC ̗OÆ/˗ϡC:tСC:tСC/>:tСC СCr!ʗO,h |O|8`A&TaC!F8bE)˗OF1b/_>1b/>'P 'p "Lp!ÆB(q?$XA .daC{Ç>|H0_|>|Ä{_|˗O`|O@ DPB >Qb|8`A&TaC ˧Ç>|!|=|Ç˧!|O|{Ç>|!|>|Ç ˧Ç>|!|=|Ç˧!C~'_|{Ç>|!|>|Ç ˧Ç>|!|=|Ç˧aC$? 4xaB 6tbD8qĉ ˗Oĉ'N8`|&N8q|ML`>> HP` ,ȏ_,X`,` ` ,X0?$XA .daC{Ç>|H0_|>|Ä{p|߿|? W`,X0_,H0_ ,X`A ,X`O@ DPB 6/>|ÇÇ>L/`>˗@~~O| //_>G0@}O_|_|ۗ?}_|˧'P߾| ˗@}/|*Ç>|_|>|Ç̗/Ç>|0a|>|O`_'0߿}_>o?? __ '0ϟ>o߾ _O`>~۷| H 0a„ &L0a„ ˗o_„ &L0a„ &L`|&L0a„ &L`|&LXP˧| />o` G0߿| g0|ӷ|O`>/|O`>'0| ̗0a„K0a„ &L0a„/a„ &L0a„ &LH0_| &L0a„ &Lh0_>} &,|/߿|'>~70? ߿|/߿80| /Ǐ_>O`~'0|O`/|70,h B%L0a„ &L0a0a„ &L0a„ &$/_ &L0a„ &4/ `}o>~@~o?3O`>_O`>/ '0}O`>O`>_ &$_„ &L0a„ &/_>~ &L0a„ &L0aBK0a„ &L0aBK0aA}+/_>}ӗ`~|O_}ӗ/ϟ|? '0?/?~_>/|/˗| /_>}'0? <`> &L0a„ &L|%L0a„ &L0a„ ˗/a„ &L0a„ ˧/a„K0aBK0a„ &L0a„ /a„ &L0a„ / &L0a„ &L0!|%L0a„ &L0|%L>~ &L/_|&L0a„ &L0a„K0a„ &L0a„/a„ &L0a„ &LH0_| &L0a„ &Lh0_>} &,| &$/a,` ,8P|O@ 3hРAO@ DPB 6/>|ÇÇ>L/w0_|)̷0@}{p`&̇0C=|Ç˗Ç>|C{Ç&̗OÇ;O}/_>/_~|/_~_| O@~O_}ۗ/ O߾|'_|ۗ?}G_|ۗ|ӗo||˗C'p "Lp!Æ˗Ç>|C{Ç&̗OÇ;O`>~}O`>'0| '0?~+` '0_˷o?_ '0;o |_~ >~O`>'C=|Ç˗Ç>|C{Ç&̗OÇ;O`>o`> '0| O` W0|/߿|߿|߿|߿_'p|_>o`'0߿|#H AO@ DPB 6/>|ÇÇ>L/w0| /Ǐ_>O`~'0? ߿O߿߿|/߿/߿o@߿| /@ ߿|/߿>~@8`'p "Lp!Æ˗Ç>|C{Ç&OÇ;O`>_O`>/ O?7p_ _>O߾ 䗏| O?'0| O ?O`>_>>~{X0>|aC{Ç>|H0_|>|Ä{P>~ '0?/?~_>/|/??˗@'0|/_~O`>ӗ/?ӗ/O`>} _|?}8p <0… :l/_>~>|Ç ˗Ç>|0_>} Çk/Ç {a>>|ÆÇ>|`|>|Ç @}>|a>{|2Ç>|_|>|Ç̗/Ç>|0a|>Ç>|ÇÇ>|_|>|Ç̗/Ç>|0a|>}O` _>|Â=|C=PC˗,h „ 2l!ā1bĈ˧/C}'>1|1bĈ#/bĈ#F/_>~#F1bĈ1bĈ#2̗O_ć7P_㗯@~O_}_|Ǐ>~1bĈ#F,_Ĉ#F_|"F1bĈ˗/bĈ#Fd/;o`>ϟ>O'|/~"F1bĈ1bĈ!˗_Ĉ#F1@ <0… :L/w0| G_>_>~ G>{Ç>$Ç>||=|Ç>$/_>|a|=|(P#_>Ǐ_>|߿ ߿| H*\ȰÇ"D!/?!B"ą"D! ̗OD7>'0߿|'0O?ˇ0}!B"DA"D ˗D!B|A"D˧"D}#/_} _|O_}/_>~!'_?!B"| B"D"D!Bqa| B"D>~X0D B"D "DAd@ <0… :|q`|"F1bDP?"1!#F1|"F1bD1bĈ#F80_|#F1"|E|_Ĉ#F1bĈ 1b!˗_Ĉ#F1|E1bĈ >~#F1bĈ#6/bĈ#F/_>~#F1bĈ1bĈ#2̗O_ćE1bĈ#F0#F|E1bĈ#̗/_Ĉ#F0_>}P <0… :|1D'p "Lp!Æ˗Ç>|C{Ç&̗OÇ'p "Lp!Æ СC'p "Lp!Æ˗Ç>|C{Ç&̗OÇ>||=|Ç>|ÂÇ>|`|>|Ç Ç>|0_>}>|Ç>||=|Ç>$/_>|a|=|Ç:̗OÇ>|Ç>,/_>~>|Ç ˗Ç>|0_>}>|ÇÇ>|Ç ˗Ç>|C{Ç&P|8`A&TaC˧"D!B"D˗D!B|A"D˧"D!B`| B"D!B|A"D!.̗/D!BQ`| B"D ˧"D!B"D˗D!B|A"D˧"D!B`| B"D!B|A"D!.̗/D!BQ`| B"D ˧"D!B"D˗D!B|O@ DPB &̗OÇ>||=|Ç>|ÂÇ>|`|>|Ç Ç>|0_>}>|Ç>||=|Ç>$/_>|a|=|Ç:̗OÇ>|Ç>,/_>~>|Ç ˗Ç>|0_>}>|ÇÇ>|Ç ˗Ç>|C{Ç&̗OÇ>||=|Ç>|衇* O@ DPB >80_|#F1"|E1bĈ˧/bĈ#F1bĈ /bĈ#Fq`|"F1bD1bĈ#>̗O_Ĉ#F1bĈ˗_Ĉ#F1|E1bĈ 1bĈ#F|/#F1bĈ#6/#F1bā1bĈ˧/bĈ#F0_>}#F1bĈ#Fl/_>~#F1bĈ1bĈ#2̗O_Ĉ#Fa|"F1bĈ#F_|"F("('? 4xaB 6t0_>}>|ÇÇ>|Ç ˗Ç>|C{Ç&̗OÇ>||=|Ç>|ÂÇ>|`|>|Ç Ç>|0_>}>|Ç>||=|Ç>$/_>|a|=|Ç:̗OÇ>|Ç>,/_>~>|Ç ˗Ç>|0_>}>|ÇÇ>|z ? 4xaB 6t|E1bĈ 1bĈ#F\O>}ӧO#F1bĈ#&/#F1bā1bĈ˧/bĈ#F|O@ DPB >QăG"E)N̗/E)Rt/>)RHq!|  <0… :|1ĉǏ"E)R/_>)R0_>})RHB~ ? 4xaB 6tbD˗E)R81_|)RHa|(RH"E ? 4xaB 6tbD˗E)R81_|)RHa|(RH"E(? 4xaB 6tbD˗E)R81_|)RHa|(RH"ņǏ"E)RHDH"E'˗"E):̗OE)Rذ_|(RH"E)R/?)RHqb|(RH|QH"EG"E)RH|QH"EG"E˧"E)Rt/E)RH"EǏ"E)R/_>)R0_>})RE(RH"E)R/_>~)RH|QH"(_>} H*\ȰaA~9tСC:tСC:/?:tСC СC:t(0_>}:t!C~w@},h „'p "Lp!ÆB(q|M8qĉ ˗oĉ'N̗Oĉ'N/_| ? 4xaB'p "Lp!ÆB(q|M8qĉ ˗oĉ'N̗Oĉ'N`>| HOB *TPB *TP!ASPB *TPB ˧PB *TPB H*\ȰÁ? 4xaB)TPB *TPB *$/_>~ *TPB *T0a|*TPB *TH`> 4xaB 6tH?8`A&4B *TPB *TPBPB *TPB ˗OB *TPB8`A&TaC/,h „SPB *TPB *TH_|*TPB *TPa|)TPB *TPB *TP8߿ <0A}*TPB *TPB /? *TPB *T0_| *TPB *TPB *Tp |g_> *TO)TPB *TPB /? *TPB *T0_| *TPB *TPB *Tp |;/B *ASPB *TPB */_>~ *TPB *T0a|*TPB *TPB *TP@~%OB |O@ DPB >Q|I(QD˗OD%J(QD-!|߿70?$X>~'P>$XA .dC˗D%J(a|$J(QD%J(1|̗o`>P?8P @~,h „ 2l!Ĉ ? 4xaB 6t|E1bĈ#F1bD=g0?~ 7П0 <0… :|1D8`A&TaC!̗/_Ĉ#F1bĈ#F$/|_>{߿} H*\ȰÇ#J$? 4xaB 6t|E1bĈ#F1bB {0@O߿|߿| H>~'p@$XA .dCO@ DPB >80_|#F1bĈ#F_>~ {`>o?}#`>'p "Lp!ÆB(q"Ŋ/b4/_3f̘1cƆ|'_| >~˗O_ƌ3f̘1cƌ3̗/_ƌ3f̘1cC~˧Ϡ|(߿|߿'p 3ϟ|8`A&TaC!F8bE1̗/_ƌ3f̘1cC~ ߿O@ DР>~ O@ DPB >QD-^h`> 4xaB 6tbD)>| H? 4xaB 6tbD)VxcD$XA .dC%N?8`A&4,h „ 2l!Ĉ'Rh"ƈ H*\ȰÇ#JHO@ DР>~ H*\ȰÇ#JHŋ3jȱǏ O@~/,h „O@ DPB >QD-^ĘQF=~Y_|3/_H 2dȐ!C 2dȐ!C/> )Q!C 2dȐ!C 2dȂK/@},h „O@ DPB >QD-^ĘQF=~YC$XA O@ DPB >Q_D-^ĘQF=~RH%MDRJ-]SL5męSN=}TPEETRM>UTU^ŚUV]~VX;;PKd{PKfUIOEBPS/img/repma027.gifGIF87aXX?**?***UU?UUU????**?*******?*******U*U?*U*U*U**?*****?*****?*****?***UU?UUUU*U*?U*U*U*UUUU?UUUUUUUU?UUUUU?UUUUU?UUUUU?UUU?**?***UU?UUU?????**?***UU?UUU?????**?***UU?UUU?ժժ?ժժժ???**?***UU?UUU?????***UUU,XX H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH*]ʴӧPJJիXjʵׯ`ÊKٳhӪ]˶[ H" <0… :|1ĉ+Z1ƍ;zRb>$XA  <0… :|1ĉ+Z1ƍ;zRb>!#2dȐ!C 2dȐ!C )1 2dȐ!C 2dȐ!C_Ȉ 2dȐ!C 2dȐ!CJ/dD}B 2dȐ!C 2dȐ!%2>~!C 2dȐ!C 2dȐ Q!C 2dȐ!C 2dH_Ȑ!C 2dȐ!C 2|BF/dȐ!C 2dȐ!C Rb>˗?} ߿o@ ? <0… :|1ĉ+Z1ƍ;zRb>/ ˷o`̧P!C 2dȐ!C 2dH!7_ o`>S_Ȑ!C 2dȐ!C 2|_||#O>~!C 2dȐ!C 2dȐK؏|#߿~'P`O@ DPB >QD-^ĘQF=~)1 o`> _߿8>~ H*\ȰÇ#JHŋ3jȱǏ %w 7_7П>2dȐ!C 2dȐ!C )1?˷` _>S_Ȑ!C 2dȐ!C 2|BF/dȐ!C 2dȐ!C Rb>!#2dȐ!C 2dȐ!C )1 2dȐ!C 2dȐ!C_Ȉ 2dȐ!C 2dȐ!CJ/dD}B 2dȐ!C 2dȐ!%2>~!C 2dȐ!C 2dȐ,h „O@ DPB >QD-^ĘQF=~)1>$XA  <0… :|1ĉ+Z1ƍ;zR"@},h`|}"E)RH"E)RH"'˧OH"E)RH"E)R|)RH"E)RH"E/>"E)RH"E)RH'RH"E)RH"E)!?~˗?~D)RH"E)RH"E.0'p "Lp!ÆB(q"Ŋ/b̨q#ǎ? `>'p "Lp!ÆB(q"Ŋ/b̨q#ǎ? | <0… :|1ĉ+Z1ƍ;z2G <0… :|1ĉ+Z1ƍ;z2$H~ ? 4xaB 6tbD)VxcF9vQb}|$H A $H Aϟ>? 4xaB ˗/?$XA .dC%NXE5nLj H,h „ ̗o,h „ 2l!Ĉ'Rh"ƌ7rcD} o@$XA .4/,h „ 2l!Ĉ'Rh"ƌ7rcD˷?  <0…'p "Lp!ÆB(q"Ŋ/b̨q#ǎ?F/_>}O@} H*\ȰÇ#JH3jȱǏ Cf0O@ DPB >,h „ 2l!Ĉ'Rh"ƌ7r`>  <0… :|a> H*\ȰÇ#JHŋ3jq#?7P>$XA .dC1bĈ#F1bĈ#F1bĈ#F`> ? 4xaB 6t|"F1bĈ#F1bĈ#F1bĈ#&0@ O@ DPB >1#F1bĈ#F1bĈ#F1bĈ 'p@ H*\ȰÇ!1bĈ#F1bĈ#F1bĈ#Fq!?? 4xaB 6tb|"F1bĈ#F1bĈ#F1bĈ#6䗏?/b|q`>僘 ?~/|1bĈ#F1bĈ#F1bĈ#F|_| /|/_|80_ĆE1bĈ#F1bĈ#F1bĈ#Fl/_A}?~/_~_| 7P_>O_>}O>~ /_?/_>}O|߿_|/_> ܗ/?O_|/?$XA .dC%NXE5nq|Ǐ_>'0|ȯ`>~?} _>/?_O 㗯 ?~_>/߾ #o?_|ۧ0?=zѣG=zQ|/?'0߿|+߾#/|O`>'0߿|@~ g0߿}O ۗ__0@ H*\ȰÇ#JHŋ3jȱ@ #O` 诟>~@/?}>~@/߿~_߿_>/@/~O|_ۗ <0… :|1ĉ+Z1ƍ; }>~|O ?߿|/|߿||OA}o? ӷo`>}O_+}߿~ ̧0?=zѣG=zQ|˷o`|/?W0?/_>}ϟ| '0?~_˗O?ϟ|o`>?~˧ϟ|/߾|oO@ DPB >QD-^ĘQFѣGa>=zѣG=zѣD=z0?=zѣG=zQ|/G=:ϣG=zѣG=z/|/_|=zϟG=zѣG=z(_O_>}/@~O_|_|ϣGѣG=zѣG%GП>+_ϟ}?~ <0… :,Ç>|Ç>|Ç>|Ç>/A+߾#/?} /?{ÇÇ>|Ç>|Ç>|Ç`?}`_?}o_>~O@'p "Lp!Æ Ç>|Ç>|Ç>|ÇG0 W0?~/70߿|߿|>|C=|Ç>|Ç>|Ç>|Á/>}G0?/_>}˗/_ӗ/?>|Ç{Ç>|Ç>|Ç>|Ç{Ç>|a>>|Ç>|>|Ç>|p|>C=C!P> H*\ȰÇ#JHŋ3jȱ@QD-^ĘQF 'p "Lp!C~kذaÆ 8`A&TaC!F8bE1fԸcG/˧$H A $H A $Ȋ $H A $H A b|@ $H A $H A/> A $H A $H +˧$H A $H A $Ȋ $H A $H A b|@ $H A $H A/> A $H A $H +˧$H A $H A $Ȋ $H A $H A 2"| <0… :|1ĉ+Z1ƍ;z2$~ 8? 4xaB 6tbD)VxcF9vdH80>$XA .dC%NXE5nG!=O| H*\ȰÇ#JHŋ3jȱǏ C0@8`A&TaC!F8bE1fԸcG)B  <0… :|1ĉ+Z1ƍ;z(|O@ DPƒ? 4xaB 6tbD)VxcF9v1> <0… <0… :|1ĉ+Z1ƍ;z_| /_>} A"ܗH A $H A |o?$| A $H A $H˗߿|˗/H A $H A $H 'pO@ DPB >QD-^ĘQF=~2#|`> 4xaB 6tbD8`A&TaC!F8bE1fԸF}? П <0… :|a> H*\ȰÇ#JHŋ3jq|`>'p "Lp!ÆB|_Ĉ#F1bĈ#F1bĈ#F1bĄW0_|"F1bĈ1bĈ#F1bĈ#F1bĈ#F1>$? 4xaB 6t"|"F1bĈ#F1bĈ#F1bĈ#*0'p "Lp!ÆB_Ĉ#F1bĈ#F1bĈ#F1bą8,h „ 2l!Ĉ(QD%J(QD%J(QD%J4/?O"C  ` #/_| W` ,X|8`A&TaC!F8bE1fԸcǁO>~-7П>[`~w0NJyѣG=zѣG+@~/_>|˗_| /?'0?~O |ӗO?~/| O |/_?'P߾|'_|6ѣG=zѣG=J`'?|7 '0_/}O|_>_>O?~/_'|/?O@ ? 4xaB 6tbD)VxcF9v/_|O ? /? 'P`߿|/?߿_>~߿(?}7߿|O ?o?8`AO@ DPB >QD-^ĘQFW0}O@߿| ߿O߿߿|@O` /߿ϟ/|߿|O?~8`AO@ DPB >QD-^ĘQFW> O?_>'?O?}˧o|/|ϟ}O~'0߿|O ? '0߿|˷1?=zѣG=zQ|˷o`|/?W0|˗|_>_|?}O_>}˗/>_>ӗ/?_ӧ,h`> H*\ȰÇ#JHŋ3jȱ@=zѣG=zѣD ˗@}/|O߾|篟?}|o߾W0߿|ϣGѣG=zѣGI| _>o`>_>}8`A&TaC{Ç>|Ç>|Ç>|Ç#O?~_ +_>O`}=|Ç Ç>|Ç>|Ç>|ÇG0 '0?}W0_| '0߿} Ç>$Ç>|Ç>|Ç>|Ç>/A~_>ӗO˧_O`>Ç>$Ç>|Çz衇z衇z衇z衇zh O@ DPB >`>%J(QD%J(QD%J(QD(QD%JtϟD%J(QD%J(QD%J(QA$J(QD'QD%J(QD%J(QD%Jh_>%J(QDI(QD%J(QD%J(QD%OD%J(a>%J(QD%J(QD%J(QD(QD%JtϟD%J(QD%J(QD%J(QA$J(QD'QD%JH"$H"$H"$H"$ O@ DPB >`>%J(QD%J(QD%J(QD'p "Lp!ÆBx,h „ 2l!Ĉ'Rh"ƌ7rH? 4xaB ˗/_Æ 6l <0… :|1ĉ+Z1ƍ;zx1_>} A $H A $H AV̗OH A $H A $H$H A $H A d| $H A $H AY1_>} A $H A $H AV̗OH A $H A $H$H A $H A d| $H A $H AY1_>} A $H A $H AFϟ|H A $H A H @8p ?$XA .dC%NXE5nG!9O H*\ȰÇ#JHŋ3jȱǏ Cz0'p "Lp!ÆB(q"Ŋ/b̨q#ǎ? `>'p "Lp!ÆB(q"Ŋ/b̨q#ǎ? r|O@ DPB >QD-^ĘQF=~/_|`>8`A&TaC!F8bE1fԸcG%'p~ H*\h_|'p "Lp!ÆB(q"Ŋ/b̨q#ǎ?FO@8`A&T`|8`A&TaC!F8bE1fԸcG#˗/?˗$H $H A $H A/_}/_|@D$H A $H A |O߿~$H A $H A B} ?}'p "Lp!ÆB? 4xaB 6tbD)VxcF9n0@70@~,h „ 2l!ć'p "Lp!ÆB(q"Ŋ/b̨q#Ǎ˧O_|˧cǎ;cǎ;vرcǎ;v/_~/_>~;v`>;vرcǎ;vر#|'_|uرcǃuرcǎ;vرcǎ8?$XA .dC1bĈ#F1bĈ#F1bĈ#F`>O@ DPB >1#F1bĈ#F1bĈ#F1bĈ ˧o_a~80|AGQ|0#F1bĈ#F1bĈ#F1bĈ +O}"[o@}80_ _ā /"|"F1bĈ#F1bĈ#F1bĈ#6~ Ǐ| /_/_>/@~/'P?~˗|˗/>߿}O@}|_>~Ǐ߿}O`>7_> H*\ȰÇ#JHŋ3jȱ@ ;|O`>'_|/?| _ '0߿|/@~/_A~'0|_}̇0_>OyѣG=zѣG+` G_>'_|/A@~ G_>o|o`>'0_>~߾|7P_|o`>߿|߿|8`A&TaC!F8bE1fԸcǁGp|(_?}/߿__?}/߿_߿|߿߿| _ _>~߿_|߿/߿߿'p "Lp!ÆB(q"Ŋ/b̨q#ǎ+o@~@~/||/߿|'0?}/|/|GP?_>O?ӗ?}O?}o?/|70?=zѣG=zQ|˷o`|/?W0?/_>}ϟ| '0?~_˗O?ϟ|O O_|_>˗O?} /_~ӧO`>}? 4xaB 6tbD)VxcF9v/G=zw0?=zѣG=zQ|=z1|=z0?=zѣG=zQ|=za>=zѣG=z#? 4xaB 6tbĂI(QD%J(QD%J(QD%OD%J(a>%J(QD%J(QD%J(QD(QD%JtϟD%J(QD%J(QD%J(QA$J(QD'QD%J(QD%J(QD%Jh_>%J(QDI(QD%J(QD%J(QD%OD%J(a>%J(QD%J(QD%J(QD(QD%JtϟD%J(Q"$H"$H"$H"$H"? 4xaB 6tbĂI(QD%J(QD%J(QD%OD%J(a>%J(QD%J(QD%J(QDO@ DPB >`> H*\ȰÇ#JHŋ3jȱ@ H*\P_|6lذaC H*\ȰÇ#JHŋ3jȱǏ$H A $H A d| $H A $H AY1_>} A $H A $H AV̗OH A $H A $H$H A $H A d| $H A $H AY1_>} A $H A $H AV̗OH A $H A $H$H A $H A d| $H A $H A`> O@ DPB >QD-^ĘQF=~c?? 4xaB 6tbD)VxcF9vdȎ (p,h „ 2l!Ĉ'Rh"ƌ7r#Ȑ'p`>$XA .dC%NXE5nG!AO} H*\ȰÇ#JHŋ3jȱǏ˧H 'P ,h „ 2l!Ĉ'Rh"ƌ7rD? 4xaB ˗/?$XA .dC%NXE5nLj H,h „ /_>$XA .dC%NXE5nLj ȏ| H*\hp_>~ H*\ȰÇ#JHŋ3jȱǏ(߿O@ DPB8`A&TaC!F8bE1fԸcG#˗/_>}O@$XA .dC%NXE5nG!3˗/_>O@$XA .dC8`A&TaC!F8bE1fԸ#|/_ P <0… :|a> H*\ȰÇ#JHŋ3jq|#/_|:vر|:vرcǎ;vرcǍ80?8`A&TaC!>/bĈ#F1bĈ#F1bĈ#F1bB ,h „ 2l!DE1bĈ#F1bĈ#F1bĈ#FT0'p "Lp!ÆB_Ĉ#F1bĈ#F1bĈ#F1bą (,h „ 2l!ĈE1bĈ#F1bĈ#F1bĈ#Fd/_>} / ( Ǐ A$/_>}8`A&T`> H*\ȰÇ#JHŋ3jȱ@ 'pO|O`|=2ϣG=zѣG=z/_A}?~/_~_| #O |ӗO?}˗?'0|G?ۗ/?O_})ѣG=zѣG=J`'?|7 '0|_>߿|%o߾ '0|qb>8`A&TaC!F8bE1fԸcǁw0߿|#/|ȯ |߿_}/߿߿_/߿߿| H? 4xaB 6tbD)VxcF9v/_| `>Ǐ_(߿?} /߿ _}߿|߿/߿|_߿8`A&$,h „ 2l!Ĉ'Rh"ƌ7r8_ O` / O?7П _>'?~ '0~ /|/|?~}ϟ|G0?'0|˗?'0|˗O?}/_~ӧO`>}yϟG=zѣG=z(_>=:b>=zѣGyGyD <0… 6СÅ'p "Lp!ÆB(q"Ŋ/b̨q#ǎѣGѣG=zѣG%ѣGѣG=zѣG=JϣG="ϣG=zѣG=z/G=zDϟG=zѣG=z(_>=z0?=zѣG=zQ|=za>=zѣG=zѣDQD-^ĘQFO@ DPBװaÆ O@ DPB >QD-^ĘQF=~/> A $H A $H +˧$H A $H A $Ȋ $H A $H A b|@ $H A $H A/> A $H A $H +˧$H A $H A $Ȋ $H A $H A b|@ $H A $H A/> A $H A $H +˧$H A $H A $Ȉԧ/_| <0… :|1ĉ+Z1ƍ;z2$G~ 8,h „ 2l!Ĉ'Rh"ƌ7r#Ȑ8P>$XA .dC%NXE5nG!=O|8`A&TaC!F8bE1fԸcGA08`A&TaC!F8bE1fԸcG%ӗ/_} A&0@ H*\ȰÇ#JHŋ3jȱǏ8P`?$XA .4/_|8`A&TaC!F8bE1fԸcG#'p ~ H*\X_|8`A&TaC!F8bE1fԸcG#'p A H*\hP_>~ H*\ȰÇ#JHŋ3jȱǏ˗/AA@ $H A $H ˗/_ (? 4xaB O@ DPB >QD-^ĘQF=~/_|ӗ/_| H*\ȰÇ!'p "Lp!ÆB(q"Ŋ/b̨q#G˷_}˗/@},h „ 2l!ć'p "Lp!ÆB(q"Ŋ/b̨q#Ǎ80߿'p "Lp!ÆB|_Ĉ#F1bĈ#F1bĈ#F1bD_}˗_Ĉ#F1|"F1bĈ#F1bĈ#F1bĈ#&̗/>˗/_Ĉ#F1"|"F1bĈ#F1bĈ#F1bĈ#*O@8`A&TaC!B/bĈ#F1bĈ#F1bĈ#F1B? 4xaB 6tb|"F1bĈ#F1bĈ#F1bĈ#2/}g0_|˧ϟ|E(0_Ea x0#F1bĈ#F1bĈ#F1bĈ 3/> +~Q`>7P_>"_1bĈ#F1bĈ#F1bĈ#F_>/|㗏~o_} /?/>7P_>}`>}/_~|?~˗߿/_>}˗߿ ,h „ 2l!Ĉ'Rh"ƌ7r8_߾}o?~3_>~||}۷}|O` '0'0| |۷|ѣG=zѣG%Wp70߿|g0߿|/?_3_ '0߿|O`> /@~'߿|aϣG=zѣGyG/'P|/߿~O߿|/߿O|o| 7P`_?}|߿|/߿O߿ ߿8`A;(П>} H*\ȰÇ#JHŋ3jȑ|}o?O?}߾'?}o? O_>'?ϟ> O߾a!|uرcǎ;vرcǎ#~˧O?W߾|/_}/_>~˗߿|˗|˗_||/?'0|˧O?˷/_|ӗ/ӧ? 480?˗O,h „ 2l!Ĉ'Rh"ƌ7r/_G:v1?'P>$XA .dC%NXE5nH_ ױcǎ 0 $ <0… :|1ĉ+Z1ƍױcǎ|,h ,h „ 2l!Ĉ'Rh"ƌ7r/A~/}ױcǎ`> 4X? 4xaB 6tbD)VxcF9`QO`|;vX0?8P@$/_>$XA .dC%NXE5n8_ '@~߿|'p? Ǐ߾| '0@}ر#| ˗/_>}ױcǎ;vرcǎ; ?~|_} ̗0}'0|_ǎwП|9/_ǎ;vرcǎ;v8_>'0߿|o_}o| /| '0|;v\_~9/_ǎ;vرcǎ;v8| _'PǏ߿߿~/߿߿|_>$XA .d`> 9/C:tСC:tСC:tСC:/A~ O?ӗ?}O?}o?/|СC:!C~9tСC:tСC:tСC:tСÁo`O ?}+O_|?}/>}˷ϡC:t/? СC:tСC:tСC:tСCСÆ:tСCsȐ|8`A&TaC!F8bE1fԸ@:jױcLJi/_ǎ;vرcǎ;v8_;v0?رcǎ;vرcǎױcǎ_|;vرcǎ;vر@:vرc|4˗cǎ;vرcǎ;v/_ǎ;vlϟF~uرcǎ;vرcǎرcǎ /_;vرcǎ;vq| H*\ȰÇ#? 4X_| H*\ȰÇ#JHŋ3jq?$XA .d/_| 6lذ?$X`A~'p "Lp!ÆB(q"Ŋ/b̨q#ǎ1˧Ǐ Ǐ?~Ǐ?~Ę/?2/Ǐ?~Ǐ?~c|>~Ȑ_|?~Ǐ?~G#C~}Ǐ?~Ǐ1˧Ǐ Ǐ?~Ǐ?~Ę/?2/Ǐ?~Ǐ?~c|>~Ȑ_|?~Ǐ?~G#C~}Ǐ?~Ǐ1˧Ǐ ?~G}G}@O@ DPB ˗? 4xaB 6tbD)VxcF9vH`> O@ DPB ˗? 4xaB 6tbD)VxcF9vH| <0… */,h „ 2l!Ĉ'Rh"ƌ7r"|  <0… ./,h „ 2l!Ĉ'Rh"ƌ7rb? <0… 2/,h „ 2l!Ĉ'Rh"ƌ7r"|O@ DPB ˗? 4xaB 6tbD)VxcF9vh|'p "Lp!Æ  <0… :|1ĉ+Z1ƍ;z/_|>~_|?~Ǐ?~NjGǏ?~Ǐ?bԗǏ˗Ǐ?~Ǐ?~1Ǐ˗Ǐ?~Ǐ?~ǏǏ?~Ǐ?~GǏ?~Ǐ?^/?2/Ǐ?~Ǐ?~b?}˗o?&/Ǐ?~Ǐ?~q"|/_>}>~x@O@ DPB >QD-^ĘQF=B/_}˗/?/Ǐ?~Ǐ?~!|cO_|}Q |>~Ǐ?~Ǐ ˧_D~G~}Ǐ?~Ǐӗ/>˗ǏǏ?~Ǐ?~?j/Ǐ?~Ǐ?~}_|}_|?~Ǐ?~Gc~E~'p "Lp!ÆB(q"Ŋ/b̨q#ǎ˗G˷ϟGѣG=zѣG=zdo_|y|/_|=zѣG=zѣ~b?}1"|g0_|˗G ѣG=zѣG=z/_|.o| ܗ_˷ϟG ѣG=zGyGy} /߿}_˧$o@~'POO@ DPB >QD-^ĘQFӗ/߾_#|0?3?/G=zѣG=z_|uO_O@ $o_|!D@~70|3/_>$XA .dC%NXE5n}__cA~瑠>~3O?ѣG=zѣG=V/_>~7>ϟ|yWП/G=zѣG=z߾|A~1_|/A~yѣG=zѣG˗nj~O@~  <0… :|1ĉ+Z1ƍ5˗O_ q}q"|:vرcǎ;vرcNj˷_DŽ'P߾|˗?}/_?'P?~˗/ױcǎ;vرcǎ;V/_>~'0|o?߿|O`>~ӗ/߾ױcǎ;vرcǎ;J/_>}:BO`>O`>@~uto_|'p ",/_>$XA .dC%NXE5n|uO?~_O` _>$XA O@ D0,h „ 2l!Ĉ'Rh"ƌ7rt/_|:J| O߾ '0|߿|'O@ D? 4xaB 6tbD)VxcF9:/_>}:F/>}?}߿|/_>~uo_|'p "4 <0… :|1ĉ+Z1ƍ#˗/;v4O_|:vرcǎ;vرcǎ ӗ/>;v_|uرcǎ;vرcǎ;./~;vԸ/_>}:vرcǎ;vرcǎ˗/_|:/_};vرcǎ;vرcǎ˗o M'0?:/_>~;vرcǎ;vرcǎ˗_ǂ'0߾|/_>|@~ױcǎ;vQGuQGu@? 4xp}߿}O O`>!D} <0… :|1ĉ+Z1ƍ;z߾|o`>/?O`q/_>~ A $H A $ȋOc| ,/_|8`A&TaC!F8bE1fԸcGӗ/>/|/>~ӷO`>:˗O_? A $H A $}Wџ| ԗ/>˗?'0*ۗ/> A $H A $Ȃd>˗H A $H A d~o|@/~ A $H A $H˧Ȏ˷H A $H A ~2c?} $H A $@ $@"˗o?$XA ˗/_?$XA .dC%NXE5nG ˗_ȇ/dȐ!C 2dȐ!C b?} ߾| 2dȐ!C 2dȐ!Co_|,/_|B 2dȐ!C 2dȐ!5˗/˧_Ȑ!C 2dȐ!C 2~珣}2dȐ!C 2dȐ!C R|O_|B 2dȐ!C 2dȐ!C/_>~˗_Ȑ!C 2dȐ!C 2dȅ˷}2dȐB )B )B )B ~˗o?$XA .dC%NXE5nG!)ӗ/?OH"E)RH"E)R$B|)RH"E)RH"Eِ_|'RH"E)RH"E)2b|D)RH"E)RH"EN̗OH"E)RH"E)Rȉ;|˧ϟH"E)RH"E)Rd|̗o` ϟH"E)RH"E)R$|Ǐ|OH"E)RH"E)$|'p|/A8`A&TaC!F8bE1fԸcGA|//_>D)RH"E)RH"A˧`>׏?}"E)RH"E)RH w0@O?}D)RH"E)RH"A˧`/_>}D)RH"E)RH"C˧OH"E)RH"E)R|)RH"E)RH"E/>"E)RH"E)RH8>$XA .dC%NXE5nG!9O8`A&TaC!F8bE1fԸcGA0'p "Lp!ÆB(q"Ŋ/b̨q#ǎ? |O@ DPB >QD-^ĘQF=~>  <0… :|1ĉ+Z1ƍ;z(q_| 2? O@ DPB >QD-^ĘQF=~`>O@ DPB? 4xaB 6tbD)VxcF9v1"| <0…˗? 4xaB 6tbD)VxcF9v1b|/_|@D/? A $H A $~O˧$H@ $H A $H ˗/_>O@$XA .dC%NXE5nG!3'P P <0… :|?$XA .dC%NXE5nQ_|ӧ|'p "Lp!ÆB|,h „ 2l!Ĉ'Rh"ƌ7rܨ/_|/_|uرcGuرcǎ;vرcǎ˗}˗_ǎ;v4_ǎ;vرcǎ;v1_| ܗ/_|;v`>;vرcǎ;vرcG$? 4xaB 6t"|"F1bĈ#F1bĈ#F1bĈ#.O|'p "Lp!ÆB_Ĉ#F1bĈ#F1bĈ#F1bĆ׏`~gp_| W0_Ĉ( Ǐ A$o_|$H A ? 4xaB 6tbD)VxcF9v/A~W0_|_[o?}Ȧ0?y$ϟG=zѣG=z(_>/|㗏~o_} /?/>7P_>}`>˗?}Ǐ|/_>׏>~}O`>0?=zѣG=zQ|߿}o߾g0߿|/?~߾/_? | '0?~?~/߾}O`>oO@ DPB >QD-^ĘQFWp70߿|g0߿|/?_3_ 'P`߿|߿߿߿o_߿|W~ H*\ȰÇ#JHŋ3jȑ|(_߿O__@'P`>7_(0@~'Po@_~/߿_߿|W`|8`A&TaC!F8bE1fԸ#E7P?}O߾엏@}O ? /?~O߾7П _>'?~'0~ /|/|?~P_|:vرcǎ;vرcGo`?}ӧ?}+o_| ԗ/>ӗ/_>~׏`>~ׯ`>ӗ/?O_|˗/_?˗O?}/_~ӧO`>} 8p`>˗/_>} H*\ȰÇ#JHŋ3jȑ|رc|#`>'p "Lp!ÆB(q"Ŋ/b̨q#GuT/;60?'p  'p "Lp!ÆB(q"Ŋ/b̨q#ǁuرcdž0 4@ ? 4xp|`> |_?(?$XA .dC%NXE˘1cƌ7P|,h O,h`>|7 W0,h „ 2l!Ĉ'Rh"ƌӨQFG|O@W0|O>} /?O_>} ׏` G0}#/'P?~ H*\ȰÇ#JHŋ˗1cƌ3" |_| | >~ ϟ>#O? g0@~/߾>e̘1cƌ3f̘1#D2f̘1cF!ܗ/>+0@O |O~7_ |/߾߿|/߿8`A&TaC!F8bE1F/cƌ3fD_B9/_|0@/߿߿߿|o|o`>8`A&TaC!F8bE1F/cƌ3fDBW0@'O?_>7_>3>~#}/cƌ3f̘1cƌ#˗1cƌ3"/?~G0?'0|ӗ/ӧ߿|˗/߾'P 8p|?}? 4xaB 6tbD)VxcD2f̘1cFe/_2f̘1cƌ3f̘1cƌ˘1cƌ|&˘1cƌ3f̘1cƌ3:/cƌ3fD_˘1cƌ3f̘1cƌ3fL/_ƌ3f̈0g1|Y̗1cƌ3f̘1cƌ#˗1cƌ3"/?~Y0| ̧0_ƌ3f̘1cƌ3f4/_ƌ3f̈0W_|˗@~_~O`} |/_>?}/_O_>} H*\ȰÇ#JHŋ3OF5jϟF~O  ߾_>O`>~_>_> ߿|_>5jԨQF5j/F5j(0?#@~o#o`>/?O`|iԨQF5jԨQD8`A&TaC!F,,h |'P~/o| 70?? O`>Ǐ_8`A&TaC!F8bE1f< <0… ˗aÆ 6O@ /A}?'0߿|Է|o߿| O>+O`>_8`A&TaC!F8bE1fԸc|uQ"|ӗ/ӧ?}O`>O| O_|ӗ/_?_>˗O>~uرcǎ;vرcǎױcG0_ǎ;vرcǎ;vQa|:v(_|˧cǎ;vرcǎ;v0_>};v/_;vرcǎ;vرcnjرD~u<`[cǎ;vرcǎ;v㗯| '0@}o_>~㧯cǎ;vرcǎ;f̗O_ǎ%˗ ?~?}}߾}o?~'߿}Gp߾ '0|߿|/_ǎ;vرcǎ;v̘/;J/A/A| /@߿/߿__? 4xaB 6tbD)VxcF1˧#GW0~O?~ۗ~/| `>_߿|/߿/߿_>$XA .dC%NXE5n0'p "Lp!Æ WP_?o`>o?_ O߾Է|O`>>~sСC:tСC:tСC:tСC8p ,h „ 2l_|/@~_| />}˧O?ϟ|/>}˧O}O`O_}:tСC:tСC:tСC:t>̷? 4xaB 6\/_>:tП?:tСC:tСC:tСC:t? <0… 2/C:d/_|:tСC:tСC:tСC:t>  <0… 2/_AO|7P߿'p "Lp!ÆB(q"Ŋ/b̨q#ǎ 'P ,h „ 2lؐ_|/3o ?}'p "Lp!ÆB(q"Ŋ/b̨q#ǎ˗G˗` G0|ѣG=zѣG=z/_>=>/_}+`>7_|yѣG=zѣGѣLJ3؏|#0@ ̧?? 4xaB 6tbD)VxcF9v|ϣGGП G0| yѣG=zѣG=z_|/|̇yѣG=zѣG=z_|˗o|(߿| 8p_|O@ DPB >QD-^ĘQFӗo?=:/G=zѣG=zѣA~ۗ/~=zd/_>=zѣG=zѣǁ˷@~ѣGѣG=zѣG=z/_|ۗ/>=z=zG=zc}א_|y |=z/G=z#<#<ȣ/_>}8`A˗˗/'˗Ǐ?~Ǐ?~/_|>>/_}?F/Ǐ?~Ǐ?~q_|E`$ۗ/~?:/Ǐ?~Ǐ?~x|/> /_|>~d/_?~Ǐ?~"||ۗ_? 4(|;x$XA .dC%NXE5na?}˸߿~_8˗/? o`>󗏟A~yѣG=zѣG˗F ߿_>$XA˷B?~7_?O@ DPB >QD-^ĘQFۗ/>}o?</~ 㗏`>_|=zѣG=z~>~/>}˧Oǂ#AO@/_?/,h „ 2l!Ĉ'Rh"ƌ7rh_|y߾|(0_|/A~yѣG=zѣG˗o?=/_~W/G=zѣG=z_|ya?}㘯 |o>/_>$XA .dC%NXE5nq_|uԘcDׯcE~uرcǎ;vرcǎ˗o ב"|8_|;vرcǎ;vرE~Q!| Է/?O_>}O | Ǐ_G˷cD~uرcǎ;vرcǎ˗o_ O`>~۷} _ '0 ˗O_ױcǎ;vرcǎ;J/_>~#'0| '0 /?O@ D_|'p ",/_>$XA .dC%NXE5n_|uO?~_O` _>$XA 0 <0!,h „ 2l!Ĉ'Rh"ƌ7rt/_|:J| O߾ '0|߿|%0 <!,h „ 2l!Ĉ'Rh"ƌ7r|/_|:F/>}?}߿|/_>~uO_|8`AO@ DPB >QD-^ĘQF˗o;v,/_>}:vرcǎ;vرcǎ˗O_;v/_}:vرcǎ;vرcǎ˗/;f/_};vرcǎ;vرcǎ˗o_|:/_>~;vرcǎ;vرcǎ˗_dž&| ˗O_;vرcǎ;vرcnjǯc}o_}/?O_>} Q}ױcǎ;v쨣:ꨣ:#˗O_?$XAO`>~_>_>Ӈ!‚? 4xaB 6tbD)VxcF9vq |o`>/?O`q/_~ A $H A $ȋ˷_| 70?? ? 4H߾|O@ DPB >QD-^ĘQF=~d/_>}._>_>}o|q/_} A $H A $H˗_E'P_|/_>~˗|/_|@ $H A $H ۗ/>4/_>}@ $H A $H ˗O_9߾| $H A $H At/_|@v/_>~ A $H A $H˗o?˗H A $@ $@ $0_|'p "Lxp_|'p "Lp!ÆB(q"Ŋ/b̨q#ǎ?dO_|B:/_}!C 2dȐ!C 2dȐ˗O_ ˗_Ȑ!C 2dȐ!C 2E~ | 2dȐ!C 2dȐ!CO_|/_}B 2dȐ!C 2dȐ!?˗O_?/dȐ!C 2dȐ!C 2@~㇑_| 2dȐ!C 2dȐ!C!C 2dȐ!C 2dȐ!˗O_?˷/dȐ!CRH!RH!RH!EP?}O@? 4xaB 6tbD)VxcF9vdȊ˷_A~'RH"E)RH"E)2!|/_}D)RH"E)RH"E6/_|D)RH"E)RH"EJ̗OH"E)RH"E)Rȉ)RH"E)RH"E91_>}O|)RH"E)RH"E / /_?)RH"E)RH"E/o_?)RH"E)RH"E0>_>#(0,h „ 2l!Ĉ'Rh"ƌ7r#Ȑw0߿~g0H"E)RH"E)R$|'P_|OH"E)RH"E)d|/_~ H"E)RH"E)R$|7_˧H"E)RH"E)Rd|)RH"E)RH"E/>"E)RH"E)RH'RH"E)RH"E)!| <0… :|1ĉ+Z1ƍ;z2$~ 8? 4xaB 6tbD)VxcF9vdH80>$XA .dC%NXE5nG!=O| H*\ȰÇ#JHŋ3jȱǏ C0@8`A&TaC!F8bE1fԸcGA`>8`A&TaC!F8bE1fԸcGA/_|D)RH"E)RH"EJ̗/H"E)RH"E)Rȉ)RH"E)RH"EIQH"E)RH"E)pRH"E)RH"E)RH'p "L,h „ 2l!Ĉ'Rh"ƌ7r#Ȉ'p "Lh0?$XA .dC%NXE5nG )1!C 2dȐ!C 2dȈ􅔘_Ȑ!C 2dȐ!C 2dD~BJ/dȐ!C 2dȐ!C 2"?}!%2dȐ!C 2dȐ!C  2dȐ!C 2dȐ!CO_H 2dȐ!C 2dȐ!CF/|B 2dȐ!C 2dȐ!#Rb>!C 2dȐ!C 2dȐ{0@߿| ? ,h „ 2l!Ĉ'Rh"ƌ7r#Ȉ=g0_|B 2dȐ!C 2dȐ!#0| '0@2dȐ!C 2dȐ!C  ߿|0!C 2dȐ!C 2dȈ=O@__>$X0?$XA .dC%NXE5nG{`>o?} 2dȐ!C 2dȐ!CO| /|{_Ȑ!C 2dȐ!C 2dD~'P /߿O@ <0… :|1ĉ+Z1ƍ;z2"?}!%2dȐ!C 2dȐ!C  2dȐ!C 2dȐ!CO_H 2dȐ!C 2dȐ!CF/|B 2dȐ!C 2dȐ!#Rb>!C 2dȐ!C 2dȐ )1!C 2dȐ!C 2dȈ􅔘_Ȑ!C 2dȐ!C 2dD~8`A&4,h „ 2l!Ĉ'Rh"ƌ7r#Ȉ8`A&D <0… :|1ĉ+Z1ƍ;z2ȑ$K>>ttt777yyydddkkk|||!, A%&"!ϐ X*\X Ç#Jh!ŋ3jDhqGMBIɓ(S\ɲ˗0cʜ SDisn@ϟ@ JѣH*]ʴӧPJJU B5]Ê-4@+Hc2mβ[5v݉p޽[w_f\|Rǿ]"^pF8ʘ9,"9/nsɤNڜiȨ[{\-vם+6ot@ c欀H.  =;i@Bҿ~ D}ҹ;"`< =>?)u _{!0t,@yw%rAv$OWT }@$ 1ā t=8 Ls=5 A GQ`=46p~Qd|ig2$p^@@A G@wRX pepwܜ)n2wRXx ';th tqH\9( H> ȏJYZ`a"Z$ 䭹ʓ=vچiJD1{@Py)0n .=7,bI28܏yyA@@ݭvW( NGAa0}@ ָb4gt*aX*"$!%+\xu,/sd&%eKm &`)x^w/74,c7x14u<h!"}4qIs؀#5_'$P1 !(R5.9C;Oҳv"v?.lyīo$.PxڬpVwbU ̄ ?Lvd+GȂxj S@ ;e>O蒌N:@AWTg<="\PkuIgB2ޮ@q~!0O~ g:łWM 𩘯z"$kX)K~G^ s/?0`6 Wg8ŧᓸE6= )tɸ3Zq=0@JA/K} b $ QZѴXP(;QZ Su'FMRmrP@]s+_)Ɩ%39X߁HYSʊysaSil)Q)Vτ֣$@AysQ;\V%6TY"):%VP86GF!g}ΙO>"m&= :dNV %},aXc|(.Ʉ,h+;(@T޳NRUITڨ5L "{rAM?Ѐ7 ('j]l5IRVQUQ@ 0][uRUiS}'zc%ʝu6es*|dw-:.⼊H{A @ywԷo" n0"`mU! k<ʕ!(aj\pA bq|1!8bfR X dͯrplbx;[2y\'=׀;| )#Ye28 *Wr1$aZ!fhmśK39k6F1g}n|Y{nFɑhZ,z&qqhb4zǥesDzs7ۖ =BU#N͊9{X$/Ւxs`D:&K mZT[@5u;o" jOG&țR3;.5<$(|#0x|MvPY0)rC-"Ϊ!O`y/AHhWOgGi@(U}(%53f F,ؕ\;u|,sU)p*.8J2/.)bJz^,EDeM׺}iuc:Y%z $'qR@q&ǧQYʪ^*fr @WS#>7C׊&qΰRQ@=ߑC,ޞn8_l紾"OlSd <E%wnZ(wZ8l@I+ BW3Le| P*t~eݮ 824͢+. 4(8TWm%l;#Pw0uYzv[ǡk hE @@H||P"'P%mz(sBVHo[F '7su6oBDE?p%#X(TCrsF jUC,ˆY RHX&胉N&!a_M.x 24BOh2(()#c61#t8 YG}w⌸(.š5Y&Ujo2>1PTdf 77YUAH,%sTדƷ5 l+ |'Fx Cw9!@^qŧjz}6rpoxr72tc#jY%wxS)N`}s7Ȏ8>ə'1j])[01bJs4"ٔeQ |#h !s™EA$Eu҉#rz'TX[YU|c(YYzН8:%5Ab?)&)($#B^A0{ Yʧo$)nrx8  6'`R46AjpbvNIIiS }N9ʖp$mm; ?AmУmԇV7Z Mj H*0`Ha"mp[ V| hZeHn`Tq* sj wj ~ m Z J z\p!Ȑਞ*>WѪHqt>ZOUHbg z*gêfz hɊթͪ : h:fZšİЭ`ՀJlZj  J Zn\\: z  {n  kij腭  ˨P!k # (;+0೒ʲ:"<K5+73/ҴhF'Y '(c[u:f T <5WQJ'[RQaR {6AAҷTRQTFzl;an!.gyy[,dRWRw!<-c+fpKawg\{ RAa2;OOuN WTQO4մV"(̃c5!KHUۂ Xv໿ q+ik!hu.=4Q{mp~"2̂*,9ڨ[}W ga=9QxkxhF Bn@f='#ܽU&#Eymb[#X2ȗ@khj$C@*(Z`eWbe0j}1;" 9'k)>a8;@ BW G-]&TX7Í16L9)5ǓŅ xb"H kQo*kLm B,/™BUuBc%Hi<@22g|8¹ A Kg̋̕$}Ú,ۤ],}#pjm^v)t'&蛲PFkMcG(RoK'=<͂+vҌ7Z B D - e+<Д? Z "=$]&}(M-).0=4]'6"-:>==32H8LM=P<=Vm(JFwiO՛ ^-ha Mmݧ`Ќim kfqM0Q:gҜאz-؄Ɔ+FYffWr| *ápI/s_ @tl|ד!2D.|tA >r7`jJj>Vo@ZR7É7BVDہ}6۔8YQQ$љ]sRR-L`eێ=\-œG~*moȻP- }˓##Ggw-*&ߔECK}|æ#QH;Pnu/p5 _8CΝ5rY+FoW@m㌀YmRl(|%m9&>G= ݘ!.נ7~& sU8\k3rN{p񩑪"c~rh,VWrrd> M]nkƧuYj.ȅPO YU+~KwYU*Q&52 ߾ΤTA ~۬^)VMH|p2'Ii 0UTjVv)_s>u]_ݾ}~ ec-䝥l]_Ꞷݖ[o8:<>@A_FLHL??N:R_Vo4`b?d_efj,npOhtXxkMk$[O,O[3c'(ΐ_|(ͣ|kEL(ܽ2ҁͲ8% !^(?W̆tLKU9sɼԣ̭O/}?CҿqUrȈfa9vXa`Jם'#D[B!|pjKroTPGZ՘.tf.9*^Z 駠e(ꩨ"i*$rݫjji̪ nk(n.z JV{fB~B"lJ|kn9Р;-,Nº, ǫpp$Ww śql ?ږZ0Cr8o's#4,8#DmH'L7PG-TWmXgM\V'>o!0hlp-tmx|w0oa{@'7G.Wngwyៗn騧ꬷz&d0't"cF/o<걋K (APBog'aѧ )` D qu0H O3);JBO@ /+ ! &x $E6|'^ʇʄ@ 7 2 rG"H$b#@D@() C;A$B@`$XH2*UL%},( 3 D0GA@+HBjy#N >PbLO$8@5  *4(Gi(D|"!D {t#KtAKV)Uq0Jp43of)fjR5IrjL:uvh~l~ @Oԋ`$:D'JъZͨF7юz HGJҒ~Tx<Bz@J ؔ*VӦܴi*x Ԇ .9*Tc%Ό D& 9|gw5 7#$QCjY4T\m@ 1[h@e08F^@K#e'rZŃoJ8/ȽYa q682:xPΊuQ {zuݮ0a_xn,Yf:F [:Zv,As!<0rs5xBȆ3oimQ=awWN0=yLJvk؊? MϪ+W\b"%{ѕb_9f&0j'~#a'ٰ^6pp{b'gl_r׷ b0F[] Hyyebj;؁ #V*/Z ~I!I$h?5M8_@cIb`dxȇ_đ_]gvknep$ w}xCC & 7 FnvPyB3r"жazdـ]hhrJe|6beyA'"g]'v`Ԑj,'l ] <~uhF\x6g<2r/dq1#_9tzmU"n6 pX@oyW)%}Xlu!f~BgyXAX@pIbqn aV&9v! &ؒ vH$Yx! ?@掫>^0}FmF+0;aEGŕS' . 3fYV!זr 0p2jYBz/w93yٗ—/3YC.D՘7֘v3FU9i/FoĘ/iɖyo)+92 S en o-_NCVu~.Z.\>r:͝El^)!~|>P-06 'xBIǻ(kP"%n^%Ơ@⋀*1搐NÙR=v  *\Qr⎀ i|'` !@8#_Y qá~<3P k ְ5bYfm }߀I saĂ? ART%+־'` ״:_yˑAon[XAJ~@B"82ALǮ{~ QNw 4dE N, B;wbl(֠ :g!^S񂁩{UʼnɐsG0>z +r'kfr0q@ QAh\/ta Xn_},=FmO 9r&j1ПW-62/ _-G WwP:pHBeoU)uA   AA ¡ňºɰ̳ȂAуႲՇ옍qZ&`YLChw@sHŋa\p!182$>$V2ɲ5I͛8sɳ' | JE*](ӧ6BJ5yׯبJԲhgMvٶ>4*7̾J ` kwJŐ#o+Pb+xYs"{Meҝ=f. bjۚN~q5kR4Vm ~șp)oOѻ fyc<_$=ヾՉerK>`8'H Z@0zЁGHB j( SЀКgh88̡w@ H"HL&6; x/| ;(`-Cave~=/.opțA%WMuHbd8dTH| 3pAr(7uJp7ϵGGLU; O*fw5 N0e/XY" `oS&I3IY(##nI 4/r6ZE+† ۄ cdp-\($pΥ ”0e2rv# `?dsDD>] j5 n<7U\ x$~X@f AShJdGͩg_)4Lİɹ 99jNdjgi!X%@3ҔPà S ] X+CS0iL#4 Bz0j(pGڬ) @Rjؒ*!RW`M 6Nm#WSZVKH^%e_䕭&P| R 0}JnZjSVMвĬ7!ȏ,īd I= "(jf;S"ӠŸtfCrAzNZW_硫zadxwER?{S hGf&b8|X(]*uſ ]UªiQ`&֎Ywqcӣ ے@#! ڐ4E,^=rǞ)n&[cK޸0lwpdQRN&+&زE6w1o$1m:xγ>PYO.\!2)T41(I[01 dʹY j ciQkϘv"׃5OTy@WU@ LjUsY|=kN/z=Dp4>6;pKxnqؙ:;Ml($eYhFN:,@¼Љ rY}kv*M"qy*ous6IXlue-.!C+rp@v rGi?J\8 u&˽\VҤ1Z8W5\;kpkc4^i&Ը5(n5ThLͽ"pF<6ūP= Q[-S;[)U!`Q\aoR 7Ï@bwm!UŌ{nxzBjSOB-ԔmFAP + ۫% [SB ٫WwvwGCX2!GR%},& RX/?7Z #tJ0 b "4x$-Z3bc""YwfGxqW Q"p+rsG)71dN1%@ЃĖK lGx G7.< & Kw Tݳj`1j0Q|k-Rpx؉ZH}VX%h׳؊ cA؋uAx$˜ʸ،WawhbfxgJbfx bȎXx䘏8 YԈ8eP`yّ "9$Y&y(*)610`6y8:<ٓ>@B9DYFyHJLٔNy: VyXZ\ٕ^`b9dYfyhjlɖ26TIm9tYvyxz|o9q}9YyQ9Yyٙ9YyY4gٚɏ9yi ٛ¹9yPȹyz9i4yؙڙ.`80YyY#ٞ9Yyٟ:Zz ڠ:Zzڡ ":$Z&z(*,ڢ.02:4Z6z8:<ڣ>@DZFzHJLڤNPR:TZT iZ\ڥ^`GZ,Yfzhjlڦ' r:tZvzF&yp6)꧄``|Fz q :[{Z/ ⨆-j[Vy .yVY*  ڢ z𪏰Ъ,J jz'ګjĺ ZΚ j IuzI( bT1&EȺڮS ̔B>ayZUb,}BG[raűҬ2ELF 3?lU- @dZG"[! k&D& &D #!fҲ1 @[BdȳC#!f= ˵@:뇻ŪUL` T!A*t&x:@ =±T  "A# ƱLU/$3@K &ؘ̔[v%{ }+T˅;p(۸rLk ۅ'@[")K+ARԹy;ۯyw׊[]']W AO广62K!a! KtU\LaW nf%xm%m ۅ" ˆ; t .ּ֖ XQRGʼ2ϥ Xp.Au~,+ΌNÎ?; k4BU~"袍OhБȖ1p N >{ +WS{W87$ >Vˍ~ ͠6k@@-?* nh{ ڨ K KnnnR Ol/|NMUΡ_%-?Q*0z>,,أC B PE C~t^ RTV_J;H., rik/_ZWw_wL}tʍ/I9O\ _/F?<_O ?OEE5O/ ?EOO2?S /OC_/// ׿?HN`@JPRXBPRA@A@@ AA; ݰ   Aj'*_qAPp*v B e RgA -(g_ KJ!Ca21B~D$@ -$?T3X%`j/o` dLF ĶBjM[RR@Z`O"x破C 5m3S;I#,PH h8-h@B v P(<B@x]Z][HO4:w=0m4zA$ rƣ;E!񍂠ځ/%q L==&qBv7LY(l}ƮvE$[{v( T CчiHNSq4@x%TXĢJc0$L6)*}(# 6(F+pŔ L 1+y}UL>WH;aңT`"ӝ:3E@M]zUrpЅ#΂"-OKMz{-LJ'ropҦ-*N;n0[5D {!/GLbô`emSͺ0".v0 }qc8/qXd|ǕU[H6l "x2^LY4\Q1ʅ[0K(.Z݌7OFv0bZ6ysaLgeS>ЊV֠y h(:ё f>ҙ^ė7 i`wmN֞کV&X]MOL>7uG-ZP9Ϻ|ب.3MlȾ7=NCˎkmC_ܲvmWG@27F=gؔJL&-!0=pK& F"d樍-dALA8 H(@JD1؀8CNw/T AMk^ @+tFXXp(}d%ý,fn֦?R?;y1Q[J',t0T\,Ա?Q33QZ2-”pT#@ۄ`0շ*@4 |h׀N4`{@^ԬVn(xߕ/1!_1)Ox?7Nd/M0mwH[чG!~_e&$S@#oPSX$M NA!2du%Y(W8 8Mp {R+6t&&t7\gvhOfiH%H'36$}$+q Ѡvg)ZRKa5)X(hL F E 'PexHqav0>' wEoc?3&"Vww .2LhOUX ؆V!K eQ!]! 8S46E%|kSDjpa?4wR-n@Wg8 bq98Gg F4# QIC 4#0F0#"%3 ?3!JX h2! 2qmW )R+{sAWp'h?8w4"e*YH!.]q0X*-ٓ(/xBVAl)SQ:;> QFQ 8 X QTMߤBX0%B(![b6[3=vdza)"S%%/so/xTae=`vς+[#Ԝf˜Pz+'VP .UG nkm t+N1sDRQ1QS,3(-)YY*0hSǶ !M?q 3M )[K;A#X[IC.>A3A[&QGK|dVfgnWJ QіWOi8X=rn{fIYP3]I?{S3e}ſ{(5hH;"p2!f'>MS! ~;- `IPϛ'\Y#G'}ґZ - ׂ"= Zv7TS.Fҍ@ˌڐK1/1M%v4>Xi{mX<й A ;0SbEu;-do!1k o!$R1#/ N6O#-@ݦZ#wC-"Dq 6iJajI *: B NKwx!~%@p.mؒ=y@4r@M P?⠻/X4C a=̰ JUX&:#toE|A." u()&nCwi!9>oh 9z٧ i*:/\rc] ࡫KiqN gtYX,Γ?PSI㵈0B9QAF72J)F 0$7A. 0k㝓ȧn(x.Q G'(y9zYVySz>pġ ZXi鎥؀ ؁  $8+)GJX VR0@:ݏU8M9pOBoz;*X'ή|sNQ)gԧ̰6i莖|ZدVlwi("}7xg ~2wwyiOykz'N:s3Iz @G{'{{Т``nMQT10NFd& -ݹ @+; D˶rA4LGoGώ~׍}}xGx| aրw`' ~s3jusLSxT\V u^wpax鼀PZ1ggq-qGrwMz|H0rAA    A@@ @A@ Őѧ A@A ۦ AA@Vo+v RgP8,hf yk_}ѳǮ^EA(`_URPϟ@$(ԂEQKʴhz>JjU` eԥ :`WiDϪ]kRE7肳`-u߿7Ye-޼(,ആ#vd/O9HΠRpheIx浀ǿOnJu53>GSc#_~eL_>ݩȅo%'@<%?:{Ksj=Xs.i^i`~N&[58)fOg~f?FT)% 0 `x ,dd@@ 9dx 1rS%JvR-af^% knbs$\lBc\) Ҥs (/ `C T*@d@,B8 ЇalHHj$w'eyJ)\@Z,XxЪL "HpXN8Pۘs9Ɩt26ihJ75.򂺍W@^*:HËdi:g,*Fp5D )01 *xP@A(P!aAAxΰ tpPQ~2}>M VA"} ѪtvlQd0/h;v?xʸg-q vR=U5PPHJ6-srP xXN9?.#{lT ,@{  Lh.Viss4q#&S xT?,93s+[CB |P' )Ps# k~" BMO֊pqn@hRr6.B(lo0a0A62xQ4wݬRs x5!ThB6-75;z7dby)oeW,JEb9M,?| ' b%_PĚcl'P|E `'N N xM*2y@)6,x2gC)<\))h`S9fͧX@@"/, x@bLj&?b BϷB Lf"26{h<@}CI j6]EhJa.Fg` HJ0j$QBˮ &m^ Q%5a &88:6 fsO}J3'㸑"R*n?'"!'rEtyyb#=~xq''%8Um xEq]!m"b c]^ +s5r"4X6 |7x Lְbx@8DH % UJ%LPG IV8BxZU:`XYdXT1Pf1lpUo#qXvkz8Wȇp] @B9DYFyHi!NPR9TYBhZi>^`b9dYfyhjlٖnpr9tYnɔ>a[i9`~9Yli; ٘9Yyٙ yٚ 隲9Yy)9yșʩ ) pؙڹٝ9Yy虞깞ٞ14Yy :Zz ڠ:Zzڡ;PK5JKeFePKfUIOEBPS/img/repma004.gif?NGIF87a!?**?***UU?UUU????**?*******?*******U*U?*U*U*U**?*****?*****?*****?***UU?UUUU*U*?U*U*U*UUUU?UUUUUUUU?UUUUU?UUUUU?UUUUU?UUU?**?***UU?UUU?????**?***UU?UUU?????**?***UU?UUU?ժժ?ժժժ???**?***UU?UUU?????***UUU,! H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ `? ȏA8`A&TaC!F8"A$Xp>~ O@ DPB >QD ׯ@}'p "L @}ׯ,h „ 2l!ĈO>}8`A&T>? 4xaB 6tbDO>} H @}O~ HP $ПO} 0 ӧ_~ H*\ȰÇO>} H @}'p ?$8? O@'p>}O@ӷ_?$XA .dC%&O>$O>}ϟ?$XA .Dϟ~ӧO|̧O_~ H*\ȰÇӧ`> ӧo?~? 4xaB ?~ӧ`> ӧ_?$XA .dCӧ`>ӷ?'p "Lp!Æ Ǐ>}8P>}8`A&TaCӧ`>Ǐ?8`A&TaCo>o_?$XA .dC 0ϟ?$XA .dCۧ`>? 4xaB 6Do>̧o~8`A&TaCǏ>} O_?$XA .dC0@? 4xaB 6t~O@}'p "Lp!Å'p}O@ DPB >?} ,h „ 2la~(P~8`A&TaC!2׏> ? 4xaB `> <0… :|~'P~ H*\ȰÇ˗/>~ B"D!BO_|"D˗/>~ B"D!>o|O@ DPB *ԗ/_|=|Ç>|p?~˧Ç˗/>~>|Ç>|8߾|Ç>,/_>}>|Ç>||=|!A~Ç>|Ç ˗/>||Ç>|Ç˗Ç˗Ç>|Ç/_>}>|!~{Ç>|CCÇ>|Ç˗Ç>\/>|衇z衇B 'p "L|.\p… .\p…  /… .\pB}-\p… .\p… ./ .\O… .\p… .\pB-\p… .̗o… .\p… .\pa|.\P|.\p… .\p… o… .\p|-\p… .\p… ./_ .T/_ .\p… .\p…p… .\P_|.\p… .\p… / .@? 4xaB 6tbDoĉ'/_>}&N8qĉ'6/_>}&N/_|M8qĉ'Nt/_}M8qāۗ/>~'N8qĉӗ/߾M_>oĉ'N8qbB~/'N8P˷ĉ'N8qā˗o@}&N/A}oĉ'N8q@˗|&N8q@} ӗ/_>}M8qĉ':O_|+Oĉ3/_| <0… :|1b~˗O|$J(Q"B}˗/_>}(QD%Jd?}˧B}$J/_~˗O~%J(QD 0@8p`>~ H*\ȰA}0@ <0… :|Q?~'P~ HP>} ,X` `'P>~'p "Lp!ÆBT>} ,h „ 2lxP?O@} <0… :|П?~'p>~ H@} 4hРA g`~'p>~'p "Lp!Æ6׏>} ,(0?$XA .d>~ӧ`>Ǐ? H*\ȰÅO|ӧ,h>}~O@ DPB .׏?}80}8`A;xO_~ H} 8P~ HC!B"D!B!D!~0ӧo?~,h „ _?~ӧO|̧O~8`AӇ!B!B O|O>~O@$XA &ϟ?~ۧO>$O>~'p "!B"D!B!B O>} H@O@8@$H>8`ׯ,h „SPBSPƒӧO|,(>'p 8@$8p@}'p ӧ_?$XA PB *T>~ *TPa~O@$XA 'P ~O@ DPaA}.\P| .\`~O@$XA 'p ~'p "L`>~ .\p… [p… .Do… .\>} .\_ .\pB.\p… p… .\P .\p… .\p…[pB-\p… .\p… .4… .\pB}.\p… .\p… ԧo… ˷p… .\p… .\`>~ .\p… [p… .\p… .\XP .T/… .\p… .\pB-\p… *>~ H*\ȰÇ#J(P>G"E)RHa>~)R(Q?)RH"E Hѡ|)RH"EG"EП <0…8?$XA .$ O 4xaB O@ gРA 4h_> 4hРA'p "Lp!A$XA o… .\P>~ p… Oa> .\p|*ԧo… ˷p… ˷p… o… o… .\P>~ p… Oa> .\p|*ԧo… ˷p… ˷p… o… o… .\P>~ p… Oa> .\p|*ԧo… ˷p… ˷p… o… o… .\P>~ p… O!|8`A&T_> ǐ!CcȐ!C1dȐ!Ã1dȐ!C1dȐ!C  ǏA}2dȐA}ǐ!C 0>} 2dh_> 2d/C 2 2d`> ǐ!CcȐ!C1dȐ!Ã1dȐ!C1dȐ!C  ǏA}2dȐA}ǐ!C 0>} 2dh_> 2d/C 2~ gРA 4hР4hp>} 4hРA3hРA 4h_> 4hРA ϠA 4hРA'p "Lp!ÆsXP?:\|:tpa>СC9t!A:tp|:th0?:tС>~ СC SϟC.A}:t_>:$/C.ϡC СC:aA}̗?9С>~ s80_>ПC9ПC9tС|:tСC9,Á/_>:Oa>_|8 | ,Xp`> ,O ,X` W` ,X`,Xp`|˗` ,X@8`A&Tx0 .\pB-DB/_>'_|˗߿}_SB/_>'_|˗߾| /B-TO… *o… o|/@~/_}o_|oaA.\p|.\p… >~ ˷߾|/|/}_>~Oa> ˷߾|/|/߿}_>~'p 3h@} 4hРA gРA 4hР| ̗o߿} _>˷/}_>~ $/A 4hРAO@ DPB 簠>~˧ϟ|/|O`>}!A}p`|˗O`?~ ̧?'0_A}:t_>:$/C/_>'0>~O|sH_>:4ϟC:tP?s80_>~'0>~ۗ/߾ӗ/_>}9$|̗>~ ̷_>˷_˗O| >}:d/C!|/_߿~ۗ߿|˧_>$Xp| 4hРA ? 4xaB 6<Â9/|_|/߿|߿| 0?㗏_|}>~a|ԧϡC sСC9$/|_|/_> _>sСC9tСCsXP?뗯_|ۧ?}O_>O`>SϟÁ/_>ϟ|/_?}a|ԧϡC sСC9$0_~ O_}'P?}'߿8`4hРA 4(0?$XA .d>~ СC SϟC.A}:t_>:$/C.ϡC СC:aA}:tp>~ sСÅ9:4ϟC:tP?sX0_>9tP?9$/@~:t/?s!CO@ DPaA"̗O | .L/… .< .\pB}"o} _~˗o|/SB|/>_>} P>} .\_>-\p!Bܗ@}| 70߿|[_ .\x0 .\pB-Dƒǯ|'0|oƒ)o|׏_>~o`>˷o|*ԧo… ?O@ D| w0~o|˷_} ˧PB  OB *TP!B}&O!|˗_> '0| ̗O!B}`|'0|o`>˧a> ӧOB  |'p "L8_>/_70|'0_>SPB PB *T>~ |/|o`˧>~ SxP_~O`|70|S0? ӧPB ˧PB ˧|/|o`˧| *TP|*TPB "OaB}"O@~'p_>~?~/>Sϟƒ/_>>}_O,80? ԧϠA 4hР|˗O? 4hРA 4/>O|'0_>} ϠA 4hРA'p "Lp!ÆsXP?˗o?} ܗ/>˷O߿|琠>~ sH߾|'0}_| ̧/_> >}:d/}СC9,o_|o|/_}ӗ/?sСC9tСCsXP? >~ sС|>}:d/|9tР|:!B:t`>:tСC}ϡC9D|:t(0CO@+(P ,X` W_>~+X` ,8_ ,X`A ,XP| H*<… .\pB}"o… .|.\p-׏A}.\P|˗/߾ .$/… .\_ .\x0 .\pB-D… ˷pB}p!Bo„-0ӧ? 4xa„/> *L/B ˗OBSPB PB *T>~ PBP)O„/B P?}*TP!A #OB ˧PBP)TPBSPB *TP? SP|SP?}Pa} ϟB S8_>}ӧPB g0| *T_>  ̧/> OB *ϟB *TPB)LP?$Xۗ!BC(0?̗!B |7P>"DР|'p>$XA ˧PۗOBSPB PB *T>~ P󗯟B SϟB SP| _ӧPB gPB */B _~ *OB *ϟB *TPB)LB 'P>$XA!B O?}"Dh0?_!D!BC!B!B(p,h@"D!BC!B"D!B!D8P?@~"DhP?Ca~ ԗ!BCHp_>}OB"Dh_>˗OB"D/B O |"4/B"D`>"D!B"D(P?!B B P`>"4O_|!D`> ˗O!D!B3>~!D!B!D |!‚!D!B !B!B!B >~ H A} 4hРA 4O?3hРA 4h| ?} 4hРA g0?~3hРA ϠA 4hРA3hРA 4hP`> H*\ȰA}ϡC0?:\|GP>2 ?}СC9tB:t`>:tСC}ϡC0?:\_C7P>2ϡC СC sСC9tСCsXP?:\|:tpa>˗o>}:d/A? 4xa)TPBSPB PB *T>~ PB Oa> *TP| ̗/߾~SPB3O}SPB)TPBSPB PB *T>~ PB Oa> *TP| >} *T|/B OB *$XA .? 4xaB  ԧϠA 4hР|/߿| 4hРA'p "Lp?~8`A&Tx0 .\pB-D`> 4xaB O@ H*\HO|O>$o,h B/_|K0a„'p "Lp!A$XA o… .\P>~ .\p… .\p… Ӈ_|.\_ .\p… .\p…[p… .T… .\p… .\p!B~#OA~  <Р| H*\ȰÇ#J80?)RE)RH"Ł˧@}O| H ˗O,h „ 2l!Ĉ7qĉ7qĉ'N8a>7P8`A&<o,h „ 2l!Ĉ7qĉ7qĉ'N8a>7P>80@~,h B'p` <0… :|1DM8qāM8qĉ'Nd/>} ԧ`? O@ Dh_>˗O,h „ 2l!Ĉ7qĉ7qĉ'N8|O~8|'N8qĉ'oĉ'oĉ'N8qb~ԧOa?~'oĉ'N8qāM8qāM8qĉ'Nd/ ԧoDܗ/>'N8qĉ7qĉ7qĉ'N8a> ԧoD0@ H*\ȰÇ#JTĉ'Nĉ'N8qD o>}'B`M8qĉ'NTĉ'ND} H*\8O@ DPB8@~˧o>} ,X` ?~W` ,Xp?$XA .$ <0ƒ-\p… *o!B}8`A&TП>~ H0?$XA ./_>}W` ,X A O@ H? 4xaB  <0ƒ-\p… *o!B}.\p)o… .BGP .T/… .,/… .\_ .\x0 .\pB-D… .\O?-\p…[_|O… *|[pB-\p[p…[p… .TB-\p…S… .\/_-\pB 'p .$/… .\_ .\x@'p "Lp!ÆsXP?:\|:tpa> _9t萡|СC9tB:t`>:tСC}ϡC0?:\}o>}:d/|СC9tB:t`>:tСC}ϡC0?:\_}7P>2 |СC9tB:t`>:tСC}ϡC0?:\|8>} H& |)TPaB*TPƒ)TPBSPB *TP? SPB 0? *T`> wP> *TH_>)TPB)TPBSPB PB *T>~ PB Oa> *TP| O <0aB PB ˧PB OB *ϟB *TPB)Lƒ/_>)TP?)} *T|8? 4xa)D/S8ПBSPB PB *T>~ `|˗O!| "Oa> _|̧P!|*OB *$/B *T/B/_>)T_> *TP`> *TPB 0>~ |˗@~/_>O`~Oa> |˗@~/_>'0_| P?}*TP!A*TPB"0_|/>}/_>~? /A 4hРAO@ DPB 簠>~˷߾|/|/}_>~ Oa>˷߾|/|/߿}_>~A}:t_ϡCsH0_}'P?/߾|/s(_>:4ϟC:tP?s80_>}'}ϟ|/߿| 0?O_|ۗO`>} />`>СC'p> O@ Dp| ˧ϟ|/|O`>}O!B*TPB)TPB *D„) o|/~/߿|˧_> S>} *T| OB ˧a|˗O`} /_}ӗ/_>})D/B *T(0? *TPBSP?㗏_|}O>~/,8P?3h`|˗O`O`|O~4h_> OA 4hРA '> 4hРA 4/|_|/_> _> gРA 4hР|8`A&TaÃ9,Á/_>ϟ|/?'0C)|/@}O_|ӗ| `>СCO@ HO!|/@}O_|ϟ| ̧| *TP|*TPB "OaB}*TPƒ)OB *<ϟBSPBSPB SPB ˧PB  OB *TP!B}&OB *<|*TPƒ)TO> *TH_> *T_> *T| *TP|*TPB "OaB}*TPƒ)OB *<ϟBSPB/,h „ ˷p… o… … .\pB}"oa}p„)o!}pB-TO… *o… oa}p„-\pB[p… .TB-D/@~.\P?- .\p… [P7P_/_} /|"Oa> ? /?~O|˧? $AgРA 4h_> 4hРA3h|/_|˷o`OAgРA 4h?'p "Lp!ÆsXP?;_?~۷O`/>SϟÁ!ǯ|/|oC9:,/?:tС>~ `|/|o`琠>~ s80_O`|70|sH0?s!C:t萠| 70_| ̗o`>O`| СC? 4xaB 6<Â9$/_'0__>9$|ԗ|/| '0|A}:t_>:$/C/߿|O`/C9taA9tСCsXP?'_| ܗ߿}_˧!A}p`|˗O`>O߿|'0?9$ϟÃ9t萡|:tH_>'_| ܗ߿}|O,8_> 4hРA? 4xaB 6<Â9,o_|o|/_}ӗ/?SC˷>˗OۧO`>}sH0?s!C:t萠| ۗ/>~/_>}˗o!A:t谠|:tСC9,CsP?9tP`>sxP>2ϡC СC"ϡC ϡC:tÂ9tP`>SϟCs0?s!? 4xaB[p| ˷p… o… .\P>~ pa|۷paB}p!|p|*ԧo… ˷p… ˷paBoB-\pB[p… .TB-\0_>-\P?-\0_[0a> ӷp… [p…[|˷p!B.\pA-\p… *o!B}.L/@}.D|.D/|.LB-\p!? 4xaB[|oƒ-\pB[p… .TB-\`>'p  |"Dh0_>!D`>ԧ!B"4/B"D|"4/B!B"DX_>"D!B"D(P?!ƒ ̷!BC(0?̗O`|"<BC!B ˇ!B"$/B ˇ!BC!BB"D!B !!D`|CA} !BOBaA}"D!B!D!B /,h@} B ˇ!B",/?"D!B"BC|ˇ!B!B _~"<BC!B ˇ!B"$/B ˧O|"4/B"D|"D!B"DP>~!B(,h@} !B˗BaA}"D!B!D!B ˇ!ƒ˷B ˇ!B",/?"D!B"BC!B"B!D!B!‚!D!BC!B!B"Dp|"D!‚C!B"D!B!D8P?"D!!B"D|",OB"Dh_>"D!A"D!Bˇ!B!B/?$XA .d>~ СC SϟC.A}:t_>:$/C.ϡC ϡC:tÂ9tB}СC sxP>2ϡC СC sСÂsСC簠>~:tP?9t|ԧϡC sСC9tB:t谠|:tСC9,C.Oa>:t0?s!C:t萠|:t_>:,/@ H*\ȰA}ϡC0?:\ϟÃ9t萡|:tH_>:\/CϟC:tP?'p "Lp@~ H`> 4xaB O@ gРA 4h_> 4hРA'p "Lp!A$XA … .\pB}"O@ DPB H@,h „ O@ ӧ H*\ȰÇ#J/߾%˧oĉ'N8q}M8qĂ7qĉ'N8!|&N_|&N8qĉ'>ԗĉ'ND/߾'N8qĉ ˷oĉoĉ'N8q"~8qĉ ˷oĉ'N8qb}8q}8qĉ'N_|M8qĆoĉ'N8q@7qD7qĉ'N8`?}8qĉ˗ĉ'N8qD~7qĆۗ/~ H*\ȰÇ#B/_>}$J(QD˷D%J(QD˧D%/_}$J(QD% /_}$J(QĆ˷D%J(QC~ODۗ/_}$J(QD/_}$J(QD˗/~%J(QD˗/_>~$J(a}ϟD%J(Q~˷D%J(`}ǯD%J(?~˷D%J菟|OD%J>˷,h „ 2l!ā˗/>~E1bĈO_|1bĈ/_|1bĈ#:o_|/bĈ#FQ?~˗O~"F1bĈӗ/_|1bĈ /_|1bĈ#F$>}˷#F1bĈӗ/_|1bĈ#*o|ǯ#F?~˗/>~E1bĈ O_|/bĈ#F1BO@} <0… ׏>} _? H*\ȰÇ`>,h „ 2lx?~˗/}9tСC:tA0@,h „ 2$?~'P>}O@ DPB >?~8P>~O@ DPBO> Է_? H*\ȰÇ#J?}8P}? 4xaBǏ>}8P>~'p "Lp!ÆBt?~'p>},h „ ?~'p`>} <0… :|1ĉ o>} 8P>}?8`A8?~ӧ`>ӷ?8`A&TaC!Fd?~O@Ǐ?~  4ПO>} 8P>~O@ DPB >QD Ǐ?}O@ D0>}ǯ? H*\ȰÇ#Jt?~ӧ`> 4xaBǏ?'p "Lp!ÆB(q"Ŋ 8@~O_'p ,h „ 2l!Ĉ'RП H>} П H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH*]ʴӧPJJիXjʵׯ`ÊKٳhӪ]˶۷pʝ;7_>}'0@ Gh|˗ϡ?O`>˗/>t_|9ԗ?~א_|͗߿~9P_~G0|Gwn|˗O | /߾/_>~70_>O?}/_>~ ̧/>$XA .dC%2̗?~ /_?O_|˗| ̗o ~ӗ/}+/@}&N8qĉ'N8q`|˗O _}ۗϟ|o|'0|/?ۗoĉ'N8q"|ۗ/@}ϟ|/?ǯ}O`>_>~(,h „ 2l!Ĉ'R/>؏߾|O` ̗_>˗߿| ̧O`|/_+VXbE/_>'0>~O|3؏|'0߿|G0_>UXbŊ+VX1_>~'0>~ۗ/߾ӗ/_>}o`| '0|#0@8`A&TaC!F0_>~'0>~ۗ/߾ӗ/_>}o`| /|#/|&N8qĉ'N8q`|˗O`O`|O~?'0@}7_~8qĉ'N0_>~'0߿~'0_'P_ |>~#/|&N8qĉ'N8q`|˗O|/_>}O_|3/_|/?߿|8`A&TaC!F0_~'P_}ӗ/>O_|3/_|/_?}+0@8`A&TaC!F8bE1fԸcGA9dI'QTeK#/aƔ9fM7qԹgO?:hQG&U*2 ;;PK LDN?NPKfUIOEBPS/img/repma026.gifGIF87aXf?**?***UU?UUU????**?*******?*******U*U?*U*U*U**?*****?*****?*****?***UU?UUUU*U*?U*U*U*UUUU?UUUUUUUU?UUUUU?UUUUU?UUUUU?UUU?**?***UU?UUU?????**?***UU?UUU?????**?***UU?UUU?ժժ?ժժժ???**?***UU?UUU?????***UUU,Xf H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH*]ʴӧPJJիXjʵH~ H <0… :|1ĉ+Z1ƍ;zR>} Hԧ? 4xaB 6tbD)VxcF9vD}BF/dȐ!C 2dȐ!C R>~!#2dȐ!C 2dȐ!C )Q 2dȐ!C 2dȐ!C_Ȉ 2dȐ!C 2dȐ!CJ/dD~B 2dȐ!C 2dȐ!%2"?}!C 2dȐ!C 2dȐ !C 2dȐ!C 2dHO_Ȑ!C 2dȐ!C 2D}˗/?(߿o@ ? <0… :|1ĉ+Z1ƍ;zR>~/?˷o`̧!C 2dȐ!C 2dH!7_?o`>SO_Ȑ!C 2dȐ!C 2D}ϟ||#O!?}!C 2dȐ!C 2dȐK؏|߿~'P`O@ DPB >QD-^ĘQF=~)Q ` _߿8 ?} H*\ȰÇ#JHŋ3jȱǏ %w'_7П>2dȐ!C 2dȐ!C )Q?˷`> _>SO_Ȑ!C 2dȐ!C 2D}BF/dȐ!C 2dȐ!C R>~!#2dȐ!C 2dȐ!C )Q 2dȐ!C 2dȐ!C_Ȉ 2dȐ!C 2dȐ!CJ/dD~B 2dȐ!C 2dȐ!%2"?}!C 2dȐ!C 2dȐ,h „O@ DPB >QD-^ĘQF=~)Q>$XA  <0… :|1ĉ+Z1ƍ;zR"?$X|'p "Lp!ÆB(q"Ŋ/b̨q#ǎ?JO>}@L`>'p "Lp!ÆB(q"Ŋ/b̨q#ǎ?F0'p "LpA} <0… :|1ĉ+Z1ƍ;zQ| <0…˗,h „ 2l!Ĉ'Rh"ƌ7r#D~ o@ H*\XP_| H*\ȰÇ#JHŋ3jȱǏ˗o_ ? 4xaB ? 4xaB 6tbD)VxcF9v||'p "LpA~ H*\ȰÇ#JHŋ3jȱǏ'p࿁8`A&TaC!B <0… :|1ĉ+Z1ƍ7O'p "Lp!ÆB|,h „ 2l!Ĉ'Rh"ƌ7r`>  <0… :|>~#F1bĈ#F1b#F1bĈ'p࿁'p "Lp!ÆB|_Ĉ#F1bĈ#F1bĈ#F1bĄ(@ H*\ȰÇ!1bĈ#F1bĈ#F1bĈ#FQ>? 4xaB 6t"D}"F1bĈ#F1bĈ#F1bĈ#.0'p "Lp!ÆB_Ĉ#F1bĈ#F1bĈ#F1bĆo|El/_|>  gРAO@ DPB >QD-^ĘQF G>E̷0@}80|!WQ?=zѣG=zqb>O>~˗ϟ@~ӗO?~+o?}O>} o_|'0@}ӗ?~o_>~g0A~o_~O_} /_/_>ѣG=zѣG'G0|'?|G0?~?}۷}󗯟|߿|/7_>/_?O|O` G 'p "Lp!ÆB(q"Ŋ/b̨q#ǎ#`> G_'_|O ?/|O`>O ?` '0| 70_> /?ѣG=zѣG=N`>0@/߿| ߿O߿߿|/߿_7p_>o |߿|/߿맏|7P?$HP?$XA .dC%NXE5nؑ`>o|_>>~#o~߿|/}/O?'0| O ? '0|ۗ_>>~sG=zѣG=z8170@_|ϟ|̗/_>~˗|ϟ| o`>/_>~ '0?ӗ/?O`>}|/?O@O@ DPB >QD-^ĘQF bycA}~=zѣG=z|~%J(QD%J(QD%J(QD(QD%JlD%J(QD%J(QD%J(Q|$J(QD'QD%J(QD%J(QD%Jx0?%J(QĆI(QD%J(QD%J(QD%OD%J(>~%J(QD%J(QD%J(QDO@ DPB >>~ H*\ȰÇ#JHŋ3jȱ#A$XA .dCO@ DPB >QD-^ĘQF=~/_> A $H A $H +˗$H A $H A $Ȋ $H A $H A 2?˗ϟ?@ $H A $H Al`>O@ DPB >QD-^ĘQF=~#| <0… :|1ĉ+Z1ƍ;z2dG~ o,h „ 2l!Ĉ'Rh"ƌ7r#Ȑ80,h „ 2l!Ĉ'Rh"ƌ7r#Ȑ 'P>$XA .dC%NXE5nlj$H  <0… :|1ĉ+Z1ƍ;z(| <0…˗,h „ 2l!Ĉ'Rh"ƌ7rcD} 8,h „ ԗ/,h „ 2l!Ĉ'Rh"ƌ7rcD~'_|_>~ A $H A $H˷}˗/H $H A $H A/_>~/_| A $H A $H A*0 ? 4xaB 6t"D H*\ȰÇ#JHŋ3jq> @ H*\ȰÇ <0… :|1ĉ+Z1ƍ7˗/_>~'p ,h „ 2l!ćE1bĈ#F1bĈ#F1bĈ#FL/_}'p>$XA .dC1bĈ#F1bĈ#F1bĈ#F0_| ˗_Ĉ#F1C}"F1bĈ#F1bĈ#F1bĈ#*O@8`A&TaC!B/bĈ#F1bĈ#F1bĈ#F1B? 4xaB 6tbD}"F1bĈ#F1bĈ#F1bĈ#2ܗ/_| ` ˗O Q|O@ w,h „ 2l!Ĉ'Rh"ƌ7rH03` ϟ|)0_|ylG=zѣG=z81/|㗏~o_}/?/>7P_>}`>'P߾|'P|/_~_|<ϣG=zѣG=zAo߾۷|'0/@~/߿|o|o|_>_>|'p ",h „ 2l!Ĉ'Rh"ƌ7rH0?_`>_|o`;o`>~ '0| /@@~ѣG=zѣG=N |߿|/߿߿߿ /o_>~o`0@/߿߿|Ǐ_(,h B} <0… :|1ĉ+Z1ƍ)7__`|O`>O?'0߿| G0?}w0@}/| }_>'S/;vرcǎ;vؑb>O?}O_>} ۗ/~˷O`>ϟ|_|ϟ|7П| '0|˷O`>~_>~ǯ#B}ӗ/;vQGuQGuE <` &Lp` &Lp>~˗/>$XA .dC%NXE5nH1 בc+`>O@ H*\ȰÇ#JHŋ3j1a>;vؑ>~O@ O@ DPB >QD-^ĘQFرcǎ `> 4? 4xaB 6tbD)VxcF9"cǎ;2Ǐ>$X ?$XA .dC%NXE5n0;vP8P /?$XA .dC%NXE5n0;vP˗OBرcǎ;vرcǎױcǎp_|˗_ǎ;vرcǎ;v0;vP?C/_>~;vرcǎ;vر#|:vر#C}C/_>~;vرcǎ;vر#|:vر#C}*˗_ǎ;vرcǎ;v0;vPױcǎ;vرcǎ;"cǎ;2ǯ|uرcǎ;vرcǎ(?$XA .dC 'q|I(QD%J(QD%J(QD(QD%Jlā'QD%J(QD%J(QD%JOD%J(>~˗D%J(QD%J(QD%J(`> 4xaB 6tbă8`A <0… :|1ĉ+Z1ƍ'p "Lp!CkذaÆ 8`A? 4xaB 6tbD)VxcF9vQ_|?~~?~Ǐ?~GAǏ?~Ǐ?rԗ/Ǐ˗Ǐ?~Ǐ?~>$ <0… /?$XA .dC%NXE5ncF? 4xaB 6,/_>~ H*\ȰÇ#JHŋ3jȱnj8P ,h „ 2lh_|8`A&TaC!F8bE1fԸcG80?$XA .dР|'p "Lp!ÆB(q"Ŋ/b̨q#ǎ5O@} H*\ȰAO@ DPB >QD-^ĘQF=nO@ H*\ȰAO@ DPB >QD-^ĘQF=n/_>}?~4/_>~?~Ǐ?~GAǏ?~Ǐ?roǏ˗Ǐ?~Ǐ?~c?"/?~Ǐ?~Ǐ?/?~Ǐ?~c~?~D/_>~?~Ǐ?~G˗o?/?~Ǐ?~#~_|}q|}Ǐ?~Ǐ-/~ /_|8`A&TaÁ <0… :|1ĉ+Z1ƍ;zO_|%/_}>~/_>~?~Ǐ?~Lj!|q|}Ǐ?~Ǐۗ/~˗ǏǏ?~Ǐ?~Ȱ|a/_}>~/_>~?~Ǐ?~Gǯ#||}Ǐ?~Ǐۗ/>ӗ/߾%˗Ǐ?~Ǐ?~`?}x߾|O@ DP… <0… :|1ĉ+Z1ƍ;z/_>}>2/_>~?6/?~Ǐ?~}b?}BǏ?~Ǐ;˗/˧ǏǏ?~Ǐ?~ܸ/_>}>j/_>~?/?~Ǐ?~c?}ѣ}@Ǐ?~Ǐ-˗/ ˗O_˗Ǐ?~Ǐ?~8߾|ۘ|qO_|8`A&Th_|8`A&TaC!F8bE1fԸcGǯ#|+ϣ}߾a/?=zѣG=z#|/|O|y/_|4'0_FѣG=zѣG5ۗ/>o?߾}X|a?~?}k/_>~=zѣG=z#~>~o`x߾|_> /5/?=zѣG=#,_|'p "0@_? 4x!A~0@ O Kh_|8`A&TaC!F8bE1fԸcG˷ϟG }o?<2/_} O@? /?$XA .dC%NXE5nQ |p/>}˧OG˧|˗G=zѣG=z߾|D~0@_|5/?=zѣG=za?}#~cBѣG=zѣG˗/?=v/~˗G=zѣG=zx߾|1|=/_?˗> 4xa|8`A&TaC!F8bE1fԸ~1b>0擘O`q`> 4x@~ H*\ȰÇ#JHŋ3jQ"|_|ۗ}ӗO߿|/_>Gp_|ۗo@~O |˧_?8O@ DH,h „ 2l!Ĉ'Rh"ƌ7r/_|6'0|o?߿|O`>~o|/||/}П 

_>@~70|˗@~ /@0ӗ/;vرcǎ;vرcDŽb?}O`O`>'P(0| `>O|8p/_~ H*\ȰÇ#JHŋ3jȱGǏb>O`_>@~+o?߾ϟ}˗q_|}Ǐ?~Ǐ!ۗ/߾~˧OO_|/|˗|˗@}ϟ|/_~/?}Ǐ?~Ǐ?Z/_>~?Q`|Ǐ?~Ǐ?j/_}>~OG~Ǐ}G}G}Gۗ/~ H*\Ȱ} <0… :|1ĉ+Z1ƍ;zH_|y| $H A $H 3ۗ/> AJ/_~ A $H A $H$H$H A $H A R`| 2} $H A $H AQD-^ĘQF=~_|/_|B 2dȐ!C 2dȐ!ӗ/>!˗O_!C 2dȐ!C 2dȉ/A/dȐ!C 2dȐ!C "| 9_| 2dȐ!C 2dȐ!Cr/_}>˗O_!C 2dȐ!C 2dȐO}2dȐ!C 2d!C `?}O_|B 2dȐ!C 2dȐ!C&/_}"˗/!C )B )B )B !˗/_>}8`A&TaC!F8bE1fԸcGAO_|ۗ/>"E)RH"E)RH" ۗ/~˗H"E)RH"E)Rȅ˷/_>}D)RH"E)RH"E>/_>OH"E)RH"E)RA}̗o`>"E)RH"E)RHw0?~ۗ/?"E)RH"E)RHw0߿|۷}"E)RH"E)RHӧ/_|70߿~˗߿8`A&TaC!F8bE1fԸcGAt`>_߿| H*\ȰÇ#JHŋ3jȱǏ C>0/߿_>$XA .dC%NXE5nG!O|/߿O`?$XA .dC%NXE5nG!!O@$XA .dC%NXE5nlj$Ȅ(,h „ 2l!Ĉ'Rh"ƌ7rcD~ ,h „ ܗ/_| H*\ȰÇ#JHŋ3jȱǏ'p~ H*\h0_|8`A&TaC!F8bE1fԸcG!˗/_>~˗$H $H A $H A/_|_|@DH A $H A d|/$B A $H A $H'p~ O@ DPB >,h „ 2l!Ĉ'Rh"7rܨ`>o @},h „ 2l!ć'p "Lp!ÆB(q"Ŋ/b̨q#Ǎ˗O|˗cǎ;ǯcǎ;vرcǎ;v/_|'0_>};vѠ>~;vرcǎ;vر#G _8`A&TaC!>/bĈ#F1bĈ#F1bĈ#F1B$? 4xaB 6t"D}"F1bĈ#F1bĈ#F1bĈ#.O@8`A&TaC!F/bĈ#F1bĈ#F1bĈ#F1"}˷߿|㗐 ˗/>#6̗/_>~ c/bāE1bĈ#F1bĈ#F1bĈ#Ft|C/|0|Ca>"F/bĈ#F1bĈ#F1bĈ#F1|O@~/ۗ@~+`'P?~O}O |˧| Ǐ|/_>˧_|_ӗO?}O@ ? 4xaB 6tbD)VxcF9v$|O ?߿|ȯ`'0|'0|/?~| ǯ`>'| '0| /qϣG=zѣG=z|O ?O` W0_|O` '0|_ '0|O ?'0| O>ѣG=zѣG'G0@'P/߿ ߿'P`?}O`?}O`>'P| /O? /_?}/߿_? 4xP?$XA .dC%NXE5nؑ`> >~O`@~+??O` /?}/|@~|O`>>~=zѣG=z|˗/?O`>?}+ |/@~_>O_|O_|3/_|ӗ/?˧O'0|˗G}ѣG<#<#<2|8`A&TaC!F$B~I(QD%J(QD%J(QD'QD%JP?˧OD%J(QD%J(QD%J0?%J(QĆܗ/_|$J(QD%J(QD%J(QD (QD%Jl_A~ ?'p "Lp!ÆB(q"Ŋ/b̨q#džuرcG 0  <0… :|1ĉ+Z1ƍױcǎ'|,(,h „ 2l!Ĉ'Rh"ƌ7rd_ǎ;vd} H ?$XA .dC%NXE5n0;vP'P',h „ 2l!Ĉ'Rh"ƌ7rd_ǎ;vdA~˧|uرcǎ;vرcǎ رcǎ K/_>}ǯcǎ;vرcǎ;vd_ǎ;vdB/;vرcǎ;vؑa>;vؑ>~ /;vرcǎ;vؑa>;vؑ>~ǯcǎ;vرcǎ;vd_ǎ;vd_Dرcǎ;vرcǎױcǎ_|:vرcǎ;vرcG ,h „ 2l!Ĉ/_>~%J(QD%J(QD%J(QD H*\ȰÇ# /?$XA .dC%NXE5n? 4xaB ˗/_Æ 6l /?$XA .dC%NXE5n | $H A $H #˗$H$H A $H A/_> A˗H A $H A 2|@/_>~ A $H A $Ȇӗ/_>} | $H A $H O8`A&Ta <0… :|1ĉ+Z1ƍ;z`>'p "Lp!Æ? 4xaB 6tbD)VxcF9v| <0…  /?$XA .dC%NXE5nѣG}  <0… /?$XA .dC%NXE5nѣG ? 4xaB 6/_>~ H*\ȰÇ#JHŋ3jȱǏ˗ǏǏ?~Ǐ?~_|}Q|}Ǐ?~Ǐ?ۗOǏ˗Ǐ?~Ǐ?~|>~8_|>~Ǐ?~Ǐ#AǏ?~Ǐ?~O_?/?~Ǐ?~cG(,h „ 2l8_|8`A&TaC!F8bE1fԸcG˗o˧ǏǏ?~Ǐ?~_|/_>~?n/?~Ǐ?~Eoa?}1|}Ǐ?~Ǐ)ӗ/?˧ǏǏ?~Ǐ?~(_|U/_>~?R/?~Ǐ?~C/c?}cDǏ?~Ǐ?6/_>~˧Ǐ/?$XA .dC%NXE5n}`||}Ǐ?~Ǐӗ/>ۗ/>?*/?~Ǐ?~A~!||}Ǐ?~Ǐۗ/~%ӗ/ ˗Ǐ?~Ǐ?~_?}k/_|/EǁǏ?~Ǐ?z/_~ aǏ?~Ǐ>h#˗o?$XP` /} /? ӗ/> 4hРA˗,h „ 2l!Ĉ'Rh"ƌ7r숱_|QG0?~O`_>&ۗ/~9˗G=zѣG=z |` '0| /?,˗/?ϣG=zѣG=zH߾|Øo?}(߿|߿|  O_|'?/c>U/?=zѣG=z豣}1_| /_>~ /|˗_G~w //|yѣG=zѣG˗o?=/_}*O |} ϣG=zѣG=z/_|~ 8_|8`A&TaC!F8bE1fԸcǂ#|yo_|=7P?/|yѣG=zѣG˗G'P߾|˗?}/_?'P?~˗/_ӗ//|yѣG=zѣG˗o? O`>~۷} _ '0? ˗ǂѣG=zѣG=6/_>~'0| '0|O ?'p "$XA O@ D,h „ 2l!Ĉ'Rh"ƌ7rO_|u?}O`>':N0 }'0?'0O_|_|'p  <0… :|1ĉ+Z1ƍ3˗/;v}:vرcǎ;vرcǎ ӗ/߾;vo_|uرcǎ;vرcǎ;&/_>}:v쨱|uرcǎ;vرcǎ;>/_>~;R/_ׯcǎ;vرcǎ;vqb?}ױ#| }ױcǎ;vرcǎ;v숑_|aԧ/>'P?~O}|ӗO?~O@ /_} H*\ȰÇ#JHŋ3jȱGb~O`>O`>_>~| Ǐ`?}˗Ǐ?~Ǐ?~?ob'0_AO`|_>~ G_Ǐ?~Ǐ?~ |o`~'0~'0|8߿| /߿ /_}8`A&TaC!F8bE1fԸcGӗ// '0 '0| _ _>$H A $H A߾|cO_}˧O˗O>~ '0?}?}`>$H A $H A |Sd}$H A $H A|;~$H A $H Ap_|/_|@ $H A $@ $$_|'p "Lp |O@ DPB >QD-^ĘQF=~i߾| 9߾| 2dȐ!C 2dȐ!C\/_>}B>/_>~!C 2dȐ!C 2dȐ˗_ȅ/dȐ!C 2dȐ!C }| 2dȐ!C 2dȐ!C/_|B/_}!C 2dȐ!C 2dȐ˗o~2dȐ!C 2dȐ!C }뗑_| 2dȐ!C 2dȐ!C4/_|(ۗ/>!C )B )B )B )$/_}8`~ <0… :|1ĉ+Z1ƍ;z2$}뷐_|)RH"E)RH"E/_|˗O?"E)RH"E)RH˗o˷OH"E)RH"E)RdC~ ? 4xaB 6tbD)VxcF9vdH#|"E)RH"E)RH"˗`|)RH"E)RH"EL/_>O|)RH"E)RH"E/_>/߿}'RH"E)RH"E)r|O߿| 'RH"E)RH"E)r|_)RH"E)RH"E9P_| /?}'RH"E)RH"E)r|_? 4xaB 6tbD)VxcF9vdH)RH"E)RH"EP|O@ DPB >QD-^ĘQF=~#| <0… :|1ĉ+Z1ƍ;z2d} (? 4xaB 6tbD)VxcF9vdȏ ,h „ 2l!Ĉ'Rh"ƌ7r~|O@ DPB >QD-^ĘQF=~`>'p "LpA  <0… :|1ĉ+Z1ƍ;zq| <0…˗O,h „ 2l!Ĉ'Rh"ƌ7r#~ ȏ| H*\h0_|8`A&TaC!F8bE1fԸcG!'P  <0… <0… :|1ĉ+Z1ƍ;z1_|`>8`A&T`>$XA .dC%NXE5nLj˗_|(? 4xaB 6t"D$XA .dC%NXE5nQ_|˗|,h „ 2l!Ĉ'p "Lp!ÆB(q"Ŋ/b̨q#Ǎ |رcǎرcǎ;vرcǎ9'p`'p "Lp!ÆB|_Ĉ#F1bĈ#F1bĈ#F1bĄ ~ H*\ȰÇ1bĈ#F1bĈ#F1bĈ#FQ!| <0… :|>~#F1bĈ#F1bĈ#F1bO@8`A&TaC!F/bĈ#F1bĈ#F1bĈ#F1"C <0… :|1?}$J(QD%J(QD%J(QDG0_|%_>(0_|(1!?~;ObB}$J(QD%J(QD%J(QDG0@}/|OĆ|'QD%J(QD%J(QD%Jx0?'_|˧'_| #?}/_>G0|O>~O}O |ӗO?~>~O`>'0| /O@ <0… :|1ĉ+Z1ƍ;`>'|_ W0|o| ǯ`'0|O`>| _>GO`>|} ѣG=zѣG'G0|O`>_>~G0?} O ? ˗/> G_>_>~ /?3߾~O`>'?}-? 4xaB 6tbD)VxcF9R`O@_(߿߿|ۗ@O|Ǐ_>Ǐ_>|@O@} 짏| '0? ߾|8p>~ O,h „ 2l!Ĉ'Rh"ƌ7r|@~_>'? ߿||| '0?}/?}/A~ | _ | C/_|:vرcǎ;vرcG̗/_>~˗|'0?WП|/_|˗|/>}/_>}'0|˗|˗|`|߿}O@~ ?Gp| <0… :|1ĉ+Z1ƍ)ױcǎW|O@ H*\ȰÇ#JHŋ3jȱa>;vؑ>~'p 'p "Lp!ÆB(q"Ŋ/b̨q#GuرcG 0  <0… :|1ĉ+Z1ƍױcǎGp|,? 4xaB 6tbD)VxcF92cǎ;2ǯ?} ߿  <0… :|1ĉ+Z1ױcǎw_|#/_>~;vرcǎ;vر#|:vر#C}˗OAرcǎ;vرcǎױcǎP>ױcǎ;vرcǎ;2cǎ;2Ǐ?ױcǎ;vرcǎ;2cǎ;2/|uرcǎ;vرcǎ رcǎ /_>~;vرcǎ;vر#|:vر#C}"˗_ǎ;vرcǎ;v@'p "Lp!ÆBHP'QD%J(QD%J(QD%J$ϟD%J(QbC}"˗D%J(QD%J(QD%J(`>%J(QD /_>~%J(QD%J(QD%J(QD8`A&TaC!F,,(_|8`A&TaC!F8bE1fԸ#C$XA .d/_| 6lذ?$XP|'p "Lp!ÆB(q"Ŋ/b̨q#ǎ?ӗ/H $H A $H AQ_| A/? A $H A dD} _|@ $H A $H /_|$G $H A $H A60'p "Lp!Æ? 4xaB 6tbD)VxcF9v`>'p "Lp!Æ? 4xaB 6tbD)VxcF9vر| <0…  /?$XA .dC%NXE5nѣG}  <0… /?$XA .dC%NXE5nѣG ? 4xaB 6/_>~ H*\ȰÇ#JHŋ3jȱǏ˗ǏǏ?~Ǐ?~_|}Q|}Ǐ?~Ǐ?ۗ/Ǐ˗Ǐ?~Ǐ?~|>~8_|>~Ǐ?~ǏǏǏ?~Ǐ?~|O@ DPB ˗,h „ 2l!Ĉ'Rh"ƌ7rq}||}Ǐ?~Ǐ3ӗ/ǍǏ?~Ǐ?~/_|˗/3˗Ǐ?~Ǐ?~}|Ѣ|}Ǐ?~Ǐ%˗/GǏ?~Ǐ?~/_>}2˗/%˗Ǐ?~Ǐ?~a?}߾|!@ <0… :|1ĉ+Z1ƍ;z\/_|>/~?6/?~Ǐ?~#B#~BǏ?~Ǐ?/_}˗_B~o_|}_|>~Ǐ?~Ǐ˗|C#|Ѡ|}Ǐ?~Ǐۗ/> O |ӗO?~O |1/_}?/?~Ǐ?~c?}O@_>_>~O  ۗ/~ H*D/_>~ H*\ȰÇ#JHŋ3jȱF~1|O`>_>~E/_>~=/?=zѣG=zc~obO@_(,8|3hРA 4H_|8`A&TaC!F8bE1fԸcGbO ? /|_}Q|yѣG=zѣG ˗O_?O?}O`O_|0˗/ |yѣG=zѣGӗ/>=V/_}*'0_FѣG=zѣG=˗/?7˗O_O |/_> ϣG=zѣG=zo_|y_| /@~?~ /_>~ H*\ȰÇ#JHŋ3jȱ~b> ˗o@~_|~ H*\ȰÇ#JHŋ3jȱcAcA~o_>~|㗯@~?˗|˗G=zѣG=z(_|y}<2O`>O`>@~y\/_|</?=zѣG=za?}qa?_߿|/߿'P8`A/_} H? 4xaB 6tbD)VxcF9f/_>~_>o?O` _O@ D,h „ 2l!Ĉ'Rh"ƌ7ro_|u/_>}'0?'0O_|8q|,hA~ H*\ȰÇ#JHŋ3jb?}ױcǎ ˗/@},h`~ H*\ȰÇ#JHŋ3j}ױcǎ˗_ǎ;vرcǎ;vرc~ױcǎ˗o;vرcǎ;vرcDŽ˷_ǎׯc?}رcǎ;vرcǎ;v|/_|:v|˗o;vرcǎ;vرcGc>O߿?}/?/߿_߿ O_|8`A&TaC!F8bE1fԸcG˗o| O` '0| '0߿||˗Ǐ?~Ǐ?~?ob/|/| O@(߿|/,8߾|O@ DPB >QD-^ĘQF=~4/_|"߾|'0|'0|'',ӗ/? A $H A ~a>}/>}/_>}'0|O`>~O`˗/_? A $H A $H~0H˧H A $H A $~/a>˗oH H*\Ȱ!B~ H*\ȰÇ#JHŋ3jo_|mȐ_|m0 <0… " <0… :|1ĉ+Z1Ɗoƃ˧ƍP <0… ̗O,h „ 2l!Ĉ'Rh"ƌ/ۗ/߾~7 /_}7̗/7./7nܸqƍ7nܨ_|m/_|6n7n\/_>}7nܸqƍ7nܸq~oDoƄqƅӷqƍ7nܸqƍ7/~ӗ/߾˗ƍ˗Oƍ7nܸqƍ7nh|m\/_|6nt/_>7n\/_>}7nܸqƍ7nܸq#BocA? 4xaB ˗C 2d|'p "Lp!B(q"Ŋ/b̨qB~DZ|q1_|8r_|8rȑ#G9rȑ~"|qb|q|qȑ#G9rȑ#G˗}Ǒc|ȑ#Bȑ#G9rȑ#G ӗ/> ˗oG#G˧#G9rȑ#G9r4o_|%/_>~9j̗/?90'p "Lp!ÆB(q"Ŋ/b̨q~Wp_|q1_|8rX`> O@ DPB >QD-^ĘQƊ˷|qq`|qȱ`?? 4xaB 6tbD)VxcF3˗/?9̗/?90'p "Lp!ÆB(q"Ŋ/b̨qF}q`|1O~9F08`A&TaC!F8bE1fԸq|8rh0_|O|8`A&T> O@ DPB >QD-^ĘQFȑ|K0'p "Lp| <0… :|1ĉ+Z1ƍǑ#Gp| <0…˗? 4xaB 6tbD)VxcF3O@߿'p "Lp|C/_|˗OC 2d/?$XA .dC%NXE5n`>? <0… `|08`A&TР?} H*\ȰÇ#JHŋ3jܸq| O| o_|8`A&T`|ԗ/_>}˗/_>$XA .dC'p "Lp!ÆB(q"Ŋ/b(`>O|o߾'p "Lpa|;/_|_|'p "Lp!ÆB|,h „ 2l!Ĉ'Rh"ƌ'p O߿|O@ DP‚wp| ,h „ 2l!ćE1bĈ#F1bĈ#F |O|˗o`>$XA .,/_>_}˗oC 2dȐ!C ? 4xaB 6tbD)VxcƁ˧`>ӷ|5N̗/?O |QF+QF5jԨQF`ӗ/_?'˗_B$? 4xaB 6t"D}"F1bĈ#F1bĈ#Fh_>}#F`|)O@? W`| G0_ ǯ`A˧| ,X` <0… :|1ĉ+Z1c|5jl/_> ˗/>ۗ0| #/c'1ƃiԨQF5jԨQF5̗//|ӗO߿|/_>|/_>ϟ|/?/_>o_|Ǐ`>Ǐ߿}/_~_|4OF5jԨQF5jԨ`|5珠|O`>/߿}'0?ȏ_'P`} '0o|o| 7'0|? 4hP?$XA .dC%NXE OF a>O| '0| '0|@~O>O`>3_3/_|O` O` >~5jԨQF5j谟|˷F˗_|'P__/߿߿__} _ۗ߿߿'0@}맏|O@ H'p "Lp!ÆB(q"/b/_|˗/3*̗/ o>~O`>o?ϟ `>~o`>}/@~O߾ g0| 䧏߿|'0?}>~ 1cƌ3f̘1cƌ ˗O_˷/cƌa>O߿}߿|/_~ ̷/_|˗_A|/_>~ /_~/_~O|o`>˧Oӗ/?$XРA}˗/?$XA .dC%NXE˗C/cƌa>3f̘1A} ˗/_>3f̘1cƌ3fX_|E/_>~3f/_> ˘1cƌG|O@ DPB >QD-^(߾|O_|e̘1_|1cƌ3O`?$Xp ?$XA .dC%NXE}#0(,h_>$XA .dC0  <0… :|1ĉ+ZȐ_|a 3|aĈ#E}O@O@ DPB >QD-^LO_|a\o_|aH1_|g0A~o_~O_}/_/_>1bP'p ?/?$XA .dC%NXŃcD~|kϟ|O`>O`~ϟ>/@~1bP(˗,h „ 2l!Ĉ'Rh"Ac~#|kϟ|O`>o`'0߿|È#F/_>#F1bĈ#F˷#F˷F a> O@߿|_/߿ ? 4xaB 6tHP;/>|Ç>|Ç ˗/*/_~>t/_> 3o>~O`>߾/|Ç>|>~ ;/>|Ç>|Çۗ/>>tO_|>|0_|g0@'0| ̧/>˧Oӗ/>|aA}̗Ç>|Ç>|Ç˗Ç/_>}>||'p ,X`8`A&TaCq`| B"D!B"D˗O_?!B,/_| BH0_|Qa>!B"DA/?!B"D!B"D˷D!&/_}!B/_> "D!BP?"D!B"D!B_|A$|Ado_|A} o_|A_|O@ O` ˗A'p "Lp!ÆBHP?'QD%J(QD%/_}$/|ӗO߿|/_>|/_> ӗ/>O_| ˗_|$J(QD'_|$J(QD%J(QĂOA'0| _O`>~Ǐ_>$ܗ/~7_>o|kϟD%J(QbC}$˗D%J(QD%J(߾| 4߿~O`>o`>o߿|;x~w@ O ?}/_> O@ DPB >`>~ H |'p "Lp!ÆB(q"Ŋ˗E _߿|߿_o@ H˷'P~O|8p H*\Ȑ_|6lذaC H |'p "Lp!ÆB(q"Ŋ˗ń _ '0|/|o>~_|1GP? g0_|,Zh|,ZhQa|,ZhѢE-ZX߾|pۗO>'0?'0|˗O?}Ȱ|)GП|˗/_?gѢEgѢE gѢE-ZhѢŁϢE-/_},̗/?-Z$/_>-ZT/?-ZdEYdE|O@ DPB >/_| *̗/?!BP_|!B|A"D!B"D˗o?!BT/_~!>/_>} H <0… O8`A&TaÁsСC:tСC:t/_|:t|s} H'p "Lp!Å 8,h „ 2l80_>~:tСC:tСC˗/_?'0?'_|O_|ϡC'p  <0… O|8`A&TaCsСC:tСC:t8|9t`>߾ '0|G> /_} H8`A&TaC? 4xaB 6$/?:tСC:tСC˗O_? '0?} O ?篠|:/_|:tСCO} H*\Ȱa|9tСC:tСC:D/_|:tO`>`>_}_>$XA˧_„ &L0a„ &L0@ H*\Ȱ|9tСC:tСC:TO_|9t0߿~>~:t߾|sСC:t(_|9tСC СC:tСC:t|s0|/_~˗|˗|"/_>~:tСC ˗ϡC:t/?:tСC:tСC˗/?:t?~СC:t!|:tСCsСC:tСC9C } <0… ܗ/~:tСCsСC˗C:tСC:tСC˧C:tX߾|sСC:tСC:t/_>~:tСC:tСC"/_>~:t~СC:tС}9tСCСC:tСC:tСBϡC*/~:tСC˗/|sСCϡC:tСC:tСÆϡCo_|'p "Lp!ÆBo_| ܗ/~#Fa|"F1bĈ#F1bĈ ˗o_Ĉ#/_>~#F1bĈ˗B~1bĈ /bĈ#F1bĈ#F߾|1C~1bĈ#F8߾|co_|E1bā1bĈ#F1bĈ#F/_>~#F\/_>}"F1bĈ˗/߾˧_Ĉ#F/#F1bĈ#F1bD˷_Ĉ ۗ/>#FQDE@ۗ/~ H}0"/_~1b}2dȐ!C 2dhp_|1dȐ~ǐ!C Ǐ!C 2dȐ!C 2dȐ!C 2dp |c߾|cȐ!C 2dȐa~!C ۗ/~ 2d`|2dȐ!C 2dȐ!C 2dȐ!C ӗ/> ӗ/? 2dȐ!C /_>~ 2d|cȐ!C!C 2dȐ!C 2d!b!b!˧,/_|8`A&TaC!/_}"F谟|1|E1bĈ#F1bĈ#FL/_|˗o#F1b/bĈ˗O_#&̗_Ĉ#F1bĈ#F1bą˷_~1bĈ#F|(0_?拘_|E`|"F1bĈ#F1bĈ#:/~˗_Ĉ#F1?~ |/bĄ˷_D /"|E1bĈ#F1bĈ#"'P`?$XA .dC˷ăO`_~O>~/_>}"A~Qa>A4/?!B"D!B"D!/?!B"ăbB'0| _O`>~Ǐ_> /_>~?ϟ|)̗D!B"D!B"D `~A"Dۗ/߾~>O`>O`>/@~O@ /_};80_>~ H*\ȰÇ#JHŋ`|e̘1cD~㗱 |߿|/߿_߿~(,h |;xР|'?},/?$XA .dC%NXEw0?~ۗ/3fLo_|e4/@}/| O߾ '0?'˗|(߿~O@O@ DPB >QD-^Ĉ0_>~_}ۗ1cƌ˗_Ƅ ߾| _>ӗ/_?/_|˗_F˷|/cƌ3f̘1cƌ`˗o`3f$o_|e̘1C~0@_|)̗_ƌ3f̘1cƌ3"̗|˗o`3f/_|2f̘qb?}0_>~3f̘1cƌ3f̈0_>~ /} <0… "/_>}:,`>sX0CϡAϡCsСC:tСC:tСCw0@~˗C:tP_|9tx0_|9DϡÁ0!?$XA'p "Lp!ÆB(q"Ŋ/bD/3fO_|2˗}/|˧'P߾|˗| ϟ|/?ӗ/?˨`> 4x!?$XA .dC%NXE1c˷_Eo?~_>o߾ _ '0_|} '0|G>'p "? 4xaB 6tbD)Vx#|e̘1E~g_o`>/| G_> }'|W_/cƌ3f̘1cƌ3V̗_ƌ3b/_>~/߿|70| ̗o`>O?~+O`>0@߾|/,H_|'p "Lp!ÆB(q"Ŋ/bx1_>~5jh߾|=|/?}'0߿|_>?+_| ̧@~o`>OF5jԨQF52̗F5fܗ/> ˧O?ϟ| /˗|/>}+/>}˗?}|#ϡ}ӨQF5jԨQFQF˗/_?5^/_>~5jԨQF5jF/?$XA .dÆ"D!B/_>} B"D!B"D!B"Ă"D!B~!B"D ˧D!B~ H*\ȰÇۗ/>#FX߾|1bĈ#F1bĈ#F1bĈ 1bĈ#F_|E1~1bĈ#F1bĈ#F1bĈ/bĈ#Fa|1C~1bĈ#F1bĈ#F1bĈ!/bĈ#Fa?}1bB/bĈ#F1bĈ#F1bĈ#F/#F1bĈ˷_Ĉ ӗ/#F1bĈ#F1bĈ#F`>'p "Lp!ÆB8_|I_|I(QD%J(QD%J(QD(QD%Jt/_|$J\/_>}$J(QD%J(QD%J(Q"|I(QD%B/_}%/_}$J(QD%J(QD%J(Q|I(QD%J/_}$JO_|$J(QD%J(QD%J(Qb|I(QD%J/_>}$>/~%J(QD%J(QD%J(qa|$J(QD%P|O@ /_}8`A&TaC!F8bE1fԸa|8rȑ#˷c?}ȑ#G9rȑ#GǏ#G9r$/_>}&˗/?9rȑ#G9rȑ`|8rȑ#G!|ȑ#G9rȑ#G Ǐ#G9rDO_|ۗ/>9rȑ#G9rȑ#|qȑ#G ˗o~Ǒ#G9rȑ#G9.̗G9rp_|/_~9rȑ#G9rȑc|qȑ#G/_|_~ <0… :|1ĉ+Z1ƍǑ#G9>/_ Ǒ#G9rȑ#G9̗G9r_|O`>Ǒ#G9rȑ#G7Ǐ#G9r|/_>}_#G9rȑ#G9n̗G9r_|O߿| Ǒ#G9rȑ#G7Ǐ#G9r|/_>} /߿|qȑ#G9rȑ#Ǎȑ#G_|o`>o?8rGqGqG/?$XA .dC%&O@߿O`?$XA .dC%NXE5nl/?9rȑa? <0… :|1ĉ+Z1ƍǯcǎ;v<0'p "Lp!B(q"Ŋ/b̨q#رcǎO@} H*\ȰÇ#JHŋ3jQ`|:vرcG(,h „ 2l!Ĉ'Rh"ƌ7r/;v|ױcǎ;vرcǎ;̗_ǎ;vP_|uرcǎ;vرcǎױcǎ;&/߾;vرcǎ;vؑ`|:vرcGuرcǎ;vرcǎױcǎ;.ױcǎ;vرcǎ;̗_ǎ;vl> 4xaB8`A&TaC!F8bE1fԸ`|8rȑD~8`A&4,h „ 2l!Ĉ'Rh"ƌ7̗G9rONjqȑ#G9rȑ#Gȑ#Gx1?9rȑ#G9rH1_>~9rQ"?}/Ǒ#G9rȑ#G)Ǐ#G9J|8rȑ#G9rȑ#|qȑ#GqG9rȑ#G9r/?9r(>ȑ#G9rȑ#GǑ#GSONjqȑ#G9rȑ#Gȑ#G㇐>ȑ#GqGqGQP|8`A&TaC!.ԗ/_~{0@߿| ? ,h „ 2l!Ĉ'Rh"ƌ7̗G9rQD-^ĘQF H*\ȰÇ#>$X0_/|,X0?$XA .dC%NXE5n40 <0… :|1A'p __  <0… :|1ĉ+Z1ƍ8` H*\ȰÇ 8P O@O~O_O@ DPB >QD-^ĘQF=~iP|?~8`|/_>W`|8`A&TaC!F8bE1fԸcGAԗ/_| `>?~,/?$XA .dC%NXE5nG ?}!%2dȐ!C 2dȐ!C iP߾􅔘_Ȑ!C 2dȐ!C 2dD~BJ/dȐ!C 2dȐ!C 2"?}!%2dȐ!C 2dȐ!C  2dȐ!C 2dȐ!CO_H 2dȐ!C 2dȐ!CF/|B݆ 2dȐ!C 2dȐ!# <0|8`A&TaC!F8bE1fԸcGAFP <0!B H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH*]ʴӧPJJիXjʵׯ`ÊKٳhӪ]˶۷pʝ;5 ;;PK:&$PKfUIOEBPS/img/repma014.gifGIF87aXX?**?***UU?UUU????**?*******?*******U*U?*U*U*U**?*****?*****?*****?***UU?UUUU*U*?U*U*U*UUUU?UUUUUUUU?UUUUU?UUUUU?UUUUU?UUU?**?***UU?UUU?????**?***UU?UUU?????**?***UU?UUU?ժժ?ժժժ???**?***UU?UUU?????***UUU,XX H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜI͛8sɳO8`A&D <0… :|1ĉ+Z1ƍ;zR} H? 4xaB 6tbD)VxcF9vD}BF/dȐ!C 2dȐ!C R>~!#2dȐ!C 2dȐ!C )Q 2dȐ!C 2dȐ!C_Ȉ 2dȐ!C 2dȐ!CJ/dDB 2dȐ!C 2dȐ!%2|!C 2dȐ!C 2dȐ _!C 2dȐ!C 2dH/_Ȑ!C 2dȐ!C 2D}˗/(߿o@ ? <0… :|1ĉ+Z1ƍ;zR>~ /˷o`̧_!C 2dȐ!C 2dH%7_o`>S/_Ȑ!C 2dȐ!C 2D}_||#O|!C 2dȐ!C 2dȐS؏|߿~'P`O@ DPB >QD-^ĘQF=~)Q? o` _߿8| H*\ȰÇ#JHŋ3jȱǏ %ㇰ '_7П>2dȐ!C 2dȐ!C )Q˷`> _>S/_Ȑ!C 2dȐ!C 2D}BF/dȐ!C 2dȐ!C R>~!#2dȐ!C 2dȐ!C )Q 2dȐ!C 2dȐ!C_Ȉ 2dȐ!C 2dȐ!CJ/dDB 2dȐ!C 2dȐ!%2|!C 2dȐ!C 2dȐ,h „O@ DPB >QD-^ĘQF=~)Q|,h „8`A&TaC!F8bE1fԸcGAJO@ ̗/_O@ DPB >QD-^ĘQF=~R|)RH"E)RH"E/_>"E)RH"E)RH"%˗ϟH"E)RH"E)RH'RH"E)RH"E)R|)RH"E)RH"E/_>"E)RH"E)RH"ӧO_|ӧOH"E)RH"E)RB 8p,h „ 2l!Ĉ'Rh"ƌ7r#Ȑ'p@$XA .dC%NXE5nG!?'p`>~ H*\ȰÇ#JHŋ3jȱǏ C~0 H*\ȰÇ#JHŋ3jȱǏ CO@~ H*\ȰÇ#JHŋ3jȱǏ˗/~ A&/_| A $H A $HO|8`A&T`|'p "Lp!ÆB(q"Ŋ/b̨q#ǎ?Fԗ/_|˗OH$H A $H A_|0@8`A&T`~ H*\ȰÇ#JHŋ3jǏ˧ϟ  <0…'p "Lp!ÆB(q"Ŋ/b̨q#ǎ?F0O@ DPB >QD-^ĘQF=~2?0 <0… :|1bA} H*\ȰÇ#JHŋ3jq?7p`?$XA .dCO@ DPB >QD-^ĘQF8 H*\ȰÇ1bĈ#F1bĈ#F1bĈ#F1> 7P>$XA .dC1bĈ#F1bĈ#F1bĈ#F| <0… :|"?}#F1bĈ#F1bĈ#F1bĈO8`A&TaC!B/bĈ#F1bĈ#F1bĈ#F1B(P,h „ 2l!Ĉ(QD%J(QD%J(QD%J~ IDODI(QD%J(QD%J(QD%珠~ ܗ/?'P߾|˗ϟ@~ӗOA~O_|د߾~/_>/_>O_>~|$JlOD%J(QD%J(QDI$DI$A߿8p߾ _>_>_O`o}o߿~߾'|/ '0,h „O@ DPB >QD-^ĘQF-`>O`>@~ /A`?~>70߿|O`>'0_NJuرcǎ;vرcǎ0?o`>O` />~ / >ۗ߿|(߿|/߿Ǐ_'p "LX>$XA .dC%NXE5nX_|G>ӷ| '0|ϟ}G070~_>~ /?}/||uO_ǎ;vرcǎ;vX_|3_A~O_|O`>ӗ/_>~˧O?G_| O|?}O`>˗O>~H;vرcǎ;vر"?߿'p "Lp@2dȐ!CO@ DPB >QD-^ĘQƌ8`A_> H*\_~ 2dȐ!Á'p "Lp!ÆB(q"Ŋ/b̨qcF~ H߿| H˗|"D!B"D ?} H*\ȰÇ#JHŋ3jܘ|,h A~߿O_>$H0_/8`A&TaC{Ç>|Ç>|Ç>|!|'p 'p ߿|?}ӗO?~Ǐ߿_~˧?8`A&TaC9tСC:tСC:tСC:tB~sh_|W0?Ǐ_ / _>Wp>~|9tСCСC:tСC:tСC:tСC ϡA~w0?_>ӷ|__'C:tp ?}:tСC:tСC:tСC:t_|䗏_|ϟ맏|ۗ߿'P| @|O@ DPB СC:tСC:tСC:tСC ϡA #?}?O` /_~/߿|ϟC:tP ?}:tСC:tСC:tСC:t_|:$||/_|O_|3/_|?}sСCϡC:tСC:tСC:tСC˗ϟCsСC:t@~:t!r!r!r!r!r!rȡ/?$XA'p "Lp!ÆBH>%J(QD%J(QD%J( |ItϟD%J(QbC~$J(QD%J(QD%J(Qă'a>%J(QD (QD%J(QD%J(QD˗ϟDI(QD%6OD%J(QD%J(QD%J'QD%Jؐ>%J(QD%J(QD%J( |ItϟD%J(QbC~$J(QD%J(QD%J(Qă? 4x`> H*\ȰÇ#OD%J(QD%J(QD%J'p "Lp!ÆBxP,h „ 2l!Ĉ'Rh"ƌ7f/?8`A&T|kذaÆ 8`A&TaC!F8bE1fԸ1#|qq|qȑ#G9rȑ#G9r,/_>9rܨ/_>9rȑ#G9rȑ#G ˗G7˗G9rȑ#G9rȑ#ǂǑ#ǍǑ#G9rȑ#G9rȱ |qq|qȑ#G9rȑ#G9r,/_>9rϟ?ϟ?9rȑ#G9rȑ#G#G'p A$XA .dC%NXE5ncC~C? 4xaB 6tbD)VxcF9vؐ_|>~| <0… :|1ĉ+Z1ƍ;zt/_>?~0'p "Lp!ÆB(q"Ŋ/b̨q#ǎ˗Ǐ!O@} H*\ȰÇ#JHŋ3jȱLJ?}>~l/_|}Ǐ?~Ǐ˗_~ ,h „ /_} H*\ȰÇ#JHŋ3jȱGq| <0… <0… :|1ĉ+Z1ƍ;z/_>˗~B}Ǐ?~Ǐ#˗|o?B~?~Ǐ?~G1_|'0_|>~Ǐ?~Ǐ?v/?8P߿~O@ DPB >? 4xaB 6tbD)VxcF3˗ϟ~ _?$XA .dC O@ DPB >QD-^ĘQƌ_|`>8`A&TaC!>/bĈ#F1bĈ#F1bĈ#FȐ_|"*̗/߾80,h „ 2l!ćE1bĈ#F1bĈ#F1bĈ˗_DW0_|"F1bĈ1bĈ#F1bĈ#F1bĈ#Fd/_>'p A} H*\ȰÇ!1bĈ#F1bĈ#F1bĈ#Fd/_>'p@} H*\ȰÇ#1bĈ#F1bĈ#F1bĈ#Fd/_>˗/_>}˗_Ć ? /_O@ DPB'p "Lp!ÆB(q"Ŋ/b̨qcF~H0? Ob>0|9f䧏#G9rȑ#G9r\/_> GP_| /_/_>'_|ӗo| /O_>}ۗ/?ǑB~8rȑ#G9rȑ#DžǑ`>|O`>'|/@~߿|| '0|O`>~q丐>9rGqGqG /_> H#`> G_>'A /߿_|O߿| H*\>$XA .dC%NXE5n/_> G0} O@߿| ߿|@_߿/߿߿|/,h „ ? 4xaB 6tbD)VxcF3˗GO } O ?O` o`O ?o߿|ӷO`|'0|O`>8r\OG9rȑ#G9r丐_|8 | 'П|/>}O_|#?}O_}ϟ|˗O>~ϟ| '0G ȑ#G9rȑ#G˗Gq̘#Gȑ#G9rȑ#8h!? 4x`>"Da|"D!B"Dx>$XA .dC%NXE5n/_> Ǒ#G#Ǒ#G9rȑ#G9./?3| !Ǒ#G ȑ#G9rȑ#G˗Go|1Ǒ#qȑ#G9rȑ#G #| |ӷ/_?} 'P߾|/_>O_>}O>~8rh>9rȑ#G9rq!|q$A'p߾_~ '0@~/_>~/߿߾O@ DPB O@ DPB >QD-^ĘQƌǑ`>O|'0| '0|O` /|q!?}8`A&TaC8`A&TaC!F8bEb|'P_߿|/߿ۗ߿|>~_/,h „ 2l> 8`A&TaC8`A&TaC!F8bEb|7P_>O`>70߿| |ӷ|]x"?}8`A&TaC8`A&TaC!F8bEb|7ӧ_>O`>/_~O |/?'0ŋ/w1_|.^xѠ|]xŋ/^x"|]Lŋ/^8wŋ˧ŋ/^xb|.^xʼn]̗//^4/_>}/^xŋ/^/_>wŋ/Nb|]xAxŋ/^xbE~0/袋&>$XР|;x/^xD~.˗///^xŋ/V/ xŋ'w1_|.^xѠ|]xŋ/^x"|]L@,h „ 2l!ĈO@ ̗/}/^xŋ/^/_>/^8Q_|.^x1a|]xAxŋ/^xbE~xʼnwŋ ŋ ˗Oŋ/^xŋ+˗ŋ/Nԗ//^L/_>/^h_|.^xŋ/^X_|.^xq|]xb|xEwŋ/^xŊwŋŋ(@ H*\Ȱ~ۗ/_>~sСC:tСC:t!A~sСC&Ǐ|ǏC:t0_|:tСC8>$XA .dC%NXbD~xŇ8p>$XA .d`|9tСC 'p@ H*\ȰÇ#JHňwŋ'p@$XA .da|9tСC 8P ?$XA .dC%NXѢD~xE80>$XA .da|9tСC 'p`>$XA .dC%NXD~xň8? 4xaB 6L/_>:taC} ? 4xaB 6tbD)V8_|.^xQ"|O@ DPB ˗ϟÁ(,h „ /_|2dȐ!C 2dȐ!C 2dȐ!Äǐ} ? 4xaB ˗/_> 2dȐ!Âǐ |O@ DPƒ!C 2dȐ!C 2dȐ!C 2L/_> O H*\x0_|2dȐ!C ˗Á'_|1dȐ!Cǐ!C 2dȐ!C 2dȐ!C */? ˗~ǐ!C ˗!C 2d`|1/_>~/_|2dȐ!C~2dȐ!C 2dȐ!C 2dȐ!Åǐ@}߿~ǐ!C ǐ!C 2dh0_| ̗//_| 2dȐ~ 2dȐ!C 2dȐ!C 2dȐB~cp`>O߿~ <0…1dȐ!C ̗/?˗O@˗? 4xaB 6tbD)VxcF|O| H*\ȰÇ#J,/_> ˗o߿}O@ DPB >q ?$XA .dC%N4/_> O@~O@ DPB >q>$XР|;h_|'0_|8`A&TaC!>? 4xaB 6tbD E˧O_|˗@,h „ 2l!D'p ˗A'P߾˗? 4xaB 6tC}"F1bĈ#F_|"*̗/_ ̗/_#F1bćE4/_>˧ϟ~˷/bĈ#F>~#F1bĈ#FL/_>˗/?˗o_Ĉ#F1C~"̗/?8`>$XA .dC1bĈ#F1bB~| <0… :|"?} ˗} 8,h „ 2l!DE1bĈ#F1!|E\`>O@ DPB >"?? 4xaB 6tbD}"F1bĈ#F_|"20'p "Lp!ÆBO_D_|/_>~˗/ED`"F8P#F1bĈ#&/׏|x0_|+`>"F,0@8 |,X_ O_ ̗/  ?}+X| 7P_` +Xp` ,X`  <0… :|1ĉ"|'_> O|[o?}=G ?}˗|7@}/?/W0@˗?}/_?'_|ӗ/W0_A~O`/_>)Ǐ"E)RH"D~0O>~O}ӗO|Ǐ?~ |O| /o|˗_| /_>ӗo߿/_>˗?}o_|ӷ/?$ /_> $|_>'0߿|ȯ`>'0|O`>~O`㷏_> +_>~ O|W` ,XP?$XA .dC%N4/_>70_|O`>~ W0@~'0_?~O`>~o߿~'߿|G0߿}W0~'|/߿|?} '0߾}߿| 80_|&G0|ȏ|O #/|o`ӷϟ|+`O?H>~)RH"E!˗E 7P_|#/| W0|/߿o_˗߿_}80߿| 0@/߿|߿_/߿W``#>'P~/߿_>~_?}/߿Ǐ_o@?'0| /?$XA O@ DPB >QDGa>#/|/| W0|/|8_7P_> 7 _@ 짏| ̗o`>8p@~8po O`> /O? o~/|/|ۗ?O? o| '0߿}? 4xaB}8`A&TaC!F8 |Qd~ /|/| W0|㧏|'?}O?``O ?o߿|'0߿|'0|O`>Gq`|M | 'П|/>}/_>~˗@~_>~ӧ?}/_>}˗/_?W0_|/| _|QXP?)RH"E/?$XA/_>} _|O`>g0|O`>ϟ|/_>~˗|˗_|/_>~˷O`˗?~_>~ӗ/_?C8>˗BO@ DPB >>~%J(QD%B/?(Q"B(`>'`|IϟD%J(QbC}$J(QD%J/_>'QDOD$J\OĂ'_>%J(QD (QD%J("|Itϟ|Sa>%J(!?} ˗ϟ̗/_>~%o |˗/$JP?%J(QD!˗ϟDo|cOD%.Ob| `>3/A o@} ϠA| 4hРA ? 4xaB 6tbD ˗E/}o_~O} O_|O?~|˗ϟ@}QHB~(̗/7P߾O_>}?~O | Է/ ԗO |/_>/_>70~ӗO?~O_|(RTE)RH"EGa>}/?'0|/'0 ߿|o|8`A&TaC~*̗/#O}O`˷ _>/_|/??~/@~#O?_>߾ .ǯaÆ 6lذaÆ 6l_|64}'0| '0| '0}|70| 6lذa5T/_> G`>߾|?~߿@_o'|/_?@~ <0A}*TPB *TPB *Th_|*T(0? _߿|/߿_/߿맏|߿ <0… a|sX0?O@_?}(@/ϟǏ_>/? /߿?/߿/?$XA PB *TPB *TPBPB o>~/߿| '0| o`?o?SPB *T(> ˗ϟ„7>}/@}>~O ? W0?~/70߿|߿|/|O ?SPB)TPB *TPB *T |)TP`>O?/| '0 /_|/@~_>~O`>$XA .d?}˗ϟÂ̗/_>}˗|_>?}O`'0?~_|ϟ| W_| /?_|9t>~:tСC:t!|9tH0?:tСCa|sX0?:tСCϡC:tСC:/? СC:tСÁ9L/_> СC:tСÁ9tСC:tСC/?$XA'p "Lp!ÆBH>O|$J(QD'QD%J(Q"D~0?%J(QĆI,/_>'QD%JP?%J(QD!˗ϟDI(QD%6Ob|/?%J(QĆI(QD%J_|$:OD%J(!?} ˗ϟI(QD%6OD%J(QD'a>%J(QD X0_|$OD%J(>~%J(QD%B|'p ? 4xaB 6tbDI,/_>O@ DPB >`>~ H*\ȰÇ#Jh_|(2P <0… :|1b|8`A H*\Ȑ_|6lذaC H*\ȰÇ#Jh_|(2O@ DPB˷aÆ 2 /_>/^0_|.^xѠ|.^xŋ/^h_|.^xq|]xb|xExŋ/^xE~xʼnwŋ ŋ ˗ŋ/^xŋŋ'˗ŋ/&̗//^?ϟ/^xŋ/J//^|ϟ?ϟ? H*\Ȱ|sСCO@ H*\ȰÇ#JHEwŋ'p A$XA .d`|9tСC 8p?$XA .dC%NXѢD~xE 8,h „ 2lx0_|:tСÅ80>$XA .dC%NXD~xE80>$XA .da|9tСC 80?$XA .dC%NXD~xň ,h „ 2l0_|:tСC(P,h „ 2l!Ĉ'Rh"|]Tŋ'P>$XA .d0a|9`>'p "LpA O@ DPB >QD-V/'P>$XA . 2dȐ!Âp`| O@$XA .4/_> 2dȐ!C 2dȐ!C 2dp!|1dH`>? 4xaB ˗!C 2d`|1/_~/_|2dȐ~1dȐ!C 2dȐ!C 2dȐ!C !Á ߿'p "LpaA1dȐ!C ̗/?/_|(? 4xaB cȐ!C 2dȐ!C 2dȐ!C ˗C˗O?~(? 4xaB cȐ!C 2 ˗/?~O@$XA .dC%NXE1˗ϟ~_ ? 4xaB 6tbD篡|#0 <0… :|1"A~ H*\ȰÇ#Jh_|(/_>~0 <0… :|1"A} HAw ?`>$XA .dCO@ DPB >QDG`|#/_|'p "Lp!ÆBtO,hP`|˧o|1bĈ#FP#F1bĈ#&/ 80?8`A&TaC!>/|s`> O@ DPB >Q#F1bĈ#&/ 8`>$XA .dCh0_|O8`A&TaC!B/bĈ#F1bĈ /B~ 8,h „ 2l!DE4/_>'p>$XA .dC'QD%J(Q"D~|O@ DPB >?} ˗ϟ~#/_>~˗/?COa ;OĆI(QD%J_|$:@  +X`A˧,h „ 2lؐ> a|'p?-|sa> kϡCsСC:tСCϡC7П>97> sСÆ9L/_> GP_| /_?}/_|㗯@~/| '0?~/|O߾|篟?}s谡>~:tСC:t!|9tH0?/_>O ?|˗߿_O?~?}_|ۗO_>}?}'p "Lp ?} ˗/#`>~?}_> ϟ@~'0_'߿}'0|'߿}W0_|O`߾ "o… .\p… .\paB~[Pa> |۷_|>'|O߿|>ϟ>_ /߿}'0 .\H ˗Bw0|#/߿|?O_~O` /| '0_>~70@ /|O> H <0… :|1ĉ"|'P`_/}/߿|_> ̗/_>} 70| __? 4xaB[_|-D| '`>Ǐ_ ߿ϟ@'0? ߿_߿(0@O`>~ۗ,h ‚'p "Lp!ÆB(qA~0?`>_/(߿| o| '0|_Ǐ_O`>$XA oa>o|_>>~O~O`>'?}'0߿~O ?`O`o…[p… .\p… .\_|.T|@~/|>~`>_>/_|/߿|/| .\ ?} ˗/+/_} /_>~˧O@~ӗ/? /_}˗|/_>~˧O}ϟ|/>}˗/O`>˗,h ‚'p "Lp!ÆB(qA~0?O_|ӗo_>˗|˗|'П| ̧/߾ӧ?}/_>}O_|H"?}˗|(RH"EH"E)R_|(2/?Q(0BHbD~(̗/QH"E#G"E)RH"|Qd_~G| ˗E#Gq`|M"E)RQ?)RH"E˗,h |8`A&TaC!F$OĂ'_>%J(QD (QD%J("|ItϟD%J(QbC~$̗/?(QD%JlD%J(QDO|$J(QD'`|IϟD%J(QbC}$J(QD%J/_>'QD%Jؐ>O|$J(QD'QD%J(Q"D~0?%J(QĆI,/_>'QD%JP?%J(QD!_|8`A  <0… :|1"A~$̗/?(QD%JlD%J(QDO|$J(QD'`|IϟD%J(QbC}$J(QD%J/_>'QD%Jؐ>O|$J(QD'QD%J(Q"D~0?%J(QĆI,/_>'QD%JP?%J(QD!˗ϟDI(QD%6Ob|/?%J(QĆI(QD%J@ 'QD%Jؐ>O|$J(QD'QD%J(Q"D~0?%J(QĆI,/_>'QD%JP?%J(QD!˗ϟDI(QD%6Ob|/?%J(QĆI(QD%J_|$:OD%J(!?} ˗ϟI(QD%6OD%J(QD/?$XA'p "Lp!ÆBH>O?$XA .dCO@ DPB >QDG!|,h „ 2l!Ĉ'p ˗8`A&T|5lذaÆ H*\ȰÇ#Jx_|(2O@ DPBׯaÆ 6O@ ̗//^hP_|/^xŋ/^/_>/^8Q_|.^x1a|]xA}]xŋ/^x"|]xD}xńwŋwŋ/^xEwŋŋ˗ŋ/ ϟ?}ŋ/^xŋ%˗ŋ/>ϟ?ϟ?$XA .d`|9tСC 'p@} H*\ȰÇ#JHEwŋ'p A$XA .d`|9tСC 8p?$XA .dC%NXѢD~xE 8,h „ 2lx0_|:tСÅ80>$XA .dC%NXD~xE80>$XA .da|9tСC 80?$XA .dC%NXD~xň ,h „ 2l0_|:tСC(p,h „ 2l!Ĉ'Rh"|]xbD ? 4xaB 6L/_>:taC O@ DPB >QD-V/˗Oŋ ˗/_>/^0_|.^x`|xŋ/^xbE~hP| <0…˗oC 2dȐa|cȐ!C 2/_> 2dȐ!C 2dȐ!C 2dp!|1dH`> O@ DPBcȐ!C 24/_> 2dȐ!Cǐ!C 2dȐ!C 2dȐ!C ./? O@'p "Lp|2dȐ!C ˗C 2dȐ} 2dȐ!C 2dȐ!C 2dȐ!C~cp`|/_| 2dȐ!? 2dȐ!Ãǐ!C O@ D!,h „ 2l!Ĉ'R8_|,/_|8P ,h „ 2l!Ĉ ˗ĉ!'p "L,h „ 2l!Ĉ'R(_|,/_>}O@$XA .dC'p ˗ ˗/>/_|8`A&TaC!:ԧ? 4(0_|~ H*\ȰÇ#JHD~H| ,h „ 2l!ćE4/_>#FX0!1bĈ#F1bĈ#./ _}˗o_Ĉ#F1C~"̗/#F,_Ĉ1bĈ#F1bĈ˗_DO |1bĈ#F/bĈ 1"D}"F1bĈ#F1bąq!| <0… :|"?} ˗_Ĉ#/bDE1bĈ#F1bĈ /"C} ,h „ 2l!ĈE4/_>#FX0!1bĈ#F1bĈ#./ӷ@  +X`A ? $ϠA 4hРA ϠAϠA 4hРAgРA 4(P?$XA .dC%NXQ"|YT|鳘aYh"D~,˗/?-!|/_70?$X>~ H*\ȰÇ#JHD~0?/_>O ?O_>}O>~#O | /'> /?hѢ@~,˗/?-a /@}gѢE-ZhѢŃgQa> |۷_|>'|؏?~o?O`~_>gѢŁY/_>-Z<ϟ|'0߿|{EYdEYdE|'p  |߿_߿?~O@ /?߿|_>~/,h „ 䧏|cȐ!C P`/߿|1C 2dȐ!C 2dȐ!C &/? G0@~'P|__? |߿(߿| H*\H> !C 2C ߿|_  <0… :|1ĉ+J/? #o?}ϟ>~|O ?7П O>߿|'P?gѢEY/_>-Z<ϟ| /߿|{E-ZhѢE˗ϟEG0?ϟ| /_|O_|+`?}/_>~ O?}ϢE/_|,Zx0?/_P?-ZhEYdE/_> HC?!D!B"D!B!ƒ!B"D_> 'P _O@ <0… :|1ĉ+J/? /_|,ZhѢŁY/_>-Z<ϟEhѢE-ZhA~0?-Zh@~,˗/?-ϢEYhѢE-Zh |YTϟE-Zhq ?}˗ϟEgѢA},ZhѢE-Zx_|,*ϢE-Z8>ϢEhѠ>~-ZhѢE-ZgѢE-ZOgѢŃYhP?-ZhEYdE/_> HO@ DPB > ?} ˗ϟD%ODI(QD%J(Qć'a>%J(QD X0_|$J(_>%:OD%J(QD%>/?(QD%JlOĂ'QDO@ D>~ H*\ȰÇ#JHD~0?-Zh@~,˗/?-O@ D!?$XA .dC%NXQ"|YTϟE-Zhq ?}˗ϟE-ZhѢE-ZhѢEgQa>-ZhѢŁY/_>-ZhѢE-ZhѢE˗ϟEYhѢEg_|YhѢE-ZhѢE-Z/_>gѢE-ZOgѢE-ZhѢE-ZhQ |YTϟE-Zhq ?}˗ϟE-ZhѢE-ZhѢEgQa>-ZhѢŁY/|8`A&TaC!F8bE1fԘ_|6oƍ7Zb|mܸqƍ7nܸqƌ`>7nܸ"?}oƍ7nܸqƍ7f/O@ DPB >>} HA <0… :|1ĉ+Z1ƌ @},h „ 2ԗ/_ 6lؐ,hP`|'p "Lp!ÆB(q"Ŋ/b̨1#|mܸq@}۸q#|۸qƍ7nܸqƍoƍ˗ƍ)˗ƍ7nܸqƍ7n/_>7n8P_|6nH1_|6nܸqƍ7nܸqcF~۸qƁqFqƍ7nܸqƍ3˗ƍ7ԗ/7R̗/7nܸqƍ7nܘ_|6nܸq|mܸb|mܸqƍ7nܸqƌqF8 ,h „ 2lx0_|:tСC:tСC:tСC:d/_>:tСC 8,h „ 2lx0_|:tСC:tСC:tСC:d/_>:tСC8P ,h „ 2l0_|:tC:tСC:tСC:d/_>:tСÅ ,h „ 2l0_|:tСC:tСC:tСC:d/_>:tСÅ8? 4xaB 6L/_>:tСC:tСC:tСC2/?O@~ H*\x`>'p "Lp!Æ ϡC:tСC:tСC:tСC? <0…˗OC 2dȐa|O@ DPB >QD-^ĘQcF~/_|˗/_%˗ƍ)˗ƍ7nܸqƍ7n/_>˗ϟ>}˗oƍӷqƊqƍ7nܸqƍ3˗|/> O@ DPB1dȐ!C ̗/?$XA .dC%NXE5f/?˗o> O@ DPB >Qb|8qĉ'N8qĉ'N8qC~x_|ӧ|,h „ 2l!Ĉ'p ˗,h „ 2l!Ĉ'Rh"ƌ3˗ϟ~/_ ? 4xaB 6t}8`A? 4xaB 6tbD)VxcFoc|ӷ|'p "Lp!ÆB|O_D1bĈ#F1bĈ#F1bĈ# / ˗O}˷/bĈ#F!?} ˗_Ĉ#F1bĈ#F1bĈ#F(_|"*0'p "Lp!ÆBO_D1bĈ#F1bĈ#F1bĈ# / 'p~ H*\ȰÇ!`|E1bĈ#F1bĈ#F1bĈ/"C~ ,h „ 2l!ĈE4/_>#F1bĈ#F1bĈ#F1@~_} /_>~9̇0|/bā /"C'0_E4/_>#F1bĈ#F1bĈ#F1@~0?|!̧0@~":W0߾50_"?} ˗_Ĉ#F1bĈ#F1bĈ#F(_|">` /'_|/| _| #|O?~|'P |ӗO ԗO |/_>/_>7_/7p 8p˗,h „ 2l!Ĉ'Rh"ƌ3˗Ƃܧ_~O O`>O /|۷_|ȏ?} W0~ϟ>߾'| |O ?]̗/7nܸqƍ7nܘ_|6`?~o@~ '0|'_|'0|70߿|;/|O߿|o' 'p~/߿|ȏ A$H  <0… :|1ĉ+Z1ƌ`>/߿| `>_߿_>'0| `>>~?O߿|/~|?/߿|O@ 8> $80_|8`A&TaC!F8bE1fԘ_|6o`?}o| O?_>'0>~#` OO ?/|㧏߿|/?~O?W/?}󗐟qƍ7nܸqƍ3˗Ƃ/_}˗߿|/_>~˧O}ϟ|gp_>}O_}ӗ/?ӧ߿|/|˗O>~_>~߿| /_|?}8p?~8p? 4xaB 6tbD)VxcFoc|6nlϟ}7n$O|۸qƍ7nܸqƍoc|6nl/_|6nHqƍ7nܸqƍ3˗ƂmܸqF]̗/7nܸqƍ7nܘ_|6oƍ7Zb|mܸqƍ7nܸqƌ`>7nܸ"?}oƍ7nܸqƍ7f/۸qƍ默/_>7nܸqƍ7nܸ1#|m,0?$XA .dC '`|I(QD%J(QD%J(Q"D~0?%J(QĆI,/_>%J(QD%J(QD%J_|$:OD%J(!?} ˗ϟD%J(QD%J(QD%B/?(QD%JlOĂ'QD%J(QD%J(QDO|$J(QD'`|I(QD%J(QD%J(Q"D~0?%J(QĆI,/|8`A&TaC!F8bE1fԘ_|6oƍ7Zb|mܸqƍ7nܸqƌ`>7nܸ"?}oƍ7nܸqƍ7f/۸qƍ默/_>7nܸqƍ7nܸ1#|m,ƍ7nO|۸qƍ7nܸqƍoc|6nܸqE~.˗ƍ7nܸqƍ7n/_> qƍ-w1_|6nܸqƍ7nܸqcF~X0@},h „ 2l!ĈO@ ̗/?$XA .dC%NXE5f/8`A&T!|kذaÆ 'p ˗,h „ 2l!Ĉ'Rh"ƌ3˗ƍ7ԗ/7R̗/7nܸqƍ7nܘ_|6nܸq|mܸb|mܸqƍ7nܸqƌqƍoƍoƍ7nܸqƍ7f/7n/_>7n/_>7nܸqƍ7nܸ1#|mܸq@}۸q#|۸qƍ7nܸqƍoƍO_|qƈqƍ7nܸqƍ3˗ƍ5O@ H*\Ȱ|sСC:tСC:tСC:t!|9tСC'p~ H*\Ȱ|sСC:tСC:tСC:t!|9tСCO@ H*\Ȱ!|sСC:tСC:tСC:t!|9tСC'p`~ H*\Ȱ!|sСC:tСC:tСC:t!|9tСCO@} H*\Ȱa|sСC:tСC:tСC:t!|9tСC'P?$XA .d0a|9tСC:tСC:tСC:tȐ_|:tСC ˗OC:tp`|9tСC:tСC:tСC:tȐ_|:tСC ϡC:t80_|:tСC:tСC:tСC:d/_>:tСÆsСC̗/?:tСC:tСC:tСC˗ϟC:tС>:ta|sСC:tСC:tСCr!b ~O@ DPB >QDbŊ+VXbŊ+VXD~XbŊ+VX`|UXbŊ+VXbŊ+V/_>+VXѠ?~*VXQb|UXbŊ+VXbŊ+V/_>+VX`?}ׯbŊ!˗_Ŋ+VXbŊ+VXbʼnWbŊ˗/ǯbŊ˗_Ŋ+VXbŊ+VXbʼnWbŊ˗o˷_Ŋ+.̗/+VXbŊ+V*h"? 4xaB 6\O_|˗/_?:t0a|9tСC:tСC:tСC:tȐ_|:tСC˧˷ϡC::tСC:tСC:tСC2/?:t谡}簠}СC̗/?:tСC:tСC:tСC˗ϟC:t_|9\/_|:tСCСC:tСC:tСC:t!C~s!r(!˧,h~!B"D! <0… :|1ĉ+Z1ƌqƄ˷ƃoƍqƍ7nܸqƍ3˗ƍ˗/ ˗ƍoƍ7nܸqƍ7f/7/_>}6B/_}6n/_>7nܸqƍ7nܸ1#|mܸQ`?}h_|mH1_|6nܸqƍ7nܸqcF~۸q#||M/_>~7J̗/7nܸqƍ7nܘ_|6no_|Q/>7P`8p} <0…? 4xaB 6tbD)VxcFoFb>/}/_|6nl/_>7nܸqƍ7nܸ1#|mH_|a>~/߿}˧|mܸ0_|6nܸqƍ7nܸqcF~۸1b?}q70߿|mo_|m܈0_|6nܸqƍ7nܸqcF~۸!|(`>_? 4xp |C!B̗/?$XA .dC%NXE5f/o?o~o?_˗oƍoƍ7nܸqƍ7f/Oc?}hpӗOӧo#Boqƍ7nܸqƍ3˗ƂO|I/_>~7nT/_|6j̗/7nܸqƍ7nܘ_|6/߾˷ƍӗ/>/˗ƍ7nܸqƍ6h/?$XA/߿|!,O_|"D!B"D|C!B? 4xaB 6tbD)VxcFoc|/| ˧|G1|=G˗_|m/_>7nܸqƍ7nܸ1#|m,O|_>˷ϟ|ˇ0|7p_˗ooƍ7nܸqƍ7f/ ?}3/_|"7P_>O_>}>~/_~ /_|˗ϟ}+ϟ| /?~8`A~W` ,/_|8`A&TaC!F8bE1fԘ_|6Vܗ/~|O` /?O`>/@~/_A~'0?~Ǐ߿|/_|62̗/7nܸqƍ7nܘ_|'p /_}8`A_> /?o| '߾ /|O` ߾~gРA˷ϟA 4/_> H*\ȰÇ#JHŋ3j/_>8`A O@ O?}맏|O@>~߿|o@?70? /~O@ /_>˗O>~/_>~ /_>}'0߾|/_>~˧O|O_|_ ӗ/߾<80_|8`A&TaC!F8bE1fԘ_|˧o@~qƍ ˗Ɔqƍ7nܸqƍ3˗ϟ|m,O_|6nܸ |0_|6nܸqƍ7nܸqcF~s/˗O_˗ƂѠ}1b|mܸqƍ7nܸqƌ0_>}˗// _˗Fqƍ7nܸqƍ3˗ϟ|mdO_|mo`~/߿>}/_>/ <_|!D!B? 4xaB 6tbD)VxcFa|6>ܗ/~| >~߾}߿|۸/:A_}6b̗/7nܸqƍ7nܘ_|˧ocD~㷱?}'0|70_o|˗oƍqƍ7nܸqƍ3˗ϟ|mo_|Yo| '0| ̗o`>/~q|۸qƍ7nܸqƍa|6Z0_>}8` _ }o}O`> /_>} 4hРA ̗/?$XA .dC%NXE5f/?ۈ|M/_}ӧO`>} ̧/߾O`> '߾|۸`|mܸqƍ7nܸqƌ0_>}5ۗ/>+oc~qc|۸qƍ7nܸqƍa|6n/_|6+oA~q|۸qƍ7nܸqƍa|6n$O_|6nT/_>}6nl/_>7nܸqƍ7nܸ1#|9̗O,h „ ۗ/~ .\p`?}[p… ˗,h „ 2l!Ĉ'Rh"ƌ3˗ϟ|mܘ_|m/_|6n/_>7nܸqƍ7nܸ1#|9̗Oƍ ˗o˧ƍoƍ7nܸqƍ7f/?۸|߾|۸b|mܸqƍ7nܸqƌ0_>}7B/_>~ӗ/3˗ƍ7nܸqƍ7n/_>ӷqDo#B~q|۸qƍ7nܸqƍ? ̗O,h „ &/_~ ܗ/> 2dȐ|O@ DPB >QD-^ĘQcF~s//ӗ/?˷oƍoƍ7nܸqƍ7f/?۸1}W_|mܸ`|mܸqƍ7nܸqƌ0_>}7n/_|"˗O_7&̗/7nܸqƍ7nܘ_|˧oƍ˗oCoƍ oƍ7nܸqƍ7f/?۸qcA`?}۸q|۸qƍ7nܸqƍ̗$/>$XA .d_| /_~ 6lذaC <0… :|1ĉ+Z1ƌ0_>}7nTO_|oƍoƍ7nܸqƍ7f/?۸qc|۸q#|۸qƍ7nܸqƍa|6nP_|6nH1_|6nܸqƍ7nܸqcF~s/76ԗ/7R̗/7nܸqƍ7nܘ_|˧oƍ o }۸q|۸qƍ7nܸqƍa|6nP_|'0ƍ/?$XA .dC%NXE5f/?۸qcC}#O?~˗?q|۸qƍ7nܸqƍa|6nP_| O |}7j̗/7nܸqƍ7nܘ_|˧oƍ 篠|'?}mܸ_|mܸqƍ7nܸqƌ0_>}7nl/_> O@? 4xaB  ̗/?$XA .dC%NXE5f/?۸qcC}3o>~70ƍoƍ7nܸqƍ7f/?۸qcC}3o?}/_|6nԘ/_>7nܸqƍ7nܸ1#|9̗Oƍ˗ƍ)˗ƍ7nܸqƍ7n/_>ӷqƆqFqƍ7nܸqƍ3˗ϟ|mܸ|mܸb|mܸqƍ7nܸqƌ0_>}7nL@ϟ? H*\Ȱ|sСC:tСC:tСC:t!|9̗OC:th|O@ DPB ˗ϟC:tСC:tСC:tСC a|:tСà 8,h „ 2lx0_|:tСC:tСC:tСC:d/_>СC08`A&TaCСC:tСC:tСC:t!C~s/>:t!| <0… "̗/?:tСC:tСC:tСC˗ϟ|9tСC'P>$XA .d0a|9tСC:tСC:tСC:tȐ_|˧>  <0…(,h „ 2l0_|:tСC:tСC:tСC:d/_>`>'p "Lp~ǐ!C 2dX0_|8`A&TaC!F8bE1fԘ_|˧o!| <0…!C 2dȰ`|'p "Lp!ÆB(q"Ŋ/b̨1#|9̗OB} H0>$XA .,/> 2dȐ!C <0… :|1ĉ+Z1ƌ0_>} ˗~۸Q7Z̗/7nܸqƍ7nܘ_|˧/a?̷A$XA .dC%̗/'N8qĉ'N8qĉ'>/?K`>G0@},h „ 2l!ć8`A? 4xaB 6tbD)VxcFa|O~  <0… :|ѡ>} HA <0… :|1ĉ+Z1ƌ0_>} 8߾8`A&TaC!>/|1bĈ#F1bĈ#F1bĈ˗ϟ|)O}  <0… :|!?} ˗_Ĉ#F1bĈ#F1bĈ#F(_|˧Oa|`>8`A&TaC!B/|1bĈ#F1bĈ#F1bĈ˗ϟ|-0'p "Lp!ÆBO_D1bĈ#F1bĈ#F1bĈ# /?c`>O@ DPB >/bĈ#F1bĈ#F1bĈ#F/_>_} ܗ/ ˗O/_ąO`>x/bĈ#F1bĈ#F1bĈ#F/_>0? /| /"|0|Ǐ`x/bĈ#F1bĈ#F1bĈ#F/_>0? 'P?~O |ӗO?~#`>/_>O߾~O|'_|˗?}/?o`~ӗO?~(0˗ϟ@~>}8p|O@ DPB >QD-^ĘQcF~s/w0 ϟ>/@~ O`>~O>Ǐ_ ̗?~/@~#O? _> #/O ?>]̗/7nܸqƍ7nܘ_|˧a>'0?'0߿|#/_|o`>>O߿|ӷ|O`>_>?~ o|@~ӷ 8p˗,h „ 2l!Ĉ'Rh"ƌ3˗ϟ|=`>0@/߿ ߿8_}>O?~ۗ|(߿|߿߿| ߿/߿~7P/? 4(0_|8`A&TaC!F8bE1fԘ_|˧a>o|_>>~`O~`_>70|߿|/߿|O ?/' ?}oƍ7nܸqƍ7f/?{_A~O?}/_>}ϟ|w0? ` _|˗/_?ӗ/?'P |O`>~o@_|/_>~/_~7p/_> H*\ȰÇ#JHŋ3j/_>0˷qƆ]̗/7nܸqƍ7nܘ_|˧a>7엯ƍw1_|6nܸqƍ7nܸqcF~s/mܸqF]̗/7nܸqƍ7nܘ_|˧a>7nܸ"?}oƍ7nܸqƍ7f/?{ƍ7nO|۸qƍ7nܸqƍa|qƍ-w1_|6nܸqƍmFm@ ˧`'p "Lp!ÆBH>OD%J(QD%J(QD!˗ϟ|=OD%J(!?} ˗ϟD%J(QD%J(QD%B/?{ϟD%J(QbC~$̗/?%J(QD%J(QD%J/_>0?%J(QĆI,/_>%J(QD%J(QD%J_|˧a>%J(QD X0_|$J(QD%J(QD%J("|9̗O|8`A&TaC!F$OĂ'QD%J(QD%J(QDa|'QD%Jؐ>OD%J(QD%J(QD!˗ϟ|=OD%J(!?} ˗ϟD%J(QD%J(QD%B/?{ϟD%J(QbC~$̗/?%J(QD%J(QD%J/_>0?%J(QĆI,/_>%J(QD%J(QD%J_|˧a> H*\ȰÇ#Ob|(QD%J(QD%J(QD0_>}(QD%JlOĂ'QD%J(QD%J(QDa|O@ DPB >`>} HA <0… :|1+Z1ƌ0_>}8`A&T!|kذaÆ 'p ˗,h „ 2l!Ĉ'Rh"ƌ3˗ϟ|mܸ|mܸb|mܸqƍ7nܸqƌ0_>}7nO|mܸb|mܸqƍ7nܸqƌ0_>}7n/߾qFqƍ7nܸqƍ3˗ϟ|mܸ|;/_>7n/_>7nܸqƍ7nܸ1#|9̗OƍO@ /_> H*\Ȱ|sСC:tСC:tСC:t!|9̗OC:d`>>8`A&TaCСC:tСC:tСC:t!C~s0 <0… >8`A&TaCСC:tСC:tСC:t!C~s0 <0… O@ H*\Ȱ|sСC:tСC:tСC:t!|9O@ DPB O@ H*\Ȱ|sСC:tСC:tСC:t!|9tСCO}O?$XA .dPa|9tСC:tСC:tСC:tȐ_|:tСC˗/>ϡC:t80_|:tСC:tСC:tСC:d/_>:tСo ?}˗O>}:tСCСC:tСC:tСC:t!C~sСC󗏟A? 4xaB 6:tСC:tСC:tСC2/?:tС} (? 4xaB 6D/_>:tСC:tСC:tСC2/?:tB? 4xaB 6D/_>:tСC:tСC:tСC2/?:tB~  <0… &̗/?:tСC:tСC:tСC˗ϟC:t!|O@ DPB ˗ϟC:tСC:tСC:tСC ϡC:tȐ_|9tСC˗ϟC:tСC:tСC:tСC ϡC:t0_|:tСCϡC:tСC:tСC:tСCСC:l/_>:t!|sСC:tСC:tСC:t!|9tСCСC:$/_>:tСC:tСC:t!r!_|8`A&TaC=|Ç Ç>|Ç>|Ç>|?~{ÇoÇ>|0_|>|Ç>|Ç>|Ç/>|@ӗ/~>|a|{Ç>|Ç>|Ç>|_|>|Ç˗@~Ç̗/>|Ç>|Ç>|ÇÇ>t/_>}ӗ/>>|!| <0… :|1ĉ+Z1ƌqF˷}qƅqƍ7nܸqƍ3˗ƍ%˗/oƍ oƍ7nܸqƍ7f/7>/_>}*ۗ/>7n4/_>7nܸqƍ7nܸ1#|mܸa?}/_>}6nH0_|6nܸqƍ7nܸqcF~۸qB~뷑`|۸q|۸qƍ7nܸqƍoƍ˗o/> H*\P`|'p "Lp!ÆB(q"Ŋ/b̨1#|mܸ`|_|m܈1_|6nܸqƍ7nܸqcF~۸q#A~Qb?}۸b|mܸqƍ7nܸqƌq˷F˷ƍoƍ7nܸq7f/5˗/˗/#˗ƍ7nܸqƍ7n/_>7^/_>}6n,O_|6n|/_>7nܸqƍ7nܸ1#|mX|mܨ߾| <0… <0… :|1ĉ+Z1ƌqD~qC~q|۸qƍ7nܸqƍoF˷FW0F˷ƍoƍ7nܸqƍ7f/OFo#A~W0ƂoƂqƍ7nܸqƍ3˗F ̷ |h0|O|m7nܸqƍ7nܸ1#|mO?~˗?? o_|4hРA߾}o?~ 4hРAϠA 4h`|'p "Lp!ÆB(q"Ŋ/b̨1#|m_ /9/_>~o` ˧ƌqƍ7nܸqƍ3˗Ɓ@~p_|md0@/߿| <`?}K0a„? 4xaB 6tbD)VxcFo#|(߿~O˷A $H A O߾ӷ| Hۗ/> &LP`|'p "Lp!ÆB(q"Ŋ/b̨1#|m$>~70A~>~/>}˧OƉo|۸qƍ7nܸqƍo#|˗?G߾|۸qƁo#|۸qƍ7nܸqƍo~۷qƍ˗O_ oƍ7nܸqƍ7f/?$XA ˗/_?$XA Sp`>'> ˗/? "̗/?$XA .dC%NXE5f0 <0}8`A&O`> C|OB˷ϟB ˗,h „ 2l!Ĉ'Rh"ƌ3O@ D ?$XA'P߾|˗ϟ|㗯@~?}/?oB/_~"D(0_|8`A&TaC!F8bE1fԘ|,h „'p O`>o߾'0_'|߾/@~C!!B ˗,h „ 2l!Ĉ'Rh"ƌ7rO_|u/|70߿| /?+o@~H߾|0_|:vرcǎ;vرcGoc?}O`O`>'P8߾||_>$X!B˗/?$XA .dC%NXE5n䈑_|e| O߾'0|߿| /߿|_Gׯ|رcǎ;vرcǎ5ۗ/>˧OO_|/|˗|˗߿|/_>~mܗ/~!˗_ǎ;vرcǎ;vؑ_|u}81_|:vرcǎ;vرcǎ˗_ǎ˗/cǎ;vرcǎ:ꨣ߾|O@ DPB ˗O_?*̗/?$XA .dC%NXE5n |豣}c|yѣG=zѣG˗oG˗ǍѣG=zѣG=j/_>}=*/_}=zѣG=zѣGϣGϣGѣG=zѣG=z4/_|QD-^ĘQF/ۗ/>5ۗ/>=*̗/?=zѣG=zB~b?}a|yѣG=zѣGӗ/?˗GϣG=zѣG=z߾|p_|y1_|=zѣG=zѣG˧_G~? 4xaB ̗/?$XA .dC%NXE5nѣB~߾|c|}Ǐ?~Ǐӗ/>˗ǏǏ?~Ǐ?~_|=/_>~?v̗/?~Ǐ?~c~㷐_|}1_|>~Ǐ?~Ǐ˗o˷Ǐ˗Ǐ?~Ǐ?~"|O_|>~X0_|>~Ǐ?~Ǐ˗/_~?~ +c|Aǰ_?>~Ǐ Ǐ/a?}-̷o|˧0|Ab>0a>4Ǐ?2ԗ/?"̗/?1̧o| '0|O_} //ϟ|ӗO?~?/_>˗}O_>~/߿˧/?}ӗO?~O?~?~O|߿_|˧}Ǐ˗?~o_>~ۗo@~O@ DPB >QD bŊ#˗_ŁǏ_>_>O'_|/?}}O ? } _>>/_?O`>ϟ|O|o߿|O`>~O ?__>O`}'0G߾'0|+߿}ȯbŊ+VXbE70_*V"',hp`O`>O`_>~'0|o?'|70|} O`>O`>O`>O>O ? @~ /߿| 7_>70| G0@O`O ?$XA .dC%NP_|70_Ŋ+"̗/O߿| '0߿|70߿|(߿/߿/߿_?_>'P߿߿|߿|/߿/߿Ǐ__?O@/߿|߿߿| _߿/߿Ǐ_? O@ H*\ȰÇ#JH1| Ǐ|bŊ˗_Ł_>'0߿|}O ? '0_>o`>'_>'?~70|_>_>?_ _>'_'0_>O`>}'0|ԷO`|'0|o>~XbŊ+VX1| /?۷} H*\a|5\| ܗO>/߿|?}+O`>˧O?'0?'0A/|˗?GP| o_>}߿| '0?~_|ϟ| g0?'0|?}/>}/?}O`>/_~ӧ߿|ԗ/߾ǯaÆ 6lذaÆ 6lؐ| aÆ 5B? 4xa*TPBSPB SP!B} H*\ȰÇ#JHŁ70@}70ŋ#˗ŋ.^pŋ]|ŋ/^xŋo`>o?.^1_|.^xŋ/^xŋ/^x"B}o |˗ŋ#˗Ŋ"拘`'P?$X"O@߿|? 48`A&TaC!F8bEŋ˗Ŋ"曘O`>sa%G0E '_>]xŋ/^xq|]xb|/|˗?~/|O} ̷|?~ӗO߿|#/'_| 3o_>~_|>} Ǐ?'_| 3/|˧'P߾| ˗?} ׏`}_|/_>/_> H*\ȰÇ#JHD}hѢņgQ`>>~o?~>'0_}ȏ߿|_>W0|/@~_>'|O˗?~'_|/| ̷o?/}'0|?}|O ?-ZhѢE-"ԗ/?-Zl/_>}'߿|70| /?߾~__> '0|o@ /߿/߿_߿?(_/߿| _߿/߿/o@_  <0… :|1ĉ+Nԗ/?$XA .dPa|'p O`}'P|߿߿|/߿}'P`>~'0߿| 7P`>0@/O` __߾| ߿'P`O`| '0o?}_>_O@ H*\ȰÇ#JHD} H*\ȰC8`Aϟ}#o?O`+/?~ /|'0|| '0?}/|/|@~+o?O`>}'0|/|'П~ |_ ? 4xaB 6tbD)V`> 4xaB 6t(,hp|/_~?}#O_|O`>|_> /|˗_A /߿ϟ>߿|/߿ ϟ>(`>ӗO_>/߿ϟ>@˧|˧O?/?'0,h „ 2l!Ĉ'R@~,h „ 2lP ,h „ ˷p…  <0… :|1ĉ+Z1ƍ;zȱ_~ A" <0… :|1ĉ+Z1ƍ;z2ȑ$K<2ʕ,[| 3̙4kڼ3Ν<{ 4СD=4ҥL:} 5ԩTZ5֭\z 6رd˚=6ڵlۺ} 7ܹtڽ7޽| 8 >8 ;;PKȺPKfUIOEBPS/img/repma005.gif@OGIF87a?**?***UU?UUU????**?*******?*******U*U?*U*U*U**?*****?*****?*****?***UU?UUUU*U*?U*U*U*UUUU?UUUUUUUU?UUUUU?UUUUU?UUUUU?UUU?**?***UU?UUU?????**?***UU?UUU?????**?***UU?UUU?ժժ?ժժժ???**?***UU?UUU?????***UUU, H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH*8 |,hP @}O~ H*\ȰÇ#JH`?'p A$XР@`?8`A&TaC!F8qb~ӧ`> 48> 4X`> 4HP>} <0… :|1"~ӧO|,h @},h |,h>}? 4xaB 6tbD O|O>}ǯ@'p "LПo>}'p ? 4xaB 6t~0ӧO>~П H'p @~ӧO|O~8`A&TaC!FDo>$O>~? 4xaB ϟ?~ӧ`>ӷ,h „ 2l~O@Ǐ?8`A&TAo>} HP~8`A&TaC!&O| Է?8`A&TaCo>O_?$XA .dС~'p@},h „ 2lp?ӧ`>? 4xaB 6ta?} O>~'p "Lp!Æ׏>} O_?$XA .dذ`?} O?~'p "Lp!Æ?}8P߾~ H*\ȰÇO@}O@ DPB >X?~8P_?$XA .d> Է_? H*\ȰÇ O| <0… :DO|? 4xaB 6tbD'P~ H*\Ȑ|Ǐ? 2dȐ!C 2D?} ? 4xaB 6t_|Ç>|Æ˗/_>~>|P_|Ç>|C˗/_>}>|Ä˗o_>|Ç/_|=|}Ç>|Ç ӗ/_>}>|a~Ç>|Ç ˗/_>/_|>|Ç>|ذ|=|ÇÇ>|Ç˗/Ç˗O_>|Ç>/_>}>|! <0… :|1D8q|M8qĉ'N/_'N\/'N8qĉ7q|&N8qĉ'Nܗoĉ'&엏ĉ'N8qĉ81b|'N8qĉ' ̗oĉoĉ'N8q8b|'N8qĉ' ̗oĉ˗ĉ'N8qD7q"D}M8qĉ'N/_'NL/_|&N8qĉ'B/_>'Bԧ/>'N8qĉ!˗Oĉ'&O߿|O@ DPB >Q"~ĉ/>'N8qĉ˗O?}'N>ĉ'N8qD˗?MQ?oĉ'N8q~''NLO~ǯĉ'N8q~˗@MQ?˧'N8qĉ˗OA~&N81!?}˗/>~&N8qĉ/_|ĉ;/_|7qĉ'N>} ?}'N(!O@˗/}'p "Lp!ÆB>}˧_BEq>~ 'P>~'p "Lp!ÆB> O@ DPBk> Է_? H*\ȰÇ o> ? _ ,X`+X ?} o? H*\ȰÇ O| <0… `?} O?~'p "Lp!Æ׏?} O_?$Xp| 4hРA gР~'p>} <0… :|x_?~'p>}8`'p "Lp!Ã5\د>O?~O@ DPB ?~'p@}8`Aw,ۧ`>Ǐ_? H*\ȰO>̧O_?$X@~}ϟ?$XA .dxП?ۧO|ԧ_?$XAC!B !ƒ0Ǐ?'p "Lp!CǏ>}8}8`AӇ!B"DaA~"Da~O@ӷ?~'P ,h „8?~ӧO|O~8`A_„ &L_„ O>$8P>}(?8`A&П O>} Hp>}O@ D8 &L0a„K0a„O>} HA H8`Aӧ_~ HϟB *$B *ׯ_?}'p 'p O@ ԧO~'p "LX> *TP‚)TPB8p@} O@ O8? 4xaB p… [p… 'p @}O@ O  <0…cȐ!C 㧏!C 2dȐ!C 2d_> 2dhP? 2dȐ!C 2dȐ!C~2dȐ!CcȐ!C 2dȐ!C 2C Ǐ!C 2dȐ!C 2dȐ> 2dȐ?~2dȐ!C 2dȐ!C ǐ!CcȐ!C 2dȐ!C 2䧏!C 2d> 2dȐ!C 2dȐ!C1dȐA}2dȐ!C 2dȐ!C cȐ!C 㧏!C 2dȐ!C 2d@O@ D0>~ *TPB *TPB *OB *TPaA~*TPB *TPB *T(_> *T>~ *TPB *TPB *OB *TPaA~*O@ DPB H@~,h „  ϟA 4hРA} 4hРA O@ DPB H*} HA4hРA ϠA 4hР| H*\(0?$XA o… .\[p… ˧ .\?} o… p… p… o… ܧo… .\[p… ˧ .\?} o… p… p… o… ԧo… .\[p… ˧ .\?} o… p… p… o… ԧo… .\[p… ˧@} H*\> ǐ!CcȐ!C1dȐ!Ã1dȐ!1dȐ!C | 2d| cȐ!Cc_> 2dhP? 2dC 2<C 2OC 2d?} ǐ!C ˧> 2dx> ǐ!CcȐ!C1dȐ!Ã1dȐ!1dȐ!C | 2d| cȐ!Cc_> 2dhP? 2dC 2<C 2OC 1C ?} H A 4hРA 4_>3hРA 4h?~ 48_> 4hРA3hРA 4h0? 4hРA ϠA 4hР'p "Lp!Ã54/_Æ 6/B~6lذ@~"_Æ  ǯaÆ װaÆ װaÆ kذaÆ Р| |װ?װ`|˗ |6lP>~ 6l0_| kP`> 6lP 6l ?} װ`|˗| O!?} _|kP ?} aÆ װaÆkH0_~_ װaÆ  <0 Р| |˗@~/_>'0_| ˧_|O |ӗ/'0_| |6lP>~ 6l0_|O |ӗ/}_kذaÄ5lذaÆkh_o_|O`>߾|/~ ˧o_|O`>O|/~ |6lؐ@ <0‚-4/߾|o߿|/[h0 .\hP .\p!B~"o|ӗ/~O?˧O`|-'0|/ƒ-T/ .T… .,B/_>'0>~O|[0 .\hP .\p!B~"o|/|o_|O_|˷| O@o|/~/|˧_> gР3hРA 4A 4hРA4X0_>~'0>~ۗ/߾ӗ/_>}4h_> 4hРA ӧ? 4xaB 䧯A̗_>~ _ ̗_ _SO_Â/_>'P?װ ?} aÆ װaÆkH0_>~'0߿~'0_'P_aÆ װaÆ 䧯A̗_~ ԗo˧?}˗| ˧뗯_|ۧ?}O_>O`k_> 6l(P 6D0?$XP`|˗O|/_>}O_|3h| 4hРA O,h „ 2 6lP`> 6lP 6l ?} װaÆ ˧ 6l(װaÆkذaC5lذaC5lذaB}6lذaÃ54/_Æ 6/B~6lذ@~"_Æ  ǯaÆ װa װaÆ kذaÆ Р| ˗O_ O!?} ˗O_ 䧯!B5lذ@ <0‚-D/_>}.\0 .\hP .\p!B~"o!|˷p„)o!|˷p„-T/ .T… .,ƒ o… [p…[p… "o!Bܗ@}| 70|[x_>-_>} p… ? 4xaB 䧯A̗`>~o>o߿|O!?} w0~o|˷_} |6lP>~kذaC5$/|߾} '0߾5,_Æ &ԧaÆ 65$/B~̗o`|/| /|䧯!B5lذ@}'p ,h „Sx0_O`|70|S0? *T>} *TPBS_>70_70| '0_>SOB/߿|O`/B)T_> *T>~ *TPa> o`| ̗o`O`| PB ӧOB *T ?} ˧a|˗_>O|'0?)~_>} H@~ 48_> 4hРA3hРA 4h0? ˧O |/|OA3hРA 4h>} H*\ ?} Р}_O |O_|O!?} ۗ/>~/_>}˗oaA~"_Æ  ǯ|kذ|/_} 7p_|/>}˗_Â5lذaB}6lذaÃ54/_Æ k_>5lذ` k_> 6l(P? ܧaÆ kذa| װaÆ kذaÆ Р| 64!BװaÂO@ ;xǏ`><(;_>"!B"DXP>"D!B Ӈ@"D_|"Dx_>CA ԗ!BC8`>_> H&Ǐ?~PB SP@~SP|*TP)TPB OaB*T(0|*T_>)Tp_~PaB~*/? *THP?SPB)TP`>})T_> *TP?}*TPB ӧ0| */}*T_>)T0_> O@~+/? *THP?8P,h „SP?˧P)TPBSPB *,O„)T|PBӧP|*TX>˗O?SPB#OB OB/_? PB ӧOB *T ?} ˧P ? 4xP|Ӈ!BO?||"D!B!D!B !ƒ ? 4xP`>"D!‚!D!B"DX>ˇ!B/B ˇP ?}"4/>!D ?}/߿|!BǏ`|Ӈ!B !B'_>!B"DXP>"D!B Ӈ@"Dh_CaA !B˗o?}㧏|"D!Bo~"D!B!D |!‚!D!B  <0… Р| 6lP| kذaÆc/_>}aÆ G0?~kذ|6lذ|6l0>} 6lذA~aÆ  O!?} 6lP ?} C/ 6A~˧aÆ kذaÆkذaÄ5lذaÆkh_ 6l(_>5lذaC-̗/?װaÆkذaC5lذaC5lذaB}6lذaÃ54/_Æ 6/B~6lPCO菟|` ,X`A,X` ,X`> H*\/? 2dO> 2dȐ?~!C O!?} 2d ?} ۗ/A2d>~80?$XA PB OB *OB *TPaA~&OB *ӧPBSPB PB OB *T ?}  <0…O@'p "Lp!?}8} ` ,X`G0߿| ,X` <0…O@ DPA}.\p…[@},h „ O@8`A&Tp ?$XР| ϠA 4|/A 4h @},h „  <0B-\p… ӷp… .\p… .\H0?} ߿'p} <Р>~˗/_?&L0a„ &L0a„ &LP &L0a„O@ DPB >QD0@8`A? 4xaB 6tbDG"EH"E)R8_>} G|,h „'p "Lp!ÆB(q@}(RH ?})RH"E˗/>~#`> 4xaBA} H*\ȰÇ#J\Oĉ'&oĉ'N8q||O@~ H G0}O@ DPB >QB}&N81!?}'N8qĉ/߿|;O_|MHP?/ĉ'N8qąM8qbB~&N8qĉ'.ܗO>~˗П|&N$A~˧oĉ'N8qB}&N81!?}'N8qĉ˗/?-7qbA}&N8qĉ'NOĉ'&oĉ'N8qB~˷|'Fǯ|8qĉ'NP'NLOĉ'N8qą G_#߿'P ,h „ 2l!Ĉ7qĉ 8qD8qDO|81>~ oD H*\H? 4xaB[p… "oA8`A&T࿁ ? 4xaB '?˗/_>}O@ DP>~OB *O@ DPB8`A&ThP .\p!B~… .\(П?p… ϟB~G_ .\A <0|*TPƒ)TPBSPB *,O„SPB ?*TPƒ)/~SPBSPB SPB PB ӧOB *T ?} OB *$ϟ?PB ϟB˧A*TPaA}*TP|*TPƒ)TPBSPB *,OBOB *? OB *ϟB/A*TB˗O?$XA PB OB *OB *TPaA~*'П? *T?)$ϟ? *TxП? /߿|SPB#o}*TPa> *TP|*TP)TPB OBPB 珠?SPBSxp_>}#/B *,|)TP|*TPƒ)TPBSPB *,OB PB gПƒSPB0!}߿'p "LP? OB PB OB *OB *TPaA~*wП? *TП?)LϟB &ϟB SPB#/_|)TP|*TPƒ)TPBSPB *,OBOB ? PBP|˧PB W_|*TP|*TPƒ)TPBSPB *,OBOB O? OB O ,h_?~w4| *TP‚)TO@ o? S(П? S?7П?)ϟ? OB Ǐ |'p "LX0?_| Sa> *TP?}*TPB ӧP?(߿'߿O@ H ,ϟ?ϟ@7П ϟ? ,X`A,X` ,XP ,X` `_|O |ӗ/}_ ? 4xaB[p… "oaB @ O?O?-,oB7П?Oϟ? .,/… .ǯ|[pB-4/߾|o߿|/[h0 .\hP .\p!B~&?WП@7П[h…7П?+O  <| &L0?}O@$XA `|˗O`?~ ̧?'0_&OB *OB *TPaA~*?O?'?8? $ϠA ?菠? ?8`A/a„ &|K0a„K0_>~'0>~ۗ/߾ӗ/_>}%L/ &L>} &L0a„ ӗ0@ ϟ?诠?ϟ K0@??0a„K0a„ G>%L0a‚%D/|_|/߿|߿| /a„ &'p "L80?뗯_|ۧ?}O_~'0„)TPBSPB *,OB*$ϟ?P@ *4B)TPA*TPaA}*TP|*TPƒ)TPBSPB *,OB*4ϟ)TXПB O@)TPA*TPaA}*TP|*TPƒ)TPBSPB *,OB*A%ϟB)Tp?O@ D| *T>~ *TPa> ˗O_? *ϟB *TO> *TP‚)TOaB#ϟ?)TПB 7@ϟB *OB OB *O!|˧PBSPB ӧPB *TX> )L ? H`A 4h?O?'p " o~_|O`>~%L/ &L>} &L0a„ ӗ0@ w@߿?$X? 4ϟ'p?߿8`A/a„ &_„ &Lh0C_?~۷_/߾ K0a„ ӗ0a„ &L ?}  0?ϟ@O_„&L8ПO?'@ /a„ ˗0a„ /a„ &4_B ̗/|_/_„%L0a„K0a„ &LH K?'?߿ gРA#?8?߿8`A/a„ &_„ &Lh070_>70߿| '0_ K0a„ ӗ0a„ &L ?}  0?O?o?K🿄 GПo?O &4/_„ &LO &L`> ˧O |/|O_„%L0a„K0a„ &LH Kp?O߿ O@ 3hРA#ϟ?#ϟgРA ϠA 4h?} 4hРA ϠA˷>˗OۧO`>}3h`> 4hРA ӧ? 4xaB 䧯A ϟBk_Æ П?5lР| 6l8P 6D_Æ k0 6LO_Æ 6lx5lϟ?aB ._CkذA6lp>~ 6l0 0a> 6lP 6l ?} kП? P 篡@5l| 6l8P 6D_Æ 6_Æ &ԧaÆ 6 &_„ &LxP@} H*\ ?} khП? `,X`+XП?,ϟ? ,X`A,X` ,XP ,X` ` ̗` ,,h „ ӷp… .DO„B[8П? [? 'ПpB-\pB}.\pa|.D/… p… ӷp… .DO„o@󷐠? paA-ϟ@ o…[p…-\p‚-\P_>p|.\pA}.\p…[[8П?-,ϟ-\HПoA-\| .\>~ H*,…'P_ p… ӷp… .DO„ oaA O@ A 4ϟ? ϟAϠA ϠA 4h?} 4hРA ϠA /_} 4h`> 4hРA ӧ? 4xaB 䧯A װaC%P?6l8П? aÆ װaÆkذaÆkذaÄ5lذaÆkxПB5lР?kП? 6<_ÆkذaÁ5lذ!|6lذ|6l0>} 6lذA~П? 6TϟA aÆ װ@6lp>~ 6l0 6l(0 6LO_Æ 6lx_Æ 珠װaÆk 8`A&TB *TϟB *Tx0? *T>} *TPBS_A)TP‚OA)TPBS| *T>~ *TPa> *TP|*TP)TPB OBPB ?PB O)TP‚)TPB)TPBSPB ӧPB *TX> ϟB *Tϟ? OB *ϟBSPB? 4xaBO@ DPB'p "LР>} .\pB-LП <0…8 @,h „ O@ gРA 4h>~ 4hРA 'p "Lp!A H*4O… .\!?} p… B-\p…[_ .\… .\p… .\p‚-\p… ӷ?.\p3… .\HП? ˷p… [p… .\p… .\XP .\p!B}"p… WП .\Р? ˷p… [p… .\p… .\X0_ .\p!~-\p… .\p… .$/… .ܗo… -B -B -B -T@'p "Lp!C5lذaÆ 6lذaÆװaÆװaÆ 6lذaÆ "ܗ_Æ 6l_>} 6lذaÆ 6lذA5lذaA~5lذaÆ 6lذaÆװaÆ */_ 6lذaÆ 6lp |6l |5lذaÆ 6lذaÆװaÆ 6ԗO 6lذaÆ 6lȰ_|6l0a|5lذaÆ 6lذaÆװaÆ 6/_>}6lذaÆ 6lذ!B? 4xaB o… .\p… .\P |-\p… &/~ .\p… .\pBo… ./_}.\p… .\p…˧… .\p… .\p… .\P`}p… /_>~ .\p… .\p˷… .\p‚˗ .\p… .\`}o… .TO_|-\p… .\p…˗/ .\pZ~˷,h „ 2l!Ĉ˗/߾~%J|'QD%J߾|'QD%/_|(QD%J菟|'QD˗/߾~$J(QDۗ/_>}I(QD ӗ/_>}I(QD/_|(QD˗/_}I(QDۧ/_|I(QD/_|'QD%J>}ǯD%Jdo_|OD%JH}˷?%J(QB/_|? 4xaB 6t?~˗o?>|Â˗/_>}{Ç:o_|Ç>|CO@}O@ DPB  ׏> ǯ,h „ 2lС~˗/}{Ç o|ӷ>|Ç O|ǯ?$XA .dP~O@}O@ DPB >L}(P?~'p "Lp!ÆO|,h „ 2l!Ĉ `>ǯ?$XA .T_?~O@} <0… :|~O@}? 4xaB Ǐ>} o~8`A&TaC!FxП?~O|Ǐ?8`A&<ϟ?ӧ`>Ǐ?$XA .dCǏ>} O},h „׏}'p`>}? 4xaB 6tbD Ǐ?}8`>}O~ HA8>}'p |ϟ?$XA .dC%׏}'p A}8`8p>}'p A}ϟ?$XA .dC%N(П?>8`A 'P ?~? 4xaB 6tbD?~'P |,h`A}Ǐ~O@ DPB >QD'p~ O@ DPB >QD8p`~ O@ DPB >QD-^ĘQF=~RH%MDRJ-]SL5męSN=}TPEETRM>UTU^ŚUV]~VXe͞EVZmݾWn|/C˗|1/\/_>˗/?c/_|͗߿~9P_~G0C~[4_~0C}㗏| o\/_>'_|˗߿}_>'_˗߾| (0|8`A&TaC!F0_>~'_|˗o?}ۗ/?/@~/_>ǯ`|8qĉ'N8q"|ۗ/@}ϟ|/?׏|'0|/?ۗoĉ'N8qb|ۗ/@}ϟ|/?ǯ}O`>_>~(,h „ 2l!Ĉ'R؏߾|O`> ̗/~_>'0_>_Ŋ+VX|ӗ/~O?˧O`|O_|O`>}#/|*VXbŊ+V$XA .dC%2̗>~ ̷_>˷_˗O߿|/߿| ̧/_|'0_'N8qĉ'"̗_>~ _ ̗_> /A~O߿|O~'_'N8qĉ 㗏_|}>~ |˧_>'P_? ̗oĉ'N8qĉ뗯_|ۧ?}O_>_˷O`>ӗ/@~/߿ <0… :|1ą/_>ϟ|/_?} |O|˗_A  <0… :|1ĉ+Z1ƍ;z2ȑ$K<2ʕ,[| 3̙4kڼ3Ν<{ 4СD$=4ҥL:} 5ԩTZ5֭\z 6؈;;PKTEO@OPKfUIOEBPS/img/repma002.gifGIF87aXG?**?***UU?UUU????**?*******?*******U*U?*U*U*U**?*****?*****?*****?***UU?UUUU*U*?U*U*U*UUUU?UUUUUUUU?UUUUU?UUUUU?UUUUU?UUU?**?***UU?UUU?????**?***UU?UUU?????**?***UU?UUU?ժժ?ժժժ???**?***UU?UUU?????***UUU,XG H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH*]ʴӧPJJ$@,h „ 2l!Ĉ'Rh"B$X?$XA .dC%NXE HP?$XA .dC%NXE,È#F1bĈ#D aĈ#F1bĈQ?0bĈ#F1bC1bĈ#F1bϢ?1bĈ#F1BF1bĈ#F%#F1bĈ#F1#F1bĈ#F,È#F1bĈ#D aĈ#F1bĈQ?0bĈ#F1bC1bĈ#F1bϢ?1bĈ#F1BF1bĈ#F%#F1bĈ#F1#F0#0# ? 4xaB 6tbD)Vx?0bĈ#F1b(џE1bĈ#F1b菡̗~1bĈ#F'`>~È#F1bĈ@ ̧o`|拘#F1bĈḐo`|{/_|0bĈ#F1F|˗aÈ#F1b8џE/_'_>1bĈ#F1w0߾~_|ӗ/_/_}GП|%'F1bĈ `}|/_~_|ۧo`~w|O@ DPB >QD1w0_}O}o|o߿|3!|UXbŊ+VH_ O`>_>|B~;ȏ߿|UXbŊ+VHC__|/߿|>}_*VXbŊ+V$?__|/߿|#ȏ?}˧|UXbŊ+VHCoܗO_߿|8_>|_>O@ DPB >QDU`/߿}o_|0'p| '0o| H*\ȰÇ#JH?Ǐ_>`|G߿|'0| 70_Ŋ+VXbŊU`O?'0߿|g0?_ WbŊ+VX"A _>}_ '0߿}/| '0߿| WbŊ+VX"A+|_|O` _'0|G0_Ŋ+VXbŊ1w0|/>˗/_/_}O@_>o ?$XA .dC%NH_ |ӷO|/߿} ? ?~_>} <0… :|1ĉ c菢?* א_Ŋ+VXbŊUO?* א_Ŋ+VXbŊ1W~ UXbŊ+VX_*VL؏!+VXbŊ cbŊ+VXbŊ+&W񟿊+VXbŊ+VxC+VXbŊ+VX1UXbŊ+VXbŃXbŊ+VXbŊ UbŊ+VXbŊ+_Ŋ+VXbŊ+VL?+VXbŊ+VX?*VXQEUTQEUTQE ? 4,h „ 2l!Ĉ'Rh"A aĈ#F1bĈQ?0b#F1bC1bĈ#F1bϢ?1bĈ#F1BF1bĈ#F%#F1bĈ#F1W1F1bĈ#FY71F1bĈ#F1W1F1bĈ#FY71F1bĈ#F1g_|˷/|_||aĈ#F1bϢ?O_}ӧ/_|˗|/_?$XA .dC%NX? O_>/_>~>}~-ZhѢE-JgA}_/_ǯ_~ӧ?}ϢE-ZhѢE30@__>8P~O@ DPB >QD |_/߿o@? 4xaB 6tbD)V<菡?O`/_o߾߿~ϢE-ZhѢE,#߿~_~|߿~?,ZhѢE-Z菡?O`˗_o_/_~ϢE-ZhѢE,#/_~_|/_~/_~_|,ZhѢE-Z菡hѢE-ZhB='p "Lp!ÆB(q"Ŋ11_B~,ZhѢE-ZПE%ϢE-ZhѢE 1gѢE-ZhѢEYgѢE-ZhѢE1W> 4xaB 6LϡCsP!?$XA .\菡B'p "L0B *TPB *TX,h „ "_A} 2dX? "ǐ!C 1dP> 2dȰ? ǐ!C1d0?~ 2d? !C 2菡2dȰ?~ 2D!C cȐ@} 2dȐaA #!C cȐaB2dP?~ 2C 2d(C1D|Ǐ`>2$/a>1$`>c(0Å2dȐ!Â*GPÃ.70A})ǐAcXÂ#?~ 1d?$XA .D菡"ǐ|#Oa> Ka| So>1\!C 2,菡B1 w0Â̗0AcȐ? 2dP? +/_~˷/>}_|/_~ׯ`>#|/_~ԧ/߾ӧ/߾|˗A}ӗ_|ӗ߿|/_>}|ӗo_|O_ ˗_|/}o? 4xaB cA}>}ӧO_~˗߿}|/| '0_}/_A}/>}˧|Ǐ|/_?}/߾˧O_}/_?}/|ӗ?~_| ̗o} ǐ? 2dP? +?}_|/?OO_|G?/?+߿|_˧?}ϟ| ̗߿||o|oO`/_?~8p@} H*\C#?}_|/?OO_|gP| ̗~_>/߿|Ϡ?~>/?/_>OO`>/A篟?'0_~׏!? 2dȐ@ W0_|_|O`˗/_W0_>G0?o_ >~ /߿|#`>'P|󷏟 /߿| /߿| _>8}/?}O,h „ .P?˗/߿|˗O`| }/_| '0A}_~`>/|˗/_>'0? /}o߿_߿>~OO@O@ DPB+`>'0߿|˗_~ ܷ/_|G??+O`|_GP|_˗O`|_O` ߿|_>O`|cOC 2dXC#߿~ /_~|_W0_>70߿|/߿| ̗O`|/ G0_~_˗߿|_|/߿߿|߿/_߿|o,h „ "_A}_>˗/_|O~_| />o_|_ۗ/_|_|3/_>}/_|˗/|_|_˗O@}/_|ۗ/_|cOC 2dXC#/_~ /_|/_~/_W0_|70߿}/ o_| /߿~3~`|O`_/߿߿߿?~(>,h „ "_A} [!C2dPÁ2dxPÅ ǐ!C P?̷pC1d0?~ cȐ!B*P ? 2dȐ@ П g }˗/_}g~˷ϠA480A /_| gРA4(P,h „ .P?8`| W`|W?} /_| ,X`} W` ˗/_} W`+X> H*\C'p "Lp> *$OB &̧PB8`A&Tp?  <0a| *TXp> *Tp> ? 4xaB c诠|2\C cȐ!Å2d(PC 2dXC3o|!C1d0?~ 2d? !C 2菡 'p?!Å'П| *g_|!C /o|ǐ!C P? 'p?!C 'П| 2Ǐ| ԗC G_|o?cH? 2dP? 3_/߿8`AG0?"D>۷}"D>ϟ| >!D!B",!B+/|!B |"Dh?o?"DaAo? o?"!B"D@ +`>'0BǏ`O|ӧ!B'0_>"DaA}ϟ|O`>!D!B",!B3O`> ̇!B߿|>}˧O,hР?~ /|~'p `>/|C?}ӗ/|"D>o߿| ̇>"D!B!DhA} ϟ>}C!‚O߿| ̗O`>Ǐ|'0B",A~ o߿| ̇!?"D!BCH_A} /_?C!'_| ̗ϟ|"ϠOB", ? ̧/_|A}"D!B CР?80@/_?$XA '_| ̗ϟ| &Ǐϟ &LA~|O_ƒ%L0a„  p&L0!B/߿|˧/_„/?K0a„ ˗_| '_|ԗ0a„ &LX_„ԗ0a„ o| /| &Ǐ|/_ &LA/_˗_ƒ%L0a„  p&L0!B'P_„%L0a„ H,h B&L0a„ K?&L0aB} /a„%L0a„K0a%L0a„  p8`A&D/‚˧Pa| *T0a> " <0… 1T`>$XA SH0_|* ǐ!C  _A}}cȐ?~/70A @}>$XA }o>~%4/a„ &L # || &L(P|K/| Ǐ~߾ &L} ߾K0a„ &/@O`>˗0a„/_|˷/|˷}g0|K0a„ o`? ̗Р &L0a‚&$菠 '0?&LP_|˗|˧/߾o?$(?O` ,X`70~`O@ DPB+`>!Ç/|?~'0?P|'0C 3O_~/_>~ p> 2dȰ? g0| ǐ!CӗO`>|ϟ|c?/| 2L|˧/_O`>cȐ!C c诠O`> G0_'0}PA'0C 3߿|߿/,? 4xaB cA} '0| 2o`>'0߿| ̗O`>@˧/߿|1d0?~/'0C1dȐ!C1WP|O`> G0@~_>/|>ӧ?} 2LϠ>/_?ϟ>1dȐ!C1T菠>O| 2o`>/߿|'0_> /Cϟǐ!Ä߿|? ϟA 4hРA gР '_|3hРA#o~/_~'0߾|gР>/_~ 4hР ˗|˗?3hp> 4hРA ,ϠAg0@ϠA o`_|/|/A#/_>ϠA 48?/_~_| $ϟA 4hРA gР 4hРA  < &L &/a„ &L #/a„ &ԗ0a„ K0a„ 0a„K0a„ &/@'p "L> *$OB &ԧPB8`A&Tp? П <0aB} *TX> *T> ? 4xaB c`>$XA ӧPB)TP„*TP,h „ .P?8`A&LOB ӧPB ӧPƒ'p "Lp!B ǐ!CcȐ!B} 2dPC cȐ!C cA} 2dhPC ǐ!C cȐ?~2dȐ!C+`Ǐ? W0| !A}O_> 2LϠ|˗/?}/>1dȐ!C1T菠>?~2dO|1o`>+/_?cȐaB˗ϟ|/_?cH? 2dP? 3/}_> oo7p>~o,h „ o@}%L0a„ 0!AO>~/_„ G0| /aBO߿}K0a„߾/?~ 0a„ &L(_ 3/|/a„+O`ӧ/>_>}g0|%L0aB} '~/!B} &L0a„%LHA}O`>%L0?} /|/_~˧/_„G`'p "L| _?K &L0aBWP| _>~ &D_|O`|_/A}/| &LP|o`}/A} &L0a„%LHA} '0?%L0?}˗_>/?_ #O_~ ̗0a„ #ϟ|췏_|/a„ &LPw0| ̗0aB'0߿|/|_>$X>˗O`> 4h@}ӗ?~+Ϡ 4hРA 4h? GP| 70A 4O|'0_> /_> 4|O`> 4h@˧/?G0A3hРA 4hРA WPO> 4h`A _/_?_> 3߿|gРA Ϡ'g@} 4hРA 4X,h? ?};x'0߿|'0_~˗߿|Ǐ>ϟ/_~}/_˧A ˗|˧O_>_~;x @|/_?$XA #/_> ԗ/_>Kx &L0aBWP_„ &D_„ "ԗ0a„ ԗ0a„%L0a„ 0!AK0a„%L0aB&L0aB%L0?~&L0a„ K8_A} H"ܧOB SPB )T>$XA .\菡BO@ Da> *,OB *DOB  <0…1WP@,h „SPB*TPa| *D? 4xaB cA}8`A&DOB ۧPB ۧPƒ'p "Lp!B w@} ǐ!C ˗OC ;/_cȐaB}˧_|O|ǐ!C P?7P_>1dP>Cԗ@}1d0?~˧_|˗?}1$C 2d(CO>~ ǐ!C c80C O>~1d0> >}} cȐ!C cA}'p?cȐ@}1!Coo,h „O`>߾}Kx &L0aBWPA| &L_|O_}/_„70| &LP~O_>/A} &L0a„%LHA}'0|K0aBo?}/_|&4| ̗0a„ #ϟ|O`|%<_„ &L0@ +`>/_„ W0_|߿|/_„̧`~ <0>/_~/| K0a„ &,/aBW0|/a„ #/_>~_|/aB̧/_K0a„/?ϟ|Kx &L0aBWP| ̷_ &ǯ`}K>˗O` &L/a>~˧/߿|%4/a„ &L #_| ̷_ &`}KР?~/߿|O@ D _>} ̗ ? &L0a„%诠O|K0A O`>_ 3߿|ӗ0a„ _>~O?}KhP_„ &L0aA GPO|K0aB} '0|/_„#߿|/a„ G ?/A~&L0a„ K8_A} /_?&LӗO`>_ /_~ H3/_~/_>/A} &L0a„%LHA} /_~%L0@}˧/|˗߿| Ǐ|/_ &LA/_/_~ 0a„ &L(_ K0a„K0aB&L0a‚&LP &L0a‚&$菠> &L &L_„ &LH &_„ &L0@ +/a„ "/a„ K0a„ K0aBO@ DP…*GP? 2,!C cȐ!C1d? 2dȐ@ O@ DPB >QĄ8`A&Tp? P <0… :|1ĉ 'p "Lp!B 1dȐ!C 2dȐ!C 2dȐ!C cC 2dȐ!C 2dȐ!C 2dȐ?2dȐ!C 2dȐ!C 2dȐ!C1T!C 2dȐ!C 2dȐ!C 2dHC 2dȐ!C 2dȐ!C 2dȐ!C*ǐ!C 2dȐ!C 2dȐ!C 2$菡? 2dȐ!C 2dȐ!C 2dȐA c!C 2dȐ!C 2dȐ!C |˗/_>3/_}|?O ?'p "Lp!ÆB(q"*W0_|˗| ˗o|/_~˧O`| /?/_~+VXbŊ+|'>3O`>/_?}O` _>/_Ŋ+VXbU`o@'0|󗯟>'0?~/|bŊ+VXb;O`|ȯ>`>_>#_>O`>$XA .dC%N_ /@`>#O`>}O`O`>XbŊ+VX?0@o? ̗/>/_| ԗ/߿|o| '0_|8`A&TaC!F8?+O |o߿}(0_|˗߿|'P_|˧_'0|O@ DPB >QD1w0|'0_| O`>#_>#_>XbŊ+VX'0_> ̗/`OO`>*VXbŊ+V$菡ۗo` W0@}7p>'P?~/|UXbŊ+VH_ o_'P_| G0}/@}߿| WbŊ+VX"A ̗/|߾O|/_>} /_>~?~/_~'p "Lp!ÆB(q"E*W0_|˗߿}'p/}/}˗~bŊ+VXbEXbŊ+VXbŊ UbŊ+VXbŊ+_EǯbŊ+VXbŊDǯbŊ+VXbŊcbŊ+VXbŊ+&W񟿊+VXbŊ+VxC'p "ԗ/a„ K0a„%L0a„ &4 <0.G@},h B}&L` &Lh0_ &L0a„'p "Lp̷pB.\xP… Էp… .DO… .oB[p@} .˧O`~˗O߿|/_> #O_|˗ϟ|˗/ '0_'_|70_>} ̗/|/_|ӷp… ? 4A~˗O߿|߿|/_>} ̧o`/_>˧_|˗/߾ӗ/?}'0_˧_>ӗ/'П|/?/_>}O`~O |˧o`|/_>} O_| '0@˗O |G0_> ߿|'0| GP|'0@ 70|>$X>>_> ?} 'P?~/@~/|o`>4hРA $ϠAo`?}˗O`>/@~3(P|'П>~o|'0_A}o|70|} O`>O>`|O? >'_|'0|?~ 4hРA 3h_|/} O/߿| O|O ~'П|'0A}O`o`>'A #@ '0߿|_#(0˷?~_>_ <0.G ߾_}/B}_>@ G0| O?o`@ '0?'0߿|_3`>_|O`o`>-\pW0_|˗_~/_|#߾ o?'0|/_>}/> o?}[XPA/˗/߿|߾o o|/_~'0_|/| <0.G˗/?} o|_|70_}>O`/_| o_}> '0? ?˷_>/_||`o?~_>#… .o?G0_/_>~/߿|O~˗~`>;/|O`#/‚/߿߿|_O`>~ o˗>_| | O,h „ [A~#/? ̗/|_>_|o`| G0@}O`'0|oA~ ˗o?`/_| _>_|O`o`>-\pW0_}˗O |/߿}>/?~O`>#O>'0|O`ǯ| #ȯ| '0|>}> ܷO /߿}oO | O,h „ [A~'_|ǯ@}/߿| o'P~ 70|7_?ȯ@} '0?~[h? ̷o@} /|_? 'P?~>}O߿| '_p… [_|O_/?/_>}ϟ| 70_|@}O`>o`| ԗ/_ԗ`~߿|/_>}_}'_|O߿|/|70| <0.G?/| ԗ?}˗/O߿| O_|/_>} >'0} 7_|˗B ԗ/_'0|˧_˷o>'_|O߿|/|70|[p…-` Էpƒ.\𠾅 .\p!B.\p@ #… [pA} .\x .\pA.\p@ O| HK0aB&L0A} &L_|K0aB%L0a„%LHA~&LP_„ ԗ0a„ 0aB˗_„ /a„ &$/@'p "/a„ K0a„%L0a„ &,? 4xaB-\} H!D!|"D@}"D!B",h „ [_| HK0aB&L0A} &L0a„  <0.G_?$XA"D>"Dp~"D!B? 4xaB-`>ϟ|-T>-\P|/_>~˷_>} o`-\p… ӷp… [A~˗o?p ԷpB}O | ̗/߾ '0_o… .\h .\8 3O`oB}׏… ̗O` _>'_o!A} .\pB-\p.G??.@ "DP|/| /߾~ǯԇ!B"DaA"D!B!DhA~_>~!DhPA}!D?}/߿|'0߿|~C?"D!B!B"!A̗/!‚ !B߿|˧_~o߿} O@ DPBkذaC&G?߾|5L`|65_Æ 6lX 64菡 `| 3aÃ_O/߿|@} 6lذA6lР `>06Do``>˗/?aÆ 6,_Æ _| _?"g0_Æ'_>O>~ /߿}O>8p>$XA .dx 64o?G0@}aB}5lP|O}_ǯ@}5_Æ 6lX 64菡 ?}kP| G0|O`>O߿|/_> 5lذaÆkذaCO?'p06Do`˗|ϟ '0_|װaÆ ǯaÆ c` kذ?} 6daÆj? 4xaB/_>~ o…-\𠾅 .<… .\Р?~ .\pП <П &$/a„ ԗ0a„ &L ?} H*`? ? 4x>"D!B"B"D!BO@ DP@ + ? 4x!} &LHp_„ &4/a„ &L0aA H*o?}  ?߿$H A G A $H>$XA SPB *,? 4xaB-? 4xaB 6tbD)VxѠ?8`'p "Lp!ÆB(q"Ŋ/F1bĈ#F%`> ,h „ 2l!Ĉ'Rh"A aĈ#F1bĈQ?8p@ <0… :|1ĉ+ZHC1bĈ#F1b|F1bĈ#F!c#F1bĈ#F/_>~ aĈ#F1bĈ?˗_||/_>}ϟ| ̧/_|˧?}È#F1b_B)W0_|˗| ˗o|/_~O`>}ӗ/_>}˗F1bĈ#;}'П>~ '0|?__>O@ DPB >QDU`o@'0|/ '0|o_Ŋ+VXbŊ1w0|'_?} '0|'П| G0?*VXbŊ+V~ '0|bŊ+VXbŃ;O |o߿}(0_|˗߿|/> '0_|ۗo?$XA .dC%Nx_ 0@o? ̗/>/_|˷ϟ| ̗/? 4xaB 6tbD)|/|+O>3/| w_+VXbŊ_|/|+O>3/| w_+VXbŊc`~'P| O`> ~UXbŊ+Vx_ o_'P_| G0@~O`>'0_Ŋ+VXbŊ1w0_|˗߿}'p/A}0߿˗/? 4xaB 6tbD)W񟿂/_|`>˗/˗| ̗/>WbŊ+VXA UXbŊ+VXbń*WbŊ+VXbŊc询|WbŊ+VXbŊ!䧏˗_Ŋ+VXbŊ+_~ H'p "Lp!ÆB(qB$XA!/߾O@ <!B"D!B!D!BC!B8`Ap8`AC!‚!D!BC!Bۧ!B "DH?"4!A/ 70_ /_|#/_>_>/@ 70ϟ|ӗ/_>}˧_|˗/|/_>~O_|o`~/ϟ|˗//_|/'П|˗/|/_} C!B8`A߿߿o߿߿|@}߿/߿ O@70|ӗ/˧_|˗/߾/_>}Ǐ@}/>'0_|O`~˗ϟ|/_>}˷@}O`~˗ϟ|/_>}˷ A$H A  AG_?}˗O`>/@~#O|O`}̗/|Gp ?/?} G0|O`>_>˗O`>_|/߿/߿/??__>$(P_ ,X?$Xp`?O߿ /߿'?~O@}_>7_|_/@~_>o` /?/߾|O?˗/@~_>o` 7p ?}>/|,h BWP_A}o߿|/߾~>O}̗߾ ?_@ G0| '0|@O ~/߾~ǯ '0| G/?~ O?#O`%L0!A 8`>O@7P/@~˷?~8P|'߾˗߾o|/?o|'0|8p|o߿|'0|/?~O?/|o_O߿|o` 7p'p "/@'P_|O|O>/_|#/?}ӗ!?_o_}/_>~˧_>˗߿|#?߿|o?~ϟ}o`|˗/>o?~?'0|/_>} K0aBO} A/_|'p߿}_7P|˗/_>̗G@}_o_}/_>~˧_>˗߿|#(P}O߿|_||߾| 70_|˗OA|߾| 70_|˗OA#H A $(A|_>>G>O|̗?Oo`/_|70| /|Gp ?|_/߿|/|'PA_|Ǐ`| G0@} G A $H?˗oAo`>/|O~#(P|'_|G?}_7_#O`>/_/_>~ O~˗~? 7p/߿|/| O? 4x@ +>}'_ ԗ>}WP|o`'_|3|_?o`_ G0A~'0_>OO߿| ǯ| G0@}>}'P?~O`>K8P_„ _>}G /@~'P_/A}_#/@~ >/~'0|?}O`> (P?} ̗O |_>ۧ_>~O`>'P`> O|_?O`> O> ,h BWP}ӗo`ϟ˗O@}_|/_>/@}?}| 70_|_| ̗/'P_| o@} ϟ O_|/_>} o?~_} ԗ/_?˗O߿|K(P_„ _Gp_|߾_7P|/_|˗߿|7PB}||/߿˧_˗/˧_>|߾?}| 70_|O߿|/_~ ̗/G?$H A G A#H A  A $H?~8`A&TϟB *<菟B ԧPB*菠?~ *$OB)TPB*TP!B} *TH? "P*TXPB PB PB PB˗A} *TOBPB*TPB *4OB "ԧP˗_A*TПB SPaA} *<ϟB *,ϟB *~/˗O_}ӗ/_>},X` +X`AW` W` ` ,X`,X` ,Xp>_|70߿|/_>} ̧/_|W` `A +X` +X` ` ,X`,X` ,XP?~?/_˗?~_|_>  < #_„ K0aB&L0aB&L0aB'P?}˗O |/߿|O`>%L0@ +/a„%L0?~&L0a%L0a„`>_|_o`&L #_„ K0aB&L0aB&L0aB#`|_}/|'0A&LPԗ0aB&L? &L0?~&LPB ?~'P`|/߿|O߿| ? 4x!A G ԗ0a„%L0a„%L0a„ G0|/߿|_|_>0a„%诠 "ԗ0a„K0a„ 0a„ _#/?}O~?~+/a„ K?%L𠾄 &/a„ &/a„ &$o`̗>O~?~#_„  p&LP_„ /a„ &?$XA  ߾}O>~/_/| p?-\🾅 Էp… [p… ܷO>~>}oO |o…-篠  ԷpB-\pB~.\p@˗@~?}O߿|˧/|Էpƒ.G ӷp‚.\p?} .\p>_|O߿|_ӗo |?8`A p&LP_„ /a„ &_„ &L8 &D/a„ K?%L𠾄 &/a„ &/a„ &$/a„ 0a„%诠 "ԗ0a„K0a„ 0a„ /a„ K0aB&$菠?~ &"DX? 4x!A G_>$XA"D`>"Da>"D|"D`>~ HK8_A} &D/a„ 0a„ /a„ &_„ "ԗ0a„%LHA&LxP_„  ԗ0a„  ԗ0a„ ԗ0a„K0aBWP|O_|&`>} 0A~'P_„ &|O`>K0!B&L &$/aBG0_|ӗ/ O|%LP}K0a„ ̷O`>o` &/a„ 0a„? WP_? ,HP|_ $AW` ,X?O`>` ,_ ,X A} ,X` ,XP?'0߿|W`'_,X` ,X` ̗O`>o` ,X@} ,X`+X` W@O` W`A|+X`AO_ ,X`A߾_/,hA"D!A}"DBǏ`>'B ̷?~ˇ!B!B"o`>~O`>C!‚"D!A"DР?g0_|ۗo?#߾ ̇!B~ !B`O`>C!!D!B"D? #|o_}"$o`~'0B#/_?"D🾁O`>!B C!B?~ HK8_A} G_ #> ̗0A~ K0a„#?~O`&L &D/a„ K?'P~&o`'0_„̗0a„ ?~O`&L🾄 &D_„  p ~%LO|O` g0_„ &|O`>K0!B&L &$/aBG0@}/aBO? ,` w w ?};x>/|ϟ|}"D>$XA%LHA8`A C!B"D!B"D!B!D!B'p "/@'p ԇ!BC!B!B"oB"$? 4x!A G>$XA"DР>"D>"D@}"D`?~ HK8_A} &D/a„ 0a„ /a„ &_„ "ԗ0a„%LHA&LxP_„  ԗ0a„  ԗ0a„ ԗ0a„K0aBWP|O_|&`>}ӗ_„#o| &L?O`>/a„K0aB&L #|O_|&o`>}ӗ_„ O` &L8P|O`>K0a&L?8`A p _>K> 䗏&,|K0a„#/| '0| &D_„ "ԗ0a„%LHA_>KP 䗏&~O@ o_ϠA߾ 4hРA o߿| '0| 4h?} 4hРA4hРA4诠>߾|4h>/~ 4X?ϠA 4H?O`>ϠA ϠA 4(PA 4HПA #|o_} 4(P|O`} 4O|gРA 4o`O`>3hРA3hРA ?$XA%诠>#/_„O~0A~_ &L?O`>/a„K0aB&L #|/aB_|K/a„ 70? '0|%L0?} &L &/@'P?~K>/? `>%L0a'_>o` "/a„ K0aB&$菠?~ ~O@ >}gРA '_> 4hРA} O`>ϠA ϠA 4(? 4hP?g0}˗A#?}˗/A G0| 4hРA70~/_>gРAgРA ϠA $ϠAǏ`>ӗ/_? 70?ӗ/_> o` 4hРA 70~/_>gРA 3hРA ?$XA%诠 "ԗ0a„K0a„ 0a„ /a„ K0aB&$菠?~ &$XA%LH~8`A C!B"D!B"D!B!D!B'p "/@ H*\ȰÇ#JHŋY#F1bĈ#FÈ#F1bĈDaĈ#F1bĈ?0bĈ#F1b(џE1bĈ#F1b菡?1bĈ#F1JgF1bĈ#F!c`|˗/̗/>/_|˗߿|G0߿|/_>˧#F1bĈ1? ˗_||/_>}|˗/_>˗//_>'p "Lp!ÆB(qD ߾|O?`'p|#_ '0E)RH"E Q`o@'0|󗏟>o| O>(RH"E)R\菡'>3O`>/|G0߿|G"E)RHB+O`|ȯ>`>̗O}70|)RH"E).|(߿@'0_|˗_(߿7_> <0… :|1ĉ_|(߿@'0_|˗_(߿7_> <0… :|1ĉc`> O`|'P| G0_>'0߿| '0_Ŋ+VXbŊU`> O`|'P| G0_>'0߿| '0_Ŋ+VXbŊ1w0߿~ _? O`>'p|'0߿|O`+VXbŊ_|70?~+O>O} /| ܷO>*VXbŊ+V珡/_|?} O>˧__|/_~˧߾|  <0… :|1ĉ_|˗/_~ W0}˗O߿|_|/_~˧߾| WbŊ+VX? UXbŊ+VXbń*WbŊ+VXbŊc询|WbŊ+VXbŊUo|WbŊ+VXbŊ1WbŊ+VXbŊ_Ŋ+VXbŊ+V<菡? H*\ȰÇ#JHE 8A  @,h „ 2l!Ĉ8qĄ 8Ao@~,h`}"D!BC!B"} ̗/> / 70_ '0_|2dHPA}O>/_|2dO_| |O`>g/_|̗/_>}O_|1C/_>}o`~O`||o߿߿|߿|O@ DX?˗ϟ@}_|%L0aBӗ/?}'0_˧_>˗ϟA~˗߿|70߿|/_>˗O_BK8_A~'p߾|O O` O>~ 'П>~/| &LxP|׏|/a„ o`>o?}O`|g? /~G>KXB GP~ۗ/|_|_>?}˗O`>/@~O@ D??/_„ &o?}O`|g /~o } ̗ ?W? ߾_}'0_A#/} O߿|O` &<`>O`&L0aA'П|70|'ПA~#/@G0| C/aB@O ~|/|O ~̷?~ <?~ O|˗0a„ @ O| ̗@`|_KHB +ϟ|˗_~'0_|'0|O|/a„ 3O`|˗߿|K0a„o_}> '0}3ϟ|(߿ _>7p (8🿁 'P_|O|o?~ /?} o|O`|'p ",|70_|˗_„ &$O}o 70| ?O@o | /A#HAϟ|_>> G?~̗?~˗_'0,h ƒ `>&L0aA '0|o`>g?'_G0@%, #O`>/|O~;_>/|O~K0aB70|%L0aƒ '0|o`>g'_>70@%$O>}'_ ԗ>} W? /@~'P_'0_„ g`߿|? 4xa‚ O`>'P| ǯ|O} /|'P| COBO@~ ~O߿|珟>/?~oSPB70|)TPB'0|O`O`> O>~'0߿|o`>!P ܗ/?}o|O`| o |70߿}O߿|˧OB |(0_|8`A&A}Oཱྀ/_~ ?_|/_~'p_|SHB  GP}ӗo`ϟ˗OA~˗߿|7P_'0_|*T?~ G0|SP„˗| '0~/_~#/_>~˗|˗/70S(_A~*T8? *TP?} *TP)T0!? *TXB H;x/?}? A GPA $H@~8`A&T?~ 2dp>  |/ /˗O_}˗/>c ? &Ǐ!C .ǐ!C ǐ!Á O /_>˗O | ̗O`C菡B1d? 2d? 2dPC 7>_|/@~/|Cc0?~ 2dp> 2d? O`˷?~| o߿| 'P ?  珠<~O`>w 2d? O}O>~/߿|_70A~1T菠> ǐ!C ǐ!C cȐ@~'P?}oO߿| ' |?~ (AA $H?8`A&T> 2d? o| //߿|_|o`>cA} .!C *Ǐ!C .ǐ!Cܗ/_/??} ̗/| GB !Ä1dȐ!Å2dȐB2d8? &Ccp!? 2dP?~ 2dp>  !C !_A~2LC 2\!C .Ǐ!CcȐaB~1T菠> ?$XA .$C 2\!CcȐaB~1W? ǐ!C cȐ!C cȐ@~2dB #!Å1dȐ!C1dȐ!Å2d(? &Cc0?~ 2dp> 2d? !C !P?2\C 2TC 2\!CcȐaB~1Wp_>$X!D!Ḃ!B"Dx0_>"} '0_|/_>~O`|˗/>G A/_|/_| 70_|8`A/a„ 0a„ !0!A%L!?˧/˗߿|> ̗/O_|&@}'0_O`ӗ0a„%L0@~&L0!?Wϟ|%L_|/|O ?}_?~70%LO|/~/a„ Wp?'0|˗ ? &LB GP_|O_|'p o`|| O>~O`>> ǯ`O`} gРA $> O`˗Ϡ4hРA3(ПA W0|oA+o`}'0| G0?} G0|3h?}ȯ'0| 4hРAOo`>g ? 4hР gРA+O`Ao`}߿|߿|>߿/'p +o ~o|4hРA #؏}'0|ϠA~ 4hРAϠA+O` gРA ˗_~'0_|`/_>~߾|4h> o|'0|3hРA gP߿~O`ϠA~ 4hРAϠAW0|ϠA/_>~/|O`>o`|˗/?? ,_|/_| 70_| 4hРA_o`>3h? 4h@~3h_A~ ˗O?gРA > G0| G0|3h?}/_>~'0| 4hРAo}o`>3h? 4h@~3h A̗/ϠAo`'0|'0|ϠA+o`|/|4h 2 'P߿| '0 <0!?W#/_„70߿}`> O`>ȯ| w0@~70|%L0!B O`|70|%_„ &_„W0@}KP ? o#O ?}`>'0_„+O ~O`&L0?}'0_|O`>/a„ C/@+O ̗0?~˧/?`|/?O?}'p Oཱྀ˗|˗/> 4h?~_?O`4ϟA 4hp ?4h? ~4hP ?˧/?`|˗|˧_|ӗ/_? ǯ`>˗/_~/_| 4hРA~70|3h? 4h@~3h_A~ ?}3hР?~ 4hРA ,ϠA 4hРA3/_|/_> (P ? HC/aB+O>/aB%L0a„ 0a„ &D`> /_| ̗/K0a„K8_A~&Lh &L0!B} &L0aB%L0@~&L0!?&$菠 "/a„ &Lx &L0!B} &L( &Lܷ ? 4x>}"D!B!D!Bܧ!Bۇ!B O@$H@'p Է!B"D>}"D!B!DA}"Da} (Aǯ@,h`~"D!B"ԇ!B"Dx>"<B",?#H AП /@~ϟ@}˧_|ӗ//_}׏>o`~/@'_|˗OA $H?O`~ '0_| ,h „K? ˗o?0@~˗O_>} ̗/_˗߿}/_>}˧ϟ|㗏|/_~#/_~/_>70_?'0_|&L8P}| ̗/_B%L0aB~% ? /%L_|/|O ?}_?~70󗏟|_> /@O|O ܷ| H+؏}'0|!A~"DaA~!DhA} /!DH'_>/@~O߿~#o`>/?|#|>o?}'p߾"D> ϟ>~ '0?!BB W0|!B70߾~O`#>#o`>~o`>>ȯ>__?}8`AgP߿~O`!A~"DaA~!DhA} /?"$|_>O`>o`>'__> G0|/|ȯ /BWP߿~O`!A~"DaA~!$ ?˧}CP?~/_}/_~ G0߿~ ̗/o_}O`|˗/_? ˗}߿߿?}˗/?$XA O70|,<8<A}˧};x ?/_}/_~ G0߿~ ̗/o_}O`|˗/_̗/_?`>}_>/_>~<(P_A} oO`;x; W0@};x?~ O~#O`>#`> ̧O`>;`o @߿|߿O@ 菟A~ ̗/O`>C!B!A'P~"$|_>`>#`|OG0_|7_> ̗/|ˇ!Bo|o`>CH?"DXB +_|O`>W0|O`>'p?#o ~/|wP|o> ~'_"Dxǯ߿_? ` ,X ,X@'P?~+X`A~>} G0@~'0| O`>}O Ǐ`> Էo@}_?/߿| ,X@}_?O`,( ,X` W@+O>ׯ`+/_>}/|_|#/_>}˧|ۗO|WP7P߿}7P߿}0_>~ ̧? 4x7P߿|'0_|?珠O_|4|ϟ#/_>70|/_>}ׯ߾|_#ཱྀ˗_߾|/_>}<(P|_|/_> ww🿃 w,A"D!ƒ!D|"DaA~ (A  @},h |"D!B ˇ!B"Dx0B̗!B$H$H A ? 4xa„ԧPB *珟B PB!P@)T ? *TP?SPB ӧPB)TPaA~) ?˷?}SӗO|_o?˗O߿|/_>'0_|˗A}o`~/@'_|O|'_|˗>ǯ> O`˗O@~*T ?*菠> ߿˧//_||?}˗O߿|/_>_|˗/_? o|@~'П />'0_| /?ϟ@}O@ D( &L`> +o`|| O>~O`>>}O`GP|O ԗ|>W0~'pO߿~W?O`o_%L0aB~%LHA}˷?}KP ? ̗O |_> ϟ G0|ۧ_>~ /? G0??~ӗ|߿~۷_> '߾ _ ϟ@}o`>8p'p "L`>'_„70߾~O`#>#o`>~o`>>ȯ@~o o߿|'0?}ϠO| '0_%L0aB~%LHA} /%L(| /|O| O| '0߿|Ǐ`>_>7_?}_/|/?}'p?}?}O`$H?$XA !p̗//aB ˗_~'0_|`/_>~߾|ӗ|/_~̗/_?`>}_>/_>~˗߿|'0߿~Ϡ߿| '0_%L0aB~%LHA} /?&|o?~˗߿|_~_|ۗo~/_>}ׯ?~O }߿߿}|˗߿_/߿?#O߿~O` A'p "L`>˗0?~ O~#O`>#`> ̧O`>;`o|/_>~`>G0߿| g?/_>~ '0| 0a„ !0!A̗//aB 70?}`>`> '0>?~/|O|G0߿| _>O`> O70|O@+X` ,ȯ@ Wǯ| _|ۧ_>O}#` ̧_| /_A G_?/@~'P>}`'p'0_?~o`>W@~ ,X` +8_ GP_|엯`o`'0||7_?˗O`>+8?'P߾}ȯ?~ԷO߿@O}o| 7P ~˗߿| '0 <0!?WO_|&ǯ`|O߿|̗/?~`|˗/o_>} /A}7P߿}7P߿}ۗ/?}˧O`|/_>~O`>߾˗_>p ? &LB GP_|O` 70_|_>˗| G0_|˗O?}/>?~7P߿}7P߿}/_>~˗O߿?~/_|?~o`>G A~8`A&_ 0aB%L0a„ԗ0a„ &D_„ /a„ C/aB+O>/aB%L0aƒ"/a„ &LP|_|/_> 0a„ !p'p ̗!B"4!|"D!BC!ƒ!D!B (A `>$X!D!B!D/_>"D!ƒ"D`|"D  G A H*\ȰÇ#JHŋYGF1bĈ#Fc#F1bĈ#FY#F1bĈ#FÈ#F1bĈDaĈ#F1bĈ?0bĈ#F1b(џE1bĈ#F1b菡?1bĈ#F1JgF1bĈ#F!c#F1bĈ#FY#F1bĈ#FÈ#F1bĈDaĈ#F1bĈ?0bĈ#F1b(џE1bĈ#F1b菡?$XA .dC%NXE,È#F1bĈ#D aĈ#F1bĈQ?0bĈ#F1bC1bĈ#F1bϢ?1bĈ#F1BF1bĈ#F%#F1bĈ#F1#F1bĈ#F,È#F1bĈ#D a#F1bĈQ?0bĈ#F1bF1bȏ?1bĈ#F1b؏?1bĈ#F1b/>1bĈ#F1b/_>1bĈ#F0#ʗO,? 4xaB 6tbD)Vx!|=#F1bĈ#F{F1bĈ#F1 /?aĈ#F1bĈ`|˗#F1bĈ#F˗ϟ|aĈ#F1b`|˗/>1bĈ#F1b/_> ˗F1bĈ#F ˧|È#F1bĈ#0_|aĈ#F1bĈ`|O} H*\ȰÇ#JHŋ >  <0… :|1ĉ+Zl/_>} 80?$XA .dC%NXŅ`>'p "Lp!ÆB(q"Ŋ˗O~ O,h „ 2l!Ĉ'RhB~[`>O@ DPB >QD-2/ 8,h „ 2l!Ĉ'RhB~S`>'p "Lp!ÆB(q"Ŋ˗OB~ 8P,h „ 2l!Ĉ'RhB~S`>O@ DPB >QD-./>/_>xŋ/^xEП?ϟ?/^xŋ/^\/_>}wŋ/^xŋa|.^xŋ/^_|˗ŋ/^xŋ˗ϟ|]xŋ/^x|9ԗ/ŋ/^xŋ/:/?xŋ/^xCs/_/^xŋ/^t/_>wŋ/^xŇP_|/^袋.袋.!? ̗O,h „ 2l!Ĉ'Rh|9ԗ/ŋ/^xŋ/:/?xŋ/^xCs/_/^xŋ/^t/_>wŋ/^xEۗ/_>~S/_/^xŋ/^T?~Ǐxŋ/^x"C} 8ԗ/,h „ 2l!Ĉ'RhB$˧? 4xaB 6tbD)V`>O@ <0… :|1ĉ+Z| ˧? 4xaB 6tbD)Vp|O@ <0… :|1ĉ+Z`>'p AO@ DPB >QD-:O} HP|8`A&TaC!F8bEO~ HP`|8`A&TaC!F8bE'P /_>$XA .dC%NXņ ? ̗O,h „ 2l!Ĉ'Rha|k/_/^xŋ/^l/_|5̗Oŋ/^xŋ˗/C}]xŋ/^xC}s//^xŋ/B̗C}]xŋ/^xCs//^xŋ/B|.^xŋ/^x}wŋ/^xň˗ŋ/^xŋ/&̗Oŋ/^xŋ/*Ǐŋ/^xŋ/^Lȏ/^x @,h „ 2l!Ĉ'Rh"B$X @,h „ 2l!Ĉ'RhA$H,h „ 2l!Ĉ'RhAaĈ#F1bĈA1bĈ#F1b菢?1bĈ#F1b<#F1bĈ#FQ#F1bĈ#FaĈ#F1bĈQ?0bĈ#F1bĈ?1bĈ#F1JGF1bĈ#F1#F1bĈ#F(È#F1bĈ#ƃ0bĈ#F1b(E1bĈ#F1bxF1bĈ#F%#F1bĈ#FÈ#F1bĈDO@ O@ DPB >QD-^#F1bĈ#FQ#F1bĈ#FǏ`|!/|#_0bĈ#FQw0?Q̇0߿| ䷏`>0bĈ#F1w0;b>7_0bĈ#FQw0;b>7_#F1bĈ񟿃 /|QG0?U/F1bĈѡ?7_|UG1|G_>aĈ#F1˷|//_}ӗO | /?~_|˗_> _>O󗏠? G0A G A˗?}O@ DPB >"A'0||˗o@}/_>~_|/߾㗏>~O |>}د|?|A"D!"w0_}O}O}?} /A~o?~G>/}/߿~ 3`>A7P_??!BB ;>O>'p>?}/߿|o|߾߿~_o?~o㧏>$H_> 7p?$XA .dÇ|'0߿|'0| /@'_+_}O|ӧ߾~|˗?}/>}˧O_}/_?}˗o`> oD!BQ?/?~#O` O`> _O|W0߿~@O߿} G/_~_|/>}_|˷/|߿|? 4xaB 6t𡿃߿|ӗO` _/|߿8_@'0??~'p|ϟ|/ ̗|/?}_/_>O@ DPB >"Ao˧/|8߿|o_>}/߿7p|?O` /?~O@ O>O߿|'0_~/߿|/O_~? 4xaB 6t𡿃O`>}_>>~ /@~#_> o`o_~W0|(_O__˧OO@ DPB >"A/| '0߿| '0?}_> G߿|/|O߾~+ϟ| Oo?_ _?? 4xaB 6t𡿃˧O`|'0߿}'0|/|o}O} ˗o` ߾|w0_A~//_> ̗O`_>?}/D!BQ?_>}_>'p?߿~|߿}W_|۷O>~/>'0_~/|_>0߿|_>}? 4xaB 6t𡿃'0_|/_70|˧o/_|˗o}g0˗o~w0_A˗O_|˗/_}70_>/_~o|˗?~!B"D w0|/}o_|_|/߿|˗/}/_} 70}/|O@}7߾'߿|'_??$XA .dÇ 'D B|!&"D!BT"A @!B|Oa>"D!B<"D!BTOa>"D!.?!BQa? BD"D!B?!B"D!B"D A$"D!B"D!B"ă B"D!B"D!*?!B"D!B"D"D!B"D!BD B"D!B"D!B<"D " " " H!'p 'p "Lp!ÆB(q"Ŋ/N#F1bĈ#F(È#F1bĈ#ƃ0bĈ#F1b(E1bĈ#F1bxF1bĈ#F%#F1bĈ#FÈ#F1bĈDaĈ#F1bĈAaĈ#F1bHEaĈ#F1bĈ10bĈ#F1b菢0bĈ#F1bĘПAӧ/߾|ӗ_O>/_#F1bĈѢ?8_|˷/|_||'p "Lp!ÆB(q"Ŋ|_>ϟ|?}/?,ZhѢE-Z菢?ӗ߿|_|_~O篟E-ZhѢE30@__>8P~O@ DPB >QD |_/߿o@? 4xaB 6tbD)V`>_˗_~۷_>߿~hѢE-ZhQ? _>߿|/߿}_>_>-ZhѢE-&g_| /߿|_|_||YhѢE-Z(E/|˗/_|߾~ׯ_|˗E-ZhѢEO>-ZhѢE-.G_| Yh","," gp } H*\ȰÇ#JHEE̗>-ZhѢE-ZϢE-ZhѢE% @~,h „ 2l!Ĉ'& <0… +> 4xaB)TP!| *T0a> " <0… 1D诠>$XA ۧPB)TP„*TP,h „ 2d诠 6_Æ kذaÃ6daÆ 26l?~ 6,aÆ kؐ 6lؐPaG0B  ԗ0_CW0|5B} 6lؐ` G?kPp| kذaÆ +| G?kPp`>k/_C6lذ!C +| G?kPp @8`$(0A ? 4xaB 2WP_AO_}ӗ_o@}/_~˧/A/>~˗>}˗o>}_|3/|O|˷O>~ӗo_>}O|+| g_|/|ۧO>6lذ!C +|ӧ/߾|/?O|/_ӗ?~ ̗o|WP|˷O|/_~0|O|˷O>~ӗo_>}O|O|ӗo/_} ̗o}8p@} H*\Ȑ O߿|/_W0>Ǐ`_ /?_GPA}O`|_O_>W0?}` /?ǯ_~ 5lذaCWP_A}߿|/__~O _>ϟ|/_|'0_>O3ϟ?_>/_~_O_>@/@}珟|'0_~7p8`A&T!C̗/_/|?~˗_|̗O`>>~__|/_|3O |_> o@oo|_|7p'p "LpB +`|'0߿|/|ۗ/_|˗`|Ǐ`O߾~'0}_GP|(_O__> /| O>~}߾? 4xaB 2WP_|O`/߿|o_>_?~'0_W0|'0߿|׏>˗߿~/|'0߿|/|/3|/|P_Æ 6dA_/__>߿|+/G0߿|/߿| ̗O`|/3߿|/_ 0߿/߿|/߿O|oO`/}8>$XA .d_A}_>˗/_|O~_| />o_|_ۗ/_|_|3/_>}/_|˗/|_|_˗O@}˧/_|ۗ/_|kaÆ 2𠿂 ˗߿|˗/_~˗}_|/_>}#߾|˗߿| ̷/_|_|g_||(߿/߿~/߿| _| 7p |˗_˗O~O,h „ 2d诠-p?~ 6,| 6$} kذaÆ 5<诠-p?~ 6,| 6$} kذaÆ +| K/_|%ǯ@ǯB} kp|P_Ä5aÆ 2𠿂̧߾˗_B /_|*P` ˗/_>~5Lo_6lذaC O@ D>} *TH0B *LOB'p "LpB + ? 4xaB)TP!| *T0a> " <0… +? 4xaB)TP!A} *T0> " <0… 1D诠>$XA ۧPB)TP„*TP,h „ 2d诠|6L_Æ kذaÃ6daÆ 2𠿂/k0?~ 6,aÆ kؐ 6lؐ 'p?aÄ'П| "g_|aÆ/o| װaÆ kx_A}}װaB |5|aÆ/?}/_P 6lؐ '0|k0!@_'p "gP_?!Bg0?O`>ۇ>"D!B!DH_A}O`>!D@ |!D>~oB",Ϡ~ Ǐ߿|C>"D!B WP| ̗O`>"|>}˧OB3O`|!D!‚ O?'0|C!B"DXBw0|Bǯ`>O|˗߿| g0|4hРA3O`>_?  <0… +`>'0_Æ #O_>/>5d`>aÆ/_/|5aÆ 2𠿂O`6L_|O`|_@}/| 64`> 7߾P 6lؐ?}װaBO߿| ̗O` O_|5lР>o߿| P 6l_à ;O>~_>$X'0߿|/|!B}/|"D>?̇>"D!B WP|_|"Dp?~ /߿|/B3?}Ӈ!B 3O`>}˗/?}CxPB"D!‚"$诠˗_|!D@ _/_?_>_>}C!Bϟ7ԇ!B"D!B@8`A&D|O`~S>/_~ *TXPA/_?˗‚*TPB)T诠> *T8/>}/_˧OA}_|*T>O@}/_~ SPB *T诠> *T8? ԧPaA} *T0> "ԧPB * "ԧPB *T_| H"̗Oa|S`> *T0B O@ DP…"W0@},h „SPB*TPa| *D? 4xaB 2WP~'_Æ kذaA} 6lxP_Æ 5lذaCWP~'_Æ kذaA} 6lxP_Æ 5lذaÆ g_>_ G0@!B}|6lhPA}ӗ| ԗ_C6lذ!C + |O` W0_|kPA}ӗ_Æ 3/_>}/_>P 6lؐ '0|kP?~070A @}>$XA }o>~%4/a„ &L +Ϡ| _ &ǯ`%LHP}߾ &LϠ?~O_?o_B&L0a„ &WP| '0_„ G0߿|˗?˧/߾|/߾KO|/a„ 3o` '0_B&L0a„ KPO`%L0?~ Է>}˗_| g0|%L0aB'p`?/| 7p'p "Lp!C ;O`>kP?~'0?_> O`-g0? װaC ӗ_>}˗߿|5aÆ 2𠿂O`}5l㗯߿|_&g0| װaC ˗|/߿|5aÆ 6d诠O| *Ǐ`>'0߿| ̗O`>>˗O` g0o`k(P_Æ 6@8` 3/@}ӗ/_> 4h?~ '0|/A 3߿|3hРA gp`>~˧/߿|48P,h „ 2d诠˗| *Ǐ`>/߿|'0_> /C}O?6lhPA}_~?} kذaÆ 5<诠˗| *ǯ`?kPA}ϟ g ?}󧯡@} 6lذ!C5lذ?_|˗_> ̷/_|1g_|ׯaÆ/_?/_P 6l?$X 4hРA W0_| '0|gРA ˗|4hРA3/_~/_>Ϡ8`A&T!C5lذ?6lXP_Æ װ!C} 6lؐװaÆkذaA} 6lxP_Æ 5lذaÆ  <0!}*T`> *T0B O@ DP…"W0@~,h „SPB*TPa| *D? 4xaB 2W? 4xaB 6LϡCsp!,h „ . H*\ȰaB~:t8C 8`A&T!C 6lذaÆ 6lذaÆ 6l05lذaÆ 6lذaÆ 6lذaÆ 5lذaÆ 6lذaÆ 6lذaÄװaÆ 6lذaÆ 6lذaÆ &װaÆ 6lذaÆ 6lذaÆ kx_Æ 6lذaÆ 6lذaÆ 6l_Æ 6lذaÆ 6lذaÆ 6LA 6lذaÆ 6lذaÆ 6lذaB 6lذaÆ 6lذaÆ 6l05lذaÆ 6lذaÆ jj <0… :|1ĉ+ZhE1bĈ#F1bxПA/_|/_>}O_|Ig1|)`"#`>1bL菢?O`|70_|˗?}1|̧ƃ"`>0bĈ?_>#o@}Q̇Q`x0_|%̇#F Qg0 G0|o`0W0|拘b>0bĈ? /|? /_~˷/>}_|_|o|7P`>/_|ӧ/>ӧ/߾|˗_|_|ۗ/?}˧_|˷_|/| H*\ȰC 3@70|/_?}˧>}/_~/_G0?+_|˗_|˷_|ӗo_>}W_>}>}˗o}ӧ/߾|˗>}W0?sСC:,Ϡ}/_>~ ̗/ #?}_|/?ׯ>O_|W0?߿|?_>߿>/_/>/߿/?}O@ DPB shПA'0_|/_>~#?}/߿|/?OO|`>_/?/߿|WP?_>/_?_ӗ߿|O?:tСC K/߿| G0@̗/_/|?~'p@ ̗O`_~o|_|/_|'0? /}_o߿_>$XA .dС?%O`>o'P?}70߿߿| >~ӷ߿|>~|'P`> /߿'߿/߿/O`>$XA .d!C_>#o@}_/__>_|+/ O`~`>/|_?//| /|_>#_>=|Ç=, ~ G0|o`>O`/_o߾/߿|_G0|O`ׯ`>˗߿|/߿߿~/߿| H*\ȰC˗߿|/_>'p_|#/_~ /_|/_~/_~W0_| '0߿}/߾|_/~/_~/_| /|˗_>#_|Ç6'0_|˗_|ۗ/_˗_>/_~˗߿}˗߿~#_|70߾|/?_˗/߿|_|_|˗߿|ۗ/_|˗߿|/_|?/8`A&TaC =|`a} =|pÇ>|Â>|X0}{Pᾅ>\Ç>|Ç So_BAC:/_|>|Ç=,Ç%O|Р||˗/_>~>|Ç=|Ç>|Ç>|Â>|Ç>|Ç>|Ç>|Ç>|Ç =,Ç>|Ç>|Ç  +X`|˗o@~O| ` ˗O_'PO`|˗/>W0_+X@W|ӗ,h „ ?1/_>~˷O |˧o`>1\/_>}O>_>˗O߿|/_>}1,!A̧P_~ǐ!C .P`> '0?~/@~p}w_>`>Ca| K/~oC 2\!B c(0|O>~ 䗏| '_>O ?O`>#O`cX`>$X_>?}gРA 4hРA 3/_~ۗO`|Oཱྀ_>_O_}ӧ/_|o}/_~׏>O|/~O߿| G0|O_O_~O߾|˷/O_}#|O`| gРA 4hРA 4(ПA~/߾˷}`>#/}?ӧ/߾|_߿}/_~˷߿|ӧO_}_O?}//߿O@/_/_}˗O|/_~ۗ/@˧/ '0߿| H*\p?O`| ̗?~/_>/|/@}_/_ǯ_~ӧ?}/?}/>~/_|˗߿|/_>~>/?/_>OO`>/_|'0_Æ 64Aϟ|_~70_|˗O߿||/_>_>~>}|_|߿o?/_|˗//_|ϟ|//_/߿|/O|oO`>$XA .dXП~_|/@70@}̗> O/߿/?~ (_?}_~_'P}/| O> '0? /}o߿_ |? 4xaB cП~__#`>#/?}0@'߿|_>8P~_~_߿}߿|/߿O߿| O |_> o@O |߿|O@ DPB_|O`|#o`>'p|o`>_˗_~۷_>߿~/?}'0߿|ܷ|O`>`>_|'0߿|_O`>߿|˗ϟ@ϟ 6lh_à /_>'0߿|#`>'p|o`>_|_~۷_>_/?}_@ϟ| 7_>80_~/|_>__>O>O,h „ 2, |˗/_˗o~ 'p/?/_~_|/_~/_~_|㗏_>~ /|O`>˗O߿|/_>}˧_|˗߾|'0_>/_~`ӗ_|O` 6l8_à ˗߾|˷/_| ׏`>_|O߿|/|˗߿|}˗_|/>~_O_|Ǐ߿߿|˗O߿|/_>}/~/_~˗߿_߿|'P`7p@/_8`A&T@ kذ| 5?6lp` 6~ 6lذaÆ5lذaÆ 6lذaÆ 6lذaÄװaÆ 6lذaÆ 6lذaÆ &װaÆ 6lذaÆ 6lذaÆ kx_Æ jjjjj <0… :|1ĉ+ZhE1bĈ#F1bxF1bĈ#F%#F1bĈ#FÈ#F1bĈDaĈ#F1bĈA1bĈ#F1b菢?1bĈ#F1b<#F1bĈ#FQ#F1bĈ#FaĈ#F1bĈQ?0bĈ#F1bĈ񠿃/_|g0_|˗O߿|/_>}˷O | '0|È#F1b菢/_|/_?̗/>/_|˗O|/_>~ '0_|8`A&TaC!F8C/~`>#| ܷ_>'p|+VXbŊ+G|'>3O`>/_?}O` _>/_Ŋ+VXbŊ'0_> O| G0| /|/| WbŊ+VX?'0_> O| G0| /|/| WbŊ+VXC /@ ߾'P`| ̗/O|˗O߿|O`> <0… :|1ĉ`> ߿}O|/_>~/@}˗//|? 4xaB 6tbD):w0|'0_| O`>#_>#_>XbŊ+VX?/@˗_| G0|'P߿|'0|+VXbŊ+Fw0߿~ _? O`>'_O}O`+VXbŊ `~'P| ܧO | >'0|+VXbŊ+Fw0_|˗߿}߿}˗O߿|˗_|˗| H*\ȰÇ#JH?˗_|o/_|#/_>~?~/_~UXbŊ+V_Ŋ+VXbŊ+VL菢+VXbŊ+VX񟿊˗_Ŋ+VXbŊ+G_EǯbŊ+VXbŊ!XbŊ+VXbŊ QWbŊ+VXbŊ+W ? 4x} &LHp_„ &4/a„ &L0a~ H*oaB8`A ܗ0a„%L0aB&L0a„  <0…П <П &$/a„ ԗ0a„ &L ?} H*oaB'p "/a„ K0a„%L0a„ &$O,h „ W0C cȐ!A} 2d8PC 2d?} 2dC cȐ?} 2$!C cȐ!C !C .W0A~o|O|˧> 70_O_|˗/GPA/_|O_|'0?ǐ>| '0߿|O|;/_>_>}70|˷O`˧O?} 2dC 3`|_/'0߿/߿O@O`>}߿ϟ> ̧߿|O߿|O@ H?}˗?~O`/g| / ̗O|˧/>˗/>4hРA 4h 'p߾|O _>̗O |/ 70|G0 7П>~ '0߿|g A}o} '0߿|/?O /_>'_>'0|3hРA 4HПA+`?}˗O`>_|O@ /@~_>O|O@}>󧏟'0߿| G0'P|G0_>󧏟A~O}/_|o`| GП> 4hРA W0_A}o߿|/߾~?}_>@ G0|O?o`@ G0?'0߿|_3`>_|O`o`>4hРA $ϠAWP/@~˷?~O|/?`>#@ O| /?$HP|GP`>#o_OAG0_}˗o_ 70} GП>$XA .,`˗/?} o|_|G0_}>O`/_|#o_}> '0?ǐ>/|/_>~_W0_||/|O߿|!C c_| ԗ/_>/߿|#`~'p߿}˷ϟ|_|G߾| 7p߿}O |˷,OA`|˗//߿}+`>_|O`|_gРA 4hР +`|'0_|_ G0?}/_>~o`>#~/_>~ '0~ $~ '0|O~˗_|G0_˗> 70? GП> 4hРA4hP #/? ̗/|| O|O`| O`>o`| 70|#H A}˗o?`/_|7߿|_|/|/|O@ DP‚ +O@~ ~O߿|G0߿}ǯ@} '0| GPA~O ~ 70|!A}o>_>/~ܷO /߿}oO |!C c_|/_>O|_O߿|_?`>#ȯ| O>~1$ ~SQ'P|߿ۧ_>~@ >O߿|/| o`O@ DP‚ 3/_>~ o@}/߿|#`o@}O`/}+/_~ 7P|O|1$|ۗ/_?/_>}_}ܗ/_?/?ϟ˗O_#OC * ˗|7P_/_|#?}7P?}o`|'p ˗| '0~/_~ @o_|_|ϟ 7p| //_'0_| 70'p "LpaA1d> ǐ!C1dȐ!C ǐ!C 1D`> ǐ!C2dp> 2dȐ?2dȐB1d> ǐ!C1d|ǐ!C1dȐB +!C1dȐ> 2!C˗/? !C .W0@},h B}&L` &Lh0_„ &L0aB'p "Lp P } H*\X_| 2!C1dȐ@} 2dȐ!1dȐB +!C1dȐ> 2!C 2dϟ> 2d_|˷?}cP|c> '0| ǐaA} 2dȐ!1dȐB +`|/_> #o| G0>O`2,!C 2dϟ> 2d_| /1L`|1dxP|O`>cȰ> 2dȐ?'p "Lp g0|oB'0… ̗O`>o` [p… "o… .,`>@ #߾.L`>~O`>[𠾅 .\p!B.\p@ +`>'B_ #߾O`.o„_>o` [p… "o… ?$ȏAGP`|/> $H> A $8P|'0| G A ? 4xaB aÆ W0|엯!B}/_Æ| '0| װaÆ aÆ C/_>~g0@}kP|װaA}/| 70_Æ5lذaÆkذaÆg0@}!B} 䗯aÂ/| 70_Æ5lذaÆkذaC ˗/_>~g0@}!B} 䗯aÂ/| 70_Æ5lذaÆkذ2  o|/_~8p@}? 4xp>/_~/_|"D(PB"D!BC!B GП> |/_~ $H>#H A G0|O`|˗A $(P,h „ 2'p@ H*\ȰÇ#JHŋaĈ#F1bĈQ?'P ?? 4xaB 6tbD)Vxq?1bĈ#F1JgП|C#F1bĈ#FÈ#F1bĈD?1bĈ#F1b<#F1bĈ#F)?1bĈ#F1b<`|˗/̗/>/_|˗ϟ|˧/_|ӗ/?1bĈ#FQw0_|˗| ˗o|/_~O`>}ӗ/_>}˗F1bĈ#F߾|?}80| |O`>/'p "Lp!ÆB(q"Ń(;}'П>~ '0|} '0|WbŊ+VX"E ̗O}g0|'0_>~ '0|bŊ+VXbŃ(;O`|ȯ>`>O`>#@+VXbŊ+Rw0@ ߾'P`| ̗/o_}O`|/> H*\ȰÇ#JH?0@o? ̗/>/_|˷ϟ| ̗/? 4xaB 6tbD)Rw0|'0_| O`> '0|엯bŊ+VXbŃ(;O`|/_>~ '0|O`>WbŊ+VX"E/|`>#o ~ '0|bŊ+VXbŃ(;_}ǯ@} '0|O`>#ȯ|+VXbŊ+Rw0_|˗߿}'p/A}O`>?}O@ DPB >QD!|˗/_~ W0}˗O߿|O`>˗O@}XbŊ+VX+VXbŊ+VB~%WbŊ+VXb+W_|XbŊ+VXbŁ˗/*˗/_>~+VXbŊ+V_Ŋ+VXbŊ+VL!? @8`A&TaC!F8bE'+P <0Ḃ!B"̗!B"D/_>"DHp,h B8P>߿(> 4xa>",!B"D/B"DP_|"D>$XA +OB)T ? *T ? *T?~ *THPB O@?'p ԇ!BC!B!B"B"$!B",诠>"!B !B!B"D?"DHPB"0 ?  "D ˗O߿|߿|/_>}̗/|/| ̗O?}O|O_|˗//_|˗o`|˗/?/_> 70_?O|O_|˗O߿|/_}O|O_|˗O_|˗/>!D!B`>? 7p |˷O`˧o`'P/_|/_}O ̧o`>/_>˗O߿|/_}70_|˗/_> 70_?O|O_|˗O߿|/_}/'П|˗/|/_}? 4xaB +O}O?}'_ #} _>/?70_>߿|70| /?# ?o_| |˗O |/ 70|_|O?O`>O@} *T|g_A}o_| ߿|/_A}_>G0_|/A~'_?0߿/߿|/߿O} 'П>~/_>߿|'0| G ?}>#O`> O@ D 7_>~ȯ/߿|'0߿|`|˗_>o_O߿|o`>O`>;߿|o߿|'0|/?~O?#O`>˷?~O`>~ '0|)OB !/>WP/@~˷?~+`>o߿|_|;|~'|'_>O`  ߾O`>_@ 7_>_}_?}O`>'0O@ D /_|'p߿}_'P|˗/_>̗ˇ/߿}/> ̗//|_|}O߿|_||߾| 70_|˗OA|}O`|˗/>)TP?K诠˗/?} o|_| G0|˗߿|O߿|O@ o?~ϟ}o`|˗//_>~ ?˷_>/_}>O`/_|/_}>˷ϟ|_|$HP,h „W0|O`|_|G0| _>/_>o`/_|70| /|w?_>/|_| O`?~_G_>#O>)TP? W0|O`|_|G0| _>/_>o`/_|70| /|w ?/_/_|_/_|/߿߿߿>˗/߿|߿|O@,X` ,8_A}/_>O|_o߿|G0_>ȯ_ o_?`>o|?~'_ /|_?O`?~ۧ_>~ǯ| G0@} W` ,`Wp>/?~o+`70߿|/_>|_?___ǯ|_?>}'P~ 70|_ǯ@}O`> A8`A&D诠>/| ԗ?}˗/>˗߿|/_|70_ 70?7P?}o`|'p|/_>}O|߾?}| 70_|@O߿|/_~ ̗/> *P ˗|7P_/_|#/_>˗߿|/|3|o@}˗߿/_|o|/_|O ԗ/_|7P߿|_}ӗ/_?˗O߿|߿|o@}O`>/}? 4xaB SPaA} *<ϟB *,ϟB *<菟B ԧPB*WPB SPA~*TPaA~*TPA*T> *T8_A} *,OBSPBSPBSP@Ϡ> *P*TXPB PB PB PB˗A} *Tp*TXPB PB PB '_|˗߿|˧o`ӗo|0O@ DH_„ԗ0aB&L? &L0?~&L0a /?/_|'0?}7P_„ &D诠 "ԗ0a„K0a„ 0a„ }O>~ /_>70_>+/a„ KP&LP_„ /a„ &_„ &L8 >'_|/| &L_A} &D/a„ 0a„ ?$XA  _˷?~__ [pA +o…-\ ? .\ .\( #/߾~˷?~߾+o… +o…-\ ? .\ .\( #/_}o?~˗_ 0.\(P… p… [p…`>_|_|_ [p„ [p@'p "_„ &L &Lp?~ /|/_/|70_A} &LH_„ԗ0aB&L? &L0?~&L0a7߿|_|/߿|/|%L0aB K0!B} &L &L? &L0@'P?~>}O߿| '_ K0aB&诠 "ԗ0a„K0a„ 0a„ ߾}O߿O߿|/߿||@8`A&D诠> ԧPƒ)TP‚)TPƒ ܗ/_?/?ϟ˗O_+OB )T诠> ԧPƒ)TP‚)TPƒ ܗ/_?/?ϟ˗O_+OB WPB SPA~*TPaA~*TPA*T> *P*TXPB PB PB PB)TP SPaA} *<ϟB R O@ DP@.\P… [_A} .o…[p…-\pB-\p .L诠  ԷpB-\pB~.\p@.\P… [_A} .o…[p…-\pB-\p .L`>$X"D}"DA}"D!BC!B'p "$/aB O@ <!B ۇ!BԷ!B"Do>"DHP,h „П $XA%L(_A} H!Da}"D!ƒ!D!Bۇ!B O@ D*TXPB PB PB PB)TP? ԧP‚*Tx? *TX? *Tx? *$OB WP|O_|&G0S ?OB Gp?*T?~ *THPB S_A}˷?}SP|OBO> *4|SPB)TP!A} *Tp _>SP|_> ߿׏,h „#O߿~*T?~ *THPB S_A} /)L`|/B#O߿~*T ?OB PB)TP 3O` 0>/?*$_A})TPA~ OB PB)TP? g0|OaB}_)THSPƒo߿| *T? *$OB WP|o_}&G`~_>$X@~ ,_~/|_~w`A}_><8?'0_„oK ?%L0a'_ &L8 &D/a„ "WP|/_~ G0?/aB̗0a„ g0_„ &,_„ "ԗ0a„%L(_A} |%LO|O` g0_„ &A? 4xa)TP!A} *Tp*TXPB PB PB PB)TP? ԧP‚*Tx? *TX? *Tx? *$OB W0@},h|"DX0_>"D`|"D!B}!D!‚ H KP8`AC!‚!D!BC!B˗!BO@ D*TXPB PB PB PB)TP? ԧP‚*Tx? *TX? *Tx? *$OB WP|O_|&G0O̷O`> *4|SPB)TP!A} *TOB̗/߾OaB}|*|SPBO> *D菟B ԧPB +`>> ̗O |? 4(? w`|)T8?OB G0?})TP!B*T> *P ˗O?0>/~*|˧PB+/_? *L菟B ԧPB +`>˧0>/?~*$|˧PB#?~*T?~ *THPB S_A} G_> O~P!A߿? 4xa̧PB SPB*TP@'P?~SP|? G0@~*T ? OB PB)TP? g0@}OaB}ۧ_>~*,|SPB̧PB SPB*TP@'p0>/|)T8?SPB70B "OB SPB +`>ӗ/_? ϟ0,hP ? w`"D}"D!B~!D!B8`A&D`?$X8`A&TaC!F8Q!,h B&`?$X8`A&TaC!F8Q!,h „'p "Lp!ÆB(q"Ŋ/GF1bĈ#F1#F1bĈ#F(È#F1bĈ#ƃ0bĈ#F1b(E1bĈ#F1bxF1bĈ#F%#F1bĈ#FÈ#F1bĈDaĈ#F1bĈA/_| `| ̗/_|˗/?˗O?~ӗ/_>}1bĈ#FQw0_|˗| ˗o|/_~˗߿|߿˗O?~ӗ/_>} H*\ȰÇ#JHۗO`}g0|_>~O`}7>XbŊ+VX?o_> | G0?_>/@~bŊ+VXbE/@`>#O`|o| g0_Ŋ+VXbŊQw0|'_?} '0|#/@o`>*VXbŊ+Vt`> ߿}O|/_>~/ ߿/O@ DPB >QDQw0@ ߾'P`| ̗/o? ߿ ?'p "Lp!ÆB(q"E/@˗_| G0|/?70@UXbŊ+VE ̗O|ǯ`>#o`> ?o?*VXbŊ+Vt`~'P| O>~O`'P|+VXbŊ+G|70?~+O>O} /| ܷO>*VXbŊ+Vt`|˗/_O/_|(_|˗/_/_|˗| H*\ȰÇ#JH?˗_|o/_|#/_>~˗?~/_>}O`+VXbŊXbŊ+VXbŊ QWbŊ+VXbŊ+W_|XbŊ+VXbŁ(/_|UXbŊ+VX"DO@ ,/B"D|"D!BC!ƒ!D!B8? $}8`A ˇ!B"Dx0B"D|"D`|"D>$X4hР4hРA 4h> 4hРA ϠA ϟA 4h>4hP4hР4hРA 4h> 4hРA ϠA ϟA 4h> W? 48? 4hРA gРA 4hР4hРA3hРA g? W? 48? 4hРA gРA 4hР4hРA3hРA gРA@ / 70_ '0_|7_|'0|70|O@ DHPA}O>/_|&L0@ӗ/?}'0_˧_>˗ϟA~˗|G0_| /?}ӗ& ?˧_} _>} ̗/> / 70_ '0_|&L>˗ϟ@}_|%L0aB /_>˧O`~˗O߿|ӗ/? /`|/_>˧/!A}  '>'0@˗O | 菟@~/|/_>  <>?/_„ &,|'0@ 70| ?_>̗ } ̗Р& ?o_| ߿|'0_A'p|O O` &<`O`˗0a„ 70 7П>~ '0_>3ϟ@~O`}#o@}%4/aB 'P/@~˷?~+菟|o߿|_}_>$XA'P?} /_„ &,|o ~O`|3ϟ|o|3/A}%L(_A~7_>~ȯ/|`|'_?}_>&L>o`>K0a„@ O| ̗@`|#/|%4/aB '0@}_>߾ ̗/? G0_>/? 4x!A} 엯|/_>~ &LP?~˷ϟ|O`/> |߿8p8p(?˗/?} o|O`| O`_>߾ ̗/?$XA'_~_|%L0aB /> o?߾|O`> ߿/8p8p@ O`_>> 7P?~ /? ̗/|O`>$XA70|%L0a‚O`'0| ?̗O| ̗`KhPA  W?|/?}?~̗?~˗_'0_„ g0|̗0a„ g_>˗| 7_> G0_>'0_>/A}  W? /@~'P_'0_A'p|ǯ@}/| &LxPo|O@ D?~O`> '0|'0A~'p|'0_> '0‚S_A~'_|ǯ@}/|O} ~O߿|)TP@} G0| *T '0@~o`> ?_/}OaA} +}ӗo`ϟ˗O@˗߿|7P_'0_|*TP|'_˧? 4xaBԗ/_?O`O_| 7_|˗/_/_>}O`>P ܗ/?}o|O`| o |70߿}O߿|˧OB 70|˧OB GP_|o>˗?}3@~/_|˗_| ܗ/_?ԧP)Tp?~ *TP*TPBSPaB~*TР*@'p !B"D>"D!ƒ!DA~"DA}W?"B"DA}"D!BC!ƒ!D|PAW?"B"DA}"D!BC!ƒ!D|PB!B!B"DxPB"DA"D ?O |˧o` /_||? +B!B"B? 4xaB ǐ!Á /?/70߿|˷O`˧o>!Ä1dȐ!Å2dȐB2d8? >'_ _ 70_A}1D ? &Ǐ!C .ǐ!C ǐ!Á O /_>˗O | ̗O` c_A~2LC 2\!C .Ǐ!C`>_/߿|/| W? 48? 4hРA gРA 4hР4hРA`>_/߿|/|4hP4hР4hРA 4h> 4hРA ϠA ϟ|̗߾o?~˗_>4hP4hР4hРA 4h> 4hРA ϠA ϟ|̗߾o?~˗_O`>O@ +ϟA 菟A 4hРA 3hРA 4h`A 4hР 7߿|_|__ 3ϟA+ϟA 菟A 4hРA 3hРA 4h`A 4hР 7߿|_|__ 3hР@3hРA3hРA 4h`A} 4hРA ,菟A 48? >O߿|ۧ_|@oo@~8`A !B"DxPB"DA"D ??}oO߿| '_ C!D?"D!BC!B"<Bo| //߿|_|o`C!D?"D!BC!B"<Bo| //߿|_|o`"$ ?"D?"D!ƒ'p "LpaA2d8? *wC ǐaB2dȐB} 2dp?~ 2C c_A~2LC 2\!C .Ǐ!CcȐB}1D ? &Ǐ!C .ǐ!C ǐ!Á1dP>!Ä1dȐ!Å2dȐB2d8? *wC ǐaB2dȐB} 2dp?~ 2C c_}8`A Ӈ!B"Dx0B"D}"D}"DР> A #o>$X!D!Ḃ!B"Dxp>" ?}o|/_~˗߿| /˧ϠA+ϟ@}o`>3h? 4hРA gРA W0_|ӗ/? W0_|O`|7_|'P|/_>}ϠA/_>O`~?}O`>|O@ ǯ> O`˗A~/@~O߿~#o`>;x_|󧏟|??}+؏}'0|`A~~/߿|/߿>~O@ ǯ`?~󧏟| ߾;x ;xР'0߿|;x?~ ̷?~_>ϟ@W0?_O` /|'0gP߿~O``A~ϟ@W0?_O` /|'_>8p8P߿~O`oO@ D> `|/> W0_|_>/|뗯|/_>~OaB}˷߿|o߿}˗?/_|#O`> gP߿}_O@~*TР*W߾|)D_|o?~˗߿|_~_|ۗo? />/߿}/_~˷߿|`>*$ 8P߿}_oO@ D> `>˧?~ O~#O`>#`>)La|/߿|`| /|)TH?/_>~ '0| PBP'P~"ǯ`/| G0|g_> !_/_>~_>#O`> g_}_O@~*TР> `>'0B70߿}_?}_߿ǯ߿8`A '0߿|O'0߿|O>~4hР?~_?O`4ϟA 4h>4hP'P?~3hР?~ o#O ?}`>'0A+ȯ| 䗏_?#ȯ| > gРA?~o`>g ? 4hРA 4(_A~ ?}3hР?~˧/?`|˗| /_>}˧| 8p /_~ ̷o ԗ/_/_>~ 8p7p|_|/_>,h „P'p?~˧/?`|˗|˧_|ӗ/_? ԗ/_7P߿|_>˗| `> /_| ̗/?SPB*W? OB *TOB *T?~ *LϟB wПB P)TPB SPB OB SPB*W? OB *TOB *T@'p "_„ & +ȯ@,h`~"D!BC!B""D!ƒ8`A&TaC!F<? ,? 4xaB 6tbD)VxѠ?0bĈ#F1bĈ?1bĈ#F1JGF1bĈ#F1#F1bĈ#F(È#F1bĈ#ƃ0bĈ#F1b(E1bĈ#F1bxF1bĈ#F%#F1bĈ#FÈ#F1bĈDaĈ#F1bĈA1bĈ#F1b菢?1bĈ#F1b<#F1bĈ#FQ#F1bĈ#FaĈ#F1bĈQ"'p 'p "Lp!ÆB(q"Ŋ/N#F1bĈ#F(È#F1bĈ#ƃ0bĈ#F1b(E1bĈ#F1bxF1bĈ#F%#F1bĈ#FÈ#F1bĈDaĈ#F1bĈ? H*\ȰÇ#JHŋ8`A&TaC!F8bE1fԸcGA9dI'Q7TeK/aƔ9fM7qԹgO?:hQG&UiSOF:jUW;;PK>(dbQSQPKfUIOEBPS/img/repma001.gifv:GIF87aP?**?***UU?UUU????**?*******?*******U*U?*U*U*U**?*****?*****?*****?***UU?UUUU*U*?U*U*U*UUUU?UUUUUUUU?UUUUU?UUUUU?UUUUU?UUU?**?***UU?UUU?????**?***UU?UUU?????**?***UU?UUU?ժժ?ժժժ???**?***UU?UUU?????***UUU,P H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜI͛8sɳϟ8`A&D <0… :|1ĉ+Z1ƍ;zR?$XA O@ DPB >QD-^ĘQF=~_ 2dȐ!C 2dȐ!CL/_H 2dȐ!C 2dȐ!C&/D}B 2dȐ!C 2dȐ!R>~!C 2dȐ!C 2dȐ )Q!C 2dȐ!C 2dȄ򅔨_Ȑ!C 2dȐ!C 2dBBJ/dȐ!C 2dȐ!C 2|!%2dȐ!C 2dȐ!C _> ߿|7P O@ DPB >QD-^ĘQF=~_|70@S_Ȑ!C 2dȐ!C 2dBد|70|)/dȐ!C 2dȐ!C 2| `>O`̧P!C 2dȐ!C 2dȄ)O_~_?}(߿O@'p "Lp!ÆB(q"Ŋ/b̨q#ǎ?L/B70A /߿߿| HP?$XA .dC%NXE5nG CO~/@}O| 2dȐ!C 2dȐ!CL/_B~G0}/|)/dȐ!C 2dȐ!C 2|!%2dȐ!C 2dȐ!C _ 2dȐ!C 2dȐ!CL/_H 2dȐ!C 2dȐ!C&/D}B 2dȐ!C 2dȐ!R>~!C 2dȐ!C 2dȐ )Q!C 2dȐ!C 2dȄ? 4xaB'p "Lp!ÆB(q"Ŋ/b̨q#ǎ?L/@,h „O@ DPB >QD-^ĘQF=~|,h „'p "Lp!ÆB(q"Ŋ/b̨q#ǎ? _|D)RH"E)RH"E*/>"E)RH"E)RH ˧OH"E)RH"E)RB)RH"E)RH"E_|D)RH"E)RH"E*/>"E)RH"E)RH ˧OH"E)RH"E)RB)RH"E)RH"E_|D)RH"E)RH"E*/>"E)RH"E)RH ˗O,h „ 2l!Ĉ'Rh"ƌ7r#Ȑ˧OH"E)RH"E)RA}˗/>})RH"E)RH"E`>O@ DPB >QD-^ĘQF=~"|  <0… :|1ĉ+Z1ƍ;z2} ? 4xaB 6tbD)VxcF9vdH ? 4xaB 6tbD)VxcF9vdH(? 4xaB 6tbD)VxcF9vq||$H A $H A`>O@ DPB <0… :|1ĉ+Z1ƍ;z|,h „ ̗,h „ 2l!Ĉ'Rh"ƌ7rc||'p "Lp~8`A&TaC!F8bE1fԸcG˗/>'P ?$XA .4? 4xaB 6tbD)VxcF9v1>7P>$XA .dC%NXE5nG!#O H*\ȰÇ# <0… :|1ĉ+Z1ƍ'OO@ DPB >0?$XA .dC%NXE5n8|(,h „ 2l!ćE1bĈ#F1bĈ#F1bĈ#F0  <0… :|a>#F1bĈ#F1bĈ#F1bĈO@8`A&TaC!B/bĈ#F1bĈ#F1bĈ#F1@} (P,h „ 2l!ĈE1bĈ#F1bĈ#F1bĈ#F`>'p "Lp!ÆB/?%J(QD%J(QD%J(Q"D~#/_>~%B/_>~%J(_>%J(QD%J(QD%J(QDO>~/_cO|%>OD%J(QD%J(QD%J_ 'p_|ۗ@}/_>|˗?G0~ϟ|ӗO?~o_~#/_~'Q|$J(QD%J(QD%J$DI$D@ܷ}O`>~O ?~'0 / O?׏_>| _~ O`>8`A&4,h „ 2l!Ĉ'Rh"ƌ7r/_| '0| /? '0A`?~>#_>~ '0||رcǎ;vرcǎW0} '0| `>80O`} o|'߾|0@/߿O?~ <0|ӗ? 4xaB 6tbD)VxcF9. }o?O`>'} G070~_>~ '0?}/| |u_}رcǎ;vرcǎg_|ӗ/_?O`ϟ| o |/_|˗/߾/_~/_>~ '0@~_>~+w|'p "Lp!ÆB(q"Ŋ/b̨q#Džu_;W|O@ DPB >QD-^ĘQF Qa|:v} HA8`A&TaC!F8bE1fԸ|9rQb>8`A'p "Lp!ÆB(q"Ŋ/b̨qE 7_>b O`>O`>Gp|,hP>$XA .dC%NXE5n/_|ˇ0|7p_|9WП>O@ <0… :|1ĉ+Z1ƍ+O@}˗?}/?'_|Ǐ_| /?GP?/_>?~د?~/_>-w|'p O@ DPB >QD-^ĘQƋǯ?~O`>'|O|7P o߾_}'?~O_}_ b> ˗|8rȑ#G9rȑ#DŽo?}O` '0|_> O +߾~'?/~/߿|ȏ|P_>}9rȑ#G9rȑcB ϟ짏|0@/߿~_߿_> / _>~߿_7P?$XA P? <0… :|1ĉ+Z1ƍ+?}?@~_>_>'?}W}'㧯~/߿|NJiԗOG9rȑ#G9r_'0?~_>~O`>˗O>~˷/_|ӗ/ӧ`~ӗ/? |_>~Ǐ|4˧#G9rȑ#G9rL/G9rP> HO@ DPB >QD-^ĘQƋqȑ#GiԗOG9rȑ#G9r_>9r(1?ȑ#G9rȑ#GǑ#G%Q_>}9rȑ#G9rȑcB8rȑ|4˧#G9rȑ#G9rL/G9rϟF}qȑ#G9rȑ#G ȑ#GӨ/>9rȑ#G9r1| H*\ȰÇ#? 4XP_>} H*\ȰÇ#JHŋ3j܈ ? 4xaB ˗/C 2dh? 4hP_>} H*\ȰÇ#JHŋ3jȱLJGǏ?~Ǐ?>/?2ԗOǏ?~Ǐ?~|}|>~Ǐ?~Ǐ˧Ǐ Ǐ?~Ǐ?~|/_>}?~d/_?~Ǐ?~C#C}}Ǐ?~Ǐ˗OǏ˗Ǐ?~Ǐ?~_|>~P_|?~Ǐ?~LJG˗? 4xaB 6tbD)VxcF9v_|>~P_|?~Ǐ?~LJGǏ?~Ǐ?2ԧO|ӧǏ˗Ǐ?~Ǐ?~Ȑ|O@ DPB ˗? 4xaB 6tbD)VxcF9v`>O@ DPB ˗? 4xaB 6tbD)VxcF9vؐ|O@ DPB ˗? 4xaB 6tbD)VxcF9v`>'p "Lp!Æ  <0… :|1ĉ+Z1ƍ;zt`>8`A&TaÆsСC:tСC:tСC:tСC(? 4xaB ˗/? 2dȐ!CO@ DPB >QD-^ĘQF8P>$XA .4/_| 2dȐ!C  <0… :|1ĉ+Z1ƍ˗~Ǒ#|qȱ|8rȑ#G9rȑ#ǂO߾Ǒ#D8rhQ_|9rȑ#G9rȑ#}/_>Ǒ#D9r/_>9rȑ#G9rȑ |A$XA .dC%"ԗ/ĉ'N8qĉ'N8qĉ'BO}'p "Lp!ÆBH,h|8`A&TaC!F8bE1fԸQ"|o@} H*\ȰÇ ,/_>$XA .dC%NXE5n/_|O@~ H*\ȰÇ1|"F1bĈ#F1bĈ#F1bĈ˗_|1bĈ#F|_Ą1bĈ#F1bĈ#F1bĈ#0'p "Lp!ÆB_Ą1bĈ#F1bĈ#F1bĈ#O8`A&TaC!F/bB}E1bĈ#F1bĈ#F1bĈO@~ H*\ȰÇ#O"B}I(QD%J(QD%J(QD׏|Id@~$ ̇0߿| o`}I0?'QD%J(QD%J(QD% ?}oa}CO|7p_?!'|$J(QD%J(QD%J(QĂo ?/?O_>}`>}/_~_|Ǐ@~?~'_|/A߿˗?}?$X!DP|8`A&TaC!F8bE1fԸ|Ǐ_>'0|ȯ`>~?} _>/?_O 㗏 ?~_>/߾8"O|8rȑ#G9rȑ#DŽw0߿|#/|ȯ`|O ?#/| O`>~70_|/?o_