PK aUIoa,mimetypeapplication/epub+zipPKaUI OEBPS/toc.htmT Table of Contents

Contents

Preface

1 Introduction to Oracle Database Extensions for .NET

2 Installation and Configuration

3 Development and Deployment with Visual Studio .NET

4 Development and Deployment of a .NET Stored Function Demo

A Data Type Conversion

B Troubleshooting Common Errors

Glossary

Index

PKWPKaUIOEBPS/img/summary.gif/GIF89a({!!!!!)))11119999BBJJJJJRRRZZZcccks!)9)1119BJJRk9JJcRk{Zs!Z{!k!)11)s){)1k1999BJJBZcBkRckR{RRZcs{ccccckskkkkskcs{{{{΄քތΌ֌֔ޜΜޜ!ޥ1֭έ!))B)޵ƽƽ޽)Ƶƭ99J)νε)9B!J!R1ƭֵ1BJ)R)Ɣ9BBJJJ!J)RR)Z)Z9Z9cBcJkJsRέBRZ)sR{Z{cks凜lƄֵ{ƵΌs΄֜ޜޥ!,( C <(1(L0Aŋ3jȱǏ CIɓ(S\ɲ˗0cn$Ab ? =?PasUt#LJJիXjʵׯ`ÊKٳhӪ]˶[N„LX鏸G LÈ+^̸ǐ#KL˘3k̹gÀMztSaaX۸sͻ Nȓ+_μyqУKNسkνw,jVBS6" #6` سߟ߼(h& 6F(VhfalIC 8B T"3A"z2h8<<CYLϑH&?WlpL@@xߌXV$\v`)dihlp)t )bXM6( 2#1*,cE0@T)‹X坘f馜v駠*ꨤjꩨꪬ?x7hM6`5}*s 12M ,\UᖱVkfv8k665( 2$l>ތYdg,lГ?tsn.2ZDVCQį%l(,(6,ł1\O3@x ^r.dHѿi*]h͵?0:^-d!ɐ#,vtm//6"n ɳ@o:5HU~谏gO`j# UW(@u YOOtmkgᵦO[,fA Z0~ ^!Cv~v 3ϿgOC (P@ H 0 /g|Wu)~z7vׁ ҡ@u({0,('(Z'f!:<؃>sԖZ 7DD3|8"38?R8T8>wu΂ A" PxȘʸ،8Xxؘڸ؍8Ո;%X긎؎8Xx؏( ِ9yÈّ "9x$*,ْ.+i 4Y6y86)(>@B9ȓHHJLFMR9TYVZ\ّp`0p D]r9t Ґ |ɗ P  oY3Y٘)G!b5q_}ɗ  ` rc4Г+p  cyb_y i 0ypGYМɚl0ypgy PKP ÙОwǙYP9Y_aPeyy0e b Ii0p `0ʙJH$&)*IG2 'ڟ6z-)E`FIJH;-ziz$54bZ$z,Z+:jn#_@SF @@0Fp L0jS P`Y!-ZfʢZ'p:srjBD{MpJ"Hp^ȦکdʩڢڦZe0ʪ;|I Hb:Jp J /ڬƊ˺ڬ*Ha@ڪ J*YQ**#J:"ʯ";_DP[J Z {dʱ( $[Fێ&+kY @꫆#ڮzd[&;FPy|JH"Q0pVе9+:[+g{غn PF [૾뮃+c[sZI۶oˣۺk<wZۻyj{L񰺯{<6; Kȋ<@/ [蛾ZrEڻ{Xk ˹;+. 6L <p$ ۹",7g ܲ;L 0Hr[滻#<|$ |r 3,=\U|:& -z| G,K ln^~ >^n= ">$^&~(*,.02>4^5:<>@B>D7^HJLNPGT^V~XZG1\`b>d^^hjl&nr>t^Tvz|(~>^舞芾N~>~阞P}>^h.ꦞꪾQF^~4긾y0L.(Nn.ŮZG .;N-n*.H>K>".Ԏ>^~~F>>?J!4noA^/n>$+OB>^^>>AA9OBL NOHOUW_ZW_L[=V_#,7jmxٓ VP2V5*S2;3ъ;\mL 3wuOv`&t^IGk.D R^ ڽmYSMԌ4z9El5K+=NJ7ԒjUਁd)4ۂ :m#^ۮ7%7zANu˦/Vg?.uZbV 7.I|Pλ[Av0qÛ5h-Gm:r\D~g4qy,gzG(x?|~|G?3W}߇H㧿~w~h8@.D`X.ЁA VЂ55A"'a;AЄ$ UA/]C֐3au>Ї?^M= ш svD&6LB,amCNb?-*سE26,ҙ6wIэN2:x$H=c C= שEҒ6L%5iLnғ'EDe*UJVҕe,e9KZҖe.uK^җf09]CDC2Lf6әτf49MjVӚf6Mnvӛg89NrӜ܄1=QSg<9s󘓼 N~rGM1Pg; (<$*Q8:i}.nk')-TNdE  (D,Q*g5ubT!Z 9Ȫ؂GM#N?:'wKt~ZfG94>4&L)*S" iGr4mCUZM82U1LU)[R!Yi':bQN|զAz֑K*Y\pE-*hvL%XV CYeWzNjakA.&}Oΰff,\O1Mšm+n[?+]9RwM1"`q[V'bVh 2 UPХ,4k<*\d~` oANj򞃰z9^n!n*V b\hv-k3"1r:8G VhJܰpW3ǻMr}bvnj᯻0V_6v 5.@rGkb]-a̻Պ̹*pK)>? γF!,}M_D^4(T8(EN/q*g$=CiG</O7~߻k@z>vXct=C_A^+G>{t>ɇ?Ǿ'S_v& ɿ}w6Aϧc?|3,;d; L 4=#@ @$ @F6B#< Ws;KJ#2bA6\+!"")<[ɼ$\=#51" BE@(di³71/;LBB#:E3DKEEWDWa2.H 3ܱ*/l7C#E]Tpb ał{э235I)CDC:3 KRʒڋS3!N,m 6yydD+|NìCcKO ~B80TI5|BL3Rb "e9]4r)n٣L$MTGdL:1H *D_GPGEbPt׃PMҳpjL igqTJ{HLEMMn`5T:G-H ̺ R%R ]*'QP iRxVDı+GSZÝә<#A۹HaDF#rk|DSCsVR|,mu+ԐU>15 HC!ZYkJ0GfP0Ue>ZTIm[):Jù0G,m5O4XlQ$ZAE}XUDGk`j\5Q H%8B=ĝ=X5yVe]ޚ=5oC䕶e^r^wOݤ5}ǵg+ [;ME-Fg _M_}8=M_5E`\mz`2` ಼"`La73n_FFR_n5aa`KNդ#$%fbuP(F!~P6 ěb.$_1#a3)"(]e2fcdMz㙚 ;nsx-dM/Bl+bNdEZ2fs`d7N5556LƣK^aQd + ;e dU΢Y2!{e eYv"Z:t e]&#^N3_b`daf4 f:_edekfg>fh`ifxnƶgcm΢pCcr[*eqwzs{;g07=z{|}~&6FVf֪kr艦芶&6铦GVkv隃>o雖iA韞'.F& &j1j,AUꥆVҨjj+isj:j.jjFffˁڌs*͉c8cnZBA롾dדdkvk$>}/?Zct>*m3ĖP61|Gl>aTfԶkو%]֜mFN-o)>n*i~nkN@)^mb2oVn&o9^oQ΢o8R$#.ߡ7pF#gprp WP _'2/Wbtqzנq  _Ǥ 96r8#$Wr>>()*rXv o)-.nhr=qH&XYsX`Hs%'3'%isMLy;G9$>)t>EQFwtt\o?O0J?D2t&KgsRWtiWtQUkS'n>x<ư9tڴ=NWXhto jTO0%uvrf'W'zT+vvnJ+^aIEkki?%źv\gvZNɣuTiKƊW.>8.WXvvWsu-vu| vB\Iulvo/{P>|+hР? 2l!Ĉ? 8 x !`M J8!Zx!j!z!!8"%x")"-h0#5x#"9#=#A 9$Ey$I*$M:$Q";PKb//PKaUI OEBPS/img/usingDeploywizard1.gif%hGIF89a({!!!!)))1111999BBBJJJJRRZZZZcccks!)9)1119BBBJRRk9JJc{RkZsc!Z{!k!)11)s){)1k1199BJJBZcBkRckR{RRRcs{cccccckskskcs{{{{΄ބΌ֔֜Μ眽)ޥ!19֭έ筽έ޵)1B)J1޵スƽƽ޽)Ƶ99B!J)ν)19BB!J)J)Ɣέ9BJJ!J)RR)Z)Z1Z9ZBcBcJkBkRsZBJRZ)sR{Zks{凜lƄƔֵ{ƵΔ޵s΄֌֔֜ޥ!,( ȡC  vb&JHŋ3jȱǏ CIɓ(S\ɲ%!@C H$C%q矀*蠄j衈&袌6裐F*餔Vj饃vO5٘sM5P3ͨHirH3G&@H`x:gka뮼+a?Ә6ր*ҘJ&1я 橧z|ik覫 ԏ4\˜:iV4j0)ѓk' Sړ(cMS/ƜO:P/$0A 9ԅ.=2F #?ҲO dsP9H3<h?wl#C@ Wmռ>.2Ԁ#i( ol 3C E =Ί-l&BsIK?n# CN l9=aR-yޠcm/5DŽZf/q#vʕ c3}yݞ'>K#я$N}~P ?<Ԟ3ya槮z?ǐj W{i7ΡkMj`"Q3J,pIB0~& 5PG` N!B Á$LZЄ,# tQ3.hGLtC"ED0Oa{$ rdS4H2hL6pH:QCG1%)_+U= d␼y' zG bv[-7Xp"ykd?`0Rm+~”BZ&G(4ҔP@†n": !x-ltf?&YV !]-oُ\’f9JFmqv̧>~ hb(#Z:؂ _$rr$^yG1`F0 `3oGA:=sG*M%LO~4ȀθR=iz4lRd$7R-PG{lĪ|Lk:R"yaI:o6UKhMZ׺ e@Ʃdž:*@  h-8£@ oy3Oy H6Ou,Y-l?,RХYω6, J kƃG~dcumdw ^Vmqe{ЦGepKZͮvz xK^Kp=\OE?A]! D SQ9qG(`֧]l~@ ,x4=H. vF= k8Z06r /`.;Ev普yL"HNLcRQh/}W7918(0sFI C.2q`Y/t.l[rz#,p( st܏<-3?@z$9²9oƴGUoҵ Mh{32 i[MbNf;ЎK@j zlhXGX|w yN1eW 3S #aH-QPATD?7jҗ^?=Jg<O [{csRu LY2ߴkFGιNHOҗ>j(1?|y{F/Tn最f90- '`7nw?tsN{ 樁pO3y'6)ym^9p "7p{67ͩ?þ3sroyЕ O3ON~@әAap/r}x1lszcM;=fOv?R [MP ]ޗ_A~ d o؁ ( 2 hn Hv&~({UyDXFxHJ`rR8z@Vhy{ Zpߧn:K8dwhjl؆(@m$S3$ԅ䆃bGnan8X%d1(!;1  a(8Xx؊88x؋8xȨHʘ5QԸxQՈ؍8XxH긎؎8Xx؏h_V: ِ9Yyّ "9$Y&yyeI.0294Y6y8:<ٓ>@B9DY7 *), FٔNPR9TYVyXɓHɔY`b9dYfy@Jٕhٖnpr9oKIxz|ٗzil闂9Yy6 -٘Y镑Yy59ٙ0 p 0 К0 sșYyɓ i P 0Iy9SD/9 Y @ 9 %i )򙗊@ pCS.9I P 9@P95HyI환^}ِ;T:"muPPy 0$  0>@o*١?r2zLJO#N#zh_gp%zug ` 0:3*0̐ 0@H# ) L):}j$S꧌ꨐJ:j ZXS)E`FIKH;+h:*0mzj.ɤzJ:Y:ۚJj 㚮TZjڪzM[SF ?;,N p2 ml@zEʧ zZ [*+)J($:6B)B:1jp  >@Bꭠڵ`kjfۨ.2;ڮa{ڶ)"˳vg[BDM鷴nP ˪ʱ{:h[;tˮ' Z;N*{\zz]ڷ  Qˬk+ꤧ#;Zk[˲[겢˲5ۺ{[4{;CK+@@2 `0U۬ۡZ^[˩i;,zVjc;\1|뾸_P PIzZ; ;>盷jE"ܾ}P>([[KUi@` ;KI_`[n_UXP]~.ehk Ȍl<@68ǀɜlcLFl#ȍ|ʰTLP[pǑ^ɴ\xE|ć<ʨJ +˶LL#\|/kÖ| J,ͪ4Z ܰP t`ʗ,< cEk l0T@j7|Sи`P̦kڬ݌Ǔ=4}Km+$]lz5J}zۯ}#θ@ ڠЬPd]/)C\[QS  \tf׀#7k Rp ۀ v#Em`ԁ]J=j-mӻ ؋[{MٖAPsp 4 p MP-0휮} ۲S @ p }#P0ŝݶ9)sJ珀苞XB MMK5I蕎隞)QONPP^k0Q=>)種꾮}>hNȮƮ촼>^ھ>^~>^~~?_ ?_ "?$_&*,.02/)?68:B?D_F?@JLNP?T_V6/X\^ `?d_fbjl0nr?tp_xzp|__JO3?(ǔԙ?_?scB!$O}, O?_̟_?ێoCo_O_`@ DPB >QD-^xက :r< p\ȁ$C,)" LIr$ʙ2_\S&LsT3A4kM9SˣG]RRCM.֨~VXejɩJjӭܷE-ۤxo]|wWT<حdf-_ƜYfh;~ŕcktia.hٮO;v nɯ"EVUG\9FjCN:jۄoޘ7߬G^;ln@]_|]`O,;{лz3nAB /İ"dp.? =D{= R7cRQ5G15|22H!۰!D2I%do>~tJ+2%ԲK/3L1rL3D3M5+sM7߄3N9jsN;3O-ԳO?T>>%PCh#DQGmtЃRK/4SM7SO?5TQG%TSOE5UUWeKihJYgV[o5Z' >6Xa%XcE6YeeYg6ZiZk6`߁!7\q%\sE7]ueW]/dׂ~m^{7_}_8`F8w6n!Wx z 8c7c?\naoXb^52C9fgf5Q>[Fg&zhFhfziGe*؋:k:vvbꨭ:mfm{VKJݕX=)ܕ oGz=[ljvEƇF.}җOyO>trK7~z`y3 jPSKc5 iщ}:sB? /?upQ 9D0GH] ]8à4w6!s#ٯx-agB&61m {69a qC,fQ[JC"&3A9эo̚}i/1 'C>rыa d^?͏~8IJ~LxJ+"Z4dRY\Kd,eɿK^#a yϸ\e0[햳X%1k#09#T\vnR@f8ygOCgԙNvӝK!/[;Ӟg>O~ӟh@:PԠEhBK0Pͤ3yqVԢ$t4QlD:!@['EiJWIVԥ/d:SԦ6`7aStK iP:GEjRbT6թO)4:UNlUjV]zUvիW:V=gE̚VLkuk\$ծw R]W }l`3WְaX$,XYVRlf5nֳgEKЎִ-iU+Ԯֵ{mke+ֶimu+ַYo U׸A-q .׹"msN׺un׻ww ׼i*y+׽]j{k׾?D5՗c<1(nl~C a #pX.a_d17b[%FqBNbT-1fVcϘ$Acs=La!E6򂑜/ve)U,_-oٽ]zf5󙽛f5km,]9ٹurg}hAЅ-[E/ڵvj!iNҢ=iMkӝAMǥ6QjAvkYֵVqd]ʽl+Y6le]fiOնm7oqnqߙguvoCϛމo}?^i7h p_1moArsɟq-a.oϼ5S4ot\E-ˑY/ wЏLmu{:]_mX_7h˞vîE۟uu?۸w{`q5ۚx!_XO~W1nxѳjQ_xկwa{Ǔzz\7HE|/-{B!|_կ$o#~쎟~G*|ϟ?Oٟן;ݿ.ÿT>D@Rs3 @ <dl4A蓰?cAD> ,0,AL,B_,Q!dB!D$<&-)*'\Bf-AB!B( 9ÂHC YCh yC̊C q =>"$: 0tBD@ #DX+9DD)<<:Bt B4<)E6ĈKؙPI*KtJFD^\ odL̰$NhʳLKwKKg}4J.hT|͌M0D,IlMːM (NK*!INrH,lN(N3MdMdD޴TlDNdtC\)LCMLOJ"PMEPL9e>lPd̳J U 5  ]]AE! uQS Q5Q#-R!)`&u'()*+,-./01%253E4U,؈889:;<=>?@A%B5CEDUEeFuG%TJKLMNOPQ%R5SETUUeVuWXYUՀ;PK%%PKaUIOEBPS/img/DatatypeMapping.gifmGIF89af*{!!!!!)))))111199999BBBBBJJJJJJRRRRZZZZZccckks1RRk{!!)119Zkccccckskcss{焄眵)!119!))11B)J1)99B!J))19BBB!J!J)R119BJ)R)R19BBJJJ!J)RR!R)R1Z)Z1Z9ZBc9cBcJkBkJkRsRsZBJJRR!Z!Z)c1sRsZ{Z{cks{樓凜Ƶ!,f*II9J &B8 aЈ#ŋ3jȱǏ CIɓ(S\c,ZpE (F" M%E9~D"FJJիXjʵׯ`ÊKٳhY6H88\BW5n$U D!È+^̸ǐ#KL˘3+_M98pP4bǾqG۸sͻ NȓNͼУKN9laF2.Cv 2Z`dR JBl(h& 6F(wMDDe! $'‰Wa~Vҋ0(4hECJ4ʏ@)+Il\P@ b}-Fi^:ViXf\v`)dihbaJI&$r! b ɇoD8P@4"DRx嚌6裐F*餔Vj饘f馜vz lJ)l&d &,H"F$@$p!Tk&첍)x‰z%"WrkU2+xɴbˆ"&bH!x+PrpCYeFU+Wl<'Ӳʾb+RY 3,dE|?ʆ;{@,O'@'Ё@",B ?Ï.nn?_uZ0lYB6Dkȩ\dL4e<ȵ,-At0BL[w\W"[ӁE hl4% fmmHrpm쀤F0z^ Ѓ[ gHcK*[L=[@п9udt E *pڴxE rQ  zqܢ GB0]qD:ڑ$.ȣ @$bī7D" " 0W : 6ɵuA$'$JO生<KJRr '+QzҖ$.Q^ 0IbD >" ݏ #WH"DT^1X@`FMPkɚ%H@($[)OS@`YQ?f\%?ky˂rd2І:_A@BD!*H@q+HMpF$hAx0uf/dZA?Mq T@LS4DU@gjԝ2:pj?ԪZXͪVծz` +Xg@r!U@8) $J4댪PITMMS 2=,PqjN1la $z hG ڲNR!Rѹmx*q4l@8=nআ-r[ן1.tk3us^7M.w{^MojHq'; BGa4Xx]oR2G8MCBmQgs$|9دΰ7_窯@: |C;g H?Aw ~0z)"Gj#02e`ְ5! i@ĐXx l.uw5Whl2A`+x ]`,b ^,~6tKJ[Ҙ.-YN&@ac ~Vհc=5<.2wQ3,`` PB:Ԑ4jsЎMj[ζnM'MrNˍrwD0ox[ILcpO;<'N[ϸ7{ CMj< W0gN8Ϲw@:Q:ē\HOҗ;P:`[XϺַuO]N_G@ONe;]zO“"O@팏' @;7򘇼GOү7Wyԋ]yu=w~/?˧Џ~Γ/[Կ}?9v_GzI~+r?'x?Xge97r4rxsgȀwHǁ"~ H&,h!XׁG486831!x,H68HHx;C(E(oz`~.(+:\K?D:Rȅ]HdfY3sHihwzpȇZ(#؇^ekg}h@l80؈8gFh-GOHw(XjȄehKMcxw~(j艎艤ȇhxohhJ؀'hĘ~xȆX狼8hˈhmHhXxxhvX{؂7HHM80ȌS8{88FXo؁G(IH  (hdswXs~hww. <22WnxGwۗ҇JٔǔNRYGVZٕǕ^bYGfjٖn|rY|hziwt~iv} x)y-YIuyBt5 Zɖ>Ɍ@wiُɄ<(HH}ygș9X z虵y|XّPM9ȎIȒi})Q( 9Kٍs8Y蹞h91Zpٟ:Zz ڠ 7gN0Zzڡ ":$Z&z(" /Ni4Z6z8:<ڣ>@B:4:ʢ*3'-JUi9.|5ǤgWڤ8*5'Z{Xz{cj{\z^Js`lڙw63%(W*wx:4 ivpZr*stjaZhwxڑzZJ*sVT(x1teOhhtJ/zs*jwʫ8Xa HjPWv0؛9X驕؝V:ا@I&/Gwڭ]'󺋳ኩI*0rIx7yu[u3rIي +>(*vY:੫3ڦNgPZױCi<+IGdC{EK.Kڳdʴ'Mk_6[ʵ] j*Ufjgsʶ4GNF+$Hr!;[{I1ǤD0{V] *;빤{Aj< C0[:꺶ۻ@» '1:{Bkk?~}@K ;8қ{k{+k{˻ͫ{ k˾B{C$kTz[  i՛݋L;""\'|$}{zċ 4º8J9 l8,[F^.ٱث.ۯǻh*բ^Î3صn2;ώ~2V9>rb^q .nˮ>nr?_~  ,O/} /!_h=m*(+M42/5{>QD-^ĘQF=ZTH: -ISL5męscH%O\ٓ$LEET҆<ӁD^ŚUVND)@\͞EVBT[v\ulԯrXB}ypbƍy8bǕ-_ ٥侔1斜Zuh>ZḽI~ntm-TwoŵiƝ?_|`á_>S@.gv@n.^z价^|ǟ?|}P=Ě,@6dp?z$p 7B87RDOD1EWdE_1FgFo1Gw~AB$7Ā1%dI'2J)J+ 1IJK/3L1$K$,3M5dM7H'D#4SM7-SN?5T(=TSOMRTWeUR[5G_V[V]w3W^E9XcE6YeeYg3'l&˜ ZJ vRpMJԠnZ||t\&x 7]w{Qy7S{ŗ]quFU2`K^w^'bFխud%ʐ!,T4vKc<6J'ɒo&)OQlGeI'ʤ3̙ɝKzJӕ[MߦIjFأ kmÄm6˥ۥ&誽CXd)ƍ9q&VoVI'k6pٖΩb>1\ɿpCgwK)vRw r]&zWgn\!R͔Ϙ?qѩ/;~ң^2nn\ʇwsW7myP5pq $ iMt^I.X'uz"T83`ܓG4})P+M+І7auC^ M1\N@bD&6щOb?VъWb 'ȹ,vы^b AhI=ˌgDcU)эoG:юatG> c}d GAҐ!H鑑IJR$ /INk>JRjD~`%)e,cZҖe.uK^җf0d9LbӘDf2`v`(19MjVӚf6Mnvӛg89NrӜDg:Ig<9OzӞg>O~ӟh@:PԠE(=;PKrmPKaUIOEBPS/img/success.gifKGIF89aTqod~s!, H*\ȰÇ#JHŋ3jȱǏ CIb(S\ɲ˗0cʜI͛8sɳϟ@ JѣH$ӧPJJիXjʵׯ`ÊKٳhӪ]˶۰ȝKݻx˷߿ LÈ+^̸ǐ#KLYpq+k̹ϠCMӇ/Ȍuc˞M۸sͻvMfyУKW س^ϧO>gӫ__×O>߿}vg߀B&```ba^r&`!-mȡ8Ӂ hThW{8tEW,4&6!]46h_?vIrX@DXH >$R!LWZteVr$`~eblɟ70ƈYuə/"\6頠| f^٥jBҡF塓6襋&Vi&*njvtވ=%#s"9 (0jsZ3+n,ˎ)]Rj$:i*jΆ2xR8笰k]lb[f߆ -dNk Wn 0BJK▫ƞ+3ʻklJ׽{1׼+^Cl?|mNs73Ms,ԑY2Eu {=^0(/͸um¹LBL"F:jIJZ̤&7D (GIR QV򕰌,eI̥.w֒ 0IbL2fΌ4Ij̦6Mab 8oL:hu 0wSMSOzC(l6PSݧB :P2t-h?s@ ф栳Gyϒn2MH3O40iJGϘiNISS4%Nԁը\QjҦ2GFϛƓE(Rӭ3 D[*V M)Vխa]Yו^kk[*լuF[ժFCub UVjO'ю5@+BJ٥>ti,_JVJh--e/kZb[-G'ر5Yv-mo[7ͬrز%mhGZڵ5Ep[ռ[ CgY&Wf7V]lv+^ůq5K&jJy;TVXDoWzQ՞ֺ |WU*gUàem+|YnT)~1LKr6<>#Y cEd9%-a*X𦵻?JU:ֱ-k,uFoz"Wqa¾Uek>rs}]+h2Ј^ѐn!J[w\47NFӞG Qԕ.5W>հb_-ZZw\vMb{sN9e;٦l6MLJ"n{=p计vgoy۝}?—; wx+neCk渔AJ3Art+.ɓ|exe>^9·.Ηg5qTNg'=\;x`*w''0N͈"6;[&u;N;udfO]irc ;񐏼'O[ϼ7{GOқOI6 z&/^lwc'q k<~}mb|4ׯ>PA?ҧ } A~|?ķO__&bIowxC~B'x| H$2"G2 _(Ӣ) =!H%Z$&V}xѣ0X@gD$r:~~{$0hG|9xCSR҄ƒHKN؀H}\(P?[2H4g]X>X8J-h4X7HD`ȃQ"S9qm~1~jH}\x^8{/h4hsuD؇]HA((t؆d[؉uhXNE}胥Xi-{7zX Ϩ S=‹׃?AÆ1Xfx{(QF︎IqFFg y~  ?aN)跎y|DiW)E'Y)Y6AMe,29hhx:<ٓ>@6C8}HJLٔNPR9TYOYVZ\y]`bIX9fyhZYC8yjre9vyuyzU|il 4|Jٔ)}阐 ~YL9W#)O٘[٘ Tye)H9yii )ɛiٛYy9ӹɗ)!ɔiቛS9ٚ੘IY9ɕٛIiY⹔{Yٹs虋yɜ鞵ɠ쩠%:&ٟb/ZJ٠: h(zڜYG  7 j*Ή_ zY:Q*6J6rYO n:BzDFjhʤ9Mjx ~e_ʢX*,:j.2:5ڦiyɦڥmysu d# iZLJ~j$j`٨y;*zz٣کڗZo9jʬڧŪ:T *ӪiJUz슬I_D|J㚙! yg 隰yv:JЉRڮK˺ y#"[(+w !fyiI24{:7 :ACKE{HɳDٝN۔PIAni9\^A*)ʴJɶkʪ@ &>%,o([2n4^8>7>Np:K DmF~7J>IPpL>;-VnlXW\>[bNq^^Mhnkjnkp6tjv~禖;z.j|i>Vni|挎v^XGg.ME;PKeGPKPKaUIOEBPS/img/CopyOptions.gif/dGIF89a({!!!)))1119999BBBBJJJRRRZZZcccks!)9)11999BJJRk9JJcRZ{c{!k!)11)s){)199BJJBZcBkBRckR{RRRcs{cccckskkkkskcs{s{{{{{քބΌΌƔ֔֜Μ眽)ޥ!19֭έ筽έ޵!)1J1޵罽ƽ޽)Ƶ9B!ν)99BB!J)ƭ1J)Ɣֵ9BBJJ!R)R)R1Z9ZBc9cJkBsRsZέJZ!Z)sR{Z{cs樓lƄƔ{ƵΔ޵s΄֌֜ޜޥ!,(` z #JHŋ3jȱǏ CIɓ(S\r#@tXf4ܜA@4‡Q@(]ʴӧPJJիXjʵׯ`ÊKٳhE!!BзD@Q(x*˷߿ LÈ+^̸ǐ#KLev"{(FHCӧAMװc˞M۸sͻ [ȓ+_μУK(L6PF)%V9E;P 2cL1`C̘Š7R  @diUix|矀*蠄j衈&袌6{rO5،cMd:4l1Ĭr3C&@nRY'*무j뭸JJM9\S R2\# +yqCv+.M5 )\vy# ,޵َ,/S [:&e1C-!/ +BܸK%R|8ˠ(w ?Xx2B∣hUڨs! DLzM CM8v%18C֫ː# Lgxž7`˂+'7W9?n|~ L8vKw,>iD`9 XMw>]1.0T|1oC a#K9-Kz $|}Ȱ ]yqM(`}}__)8B|c0n]"i6PGC^g%x<𒸁`oK&V2x$@p mlH``#xPa XQY( l Qu:[h%"axC (ᨉ(ET` H2hL6pcbX\ґ0U4kr@` Ĥ!qύb` /h P6n/E%8@pC%7D (;F2nG D9 -"n2 eR)Y l( C6'ɠx&<0JXc$)N>2dA)#X&$7q8c^+z̧>~2ѩdeM0GX~ ! yD&qLI@qAX 䬜)Y97ziwxhS4 )Obs Vڐ܉(XVT)&O=NV$n9V+gNhMZ7@2!< F*U 4P@!6@;6c iqwY`?]VnAeY Z\DYJZԲmmb;Yӄ@62c!;[VlqVM\>ͮvz xKծ[`]1pg(T**0w>b+wɍV> HG,d\#+ ? 0k|rAT  2;.eXE8@ޮq-B7HN&;P[[v(Lj _ۀ l1A!И6XbQ1y ;.89|>lY٧rt, Ip(}fphM{ӂMs$ y:9Ӡ>'P:}flЂymkbNf;ЎMj[5 M7xe-@7 xLp1F .Z9{sT2A G dp؅7r0OA0oMoИl,Zc9,A$Q}.ƹ\ >`^~sFn@yt;o9s1X wzצs6^5GAoG2/˱:OPЏ>TaBQ_./2;QmIFl3OϿ PcB P ~gW~kDZ~ c` "8$X& . p `1H~jvX8#{wwJL؄NPFܠrXy`Ѕ@x@=(@vj!}npr8ҷm#@HD71oItXx$Pu6!Umnu춉v3'؊8Xx8XxȘʸh7!0P(HP!8a嘎긎؎8x؏9Yy ِ_68pPyّ "9$Y&y(*,ْ.029%i%:<ٓ>@B9DYFyHJLٔNPC 6)8 RZ\ٕ^`b9dTyelٖnpr9LyVtz|ٗ~{iW Yy)x9Bɘ9I9YAٖ @ ) ٚ9YH9 М@ Y ` Yiٝ)0ٓ М깜9 Y ٕ#yl @ I9:˹ 0 Y i YHC yzI'z,ʕmt@@i   ) @ 0H0o١QfI|-ZZ^jf1Jm`N͠yأߐ o sN )9ٟ7BJڟ)jɟ#zVڢ? C@C0G`F:*L ͰHæPq: ЧPX &*iڬ:Ɋڬʬ]UG0?+ЪI ;¦ jORڭzZZԺ۰ʰ۩ڱYDH t*:Bݰ0k#K"ʓK:"˰ZG jRKf0U $&ۮH ʲ9¦E:jtEKvs ?DH{S; ]p#Z{H  2۫+[qjzkrKMy۷; Z* * 0` 4k۳ { :*J;kP j~QK%{`7ң/ Kln>˱Uj۰\<D =8 kL`+#JEY>9(̺ R ;C8:j7"\=Di;&|.JO+låZCpЯۿDjƒ ,VXt\:;!lƅKƂ<}L;u\:5:;āLȘoƹ{+7:0ʤ\ʦKƔܶɰsi2|@| ۰  \|ʲL <Bj˸ L d|#gϜꬕ\˷ `# @0ʾZ#MiP Ԭ ~<Ͽߜ|ǐ }MVkz 0 70yXP<  n7<{2ӌլ & 8Nʝ>? 0=>?Z]57>MPiUpB~l]FnH [ldJkAgл;k|.NMLQgsJi{J~\˚\.^~ꪎɤN>^~븞벾8>^~Ȟʾ>^~N>>^~.~>^_? h< "?&(_*.0?,4_6>8<>:B?D/A_HJGNPoMT_VC|Z\S`b/ގʮ.s_ ty/{/}?~qlo>x_wotogo/OO짏O?~َǿ)I_q֟?O?oo?jN@ W! :p@ &hQ"Ć!jƑ ?"$2$ʼn)MDy#F_f4xSJ=}t&!'G4)t)ԏTCV4ŭQQ,Waɚ:֪XPv [U-Zuޅ{.YLKWԴ|~3^~64Rʕ-$jsj= r-M= 6M8sq֚/cFk{%ʼ#NY݄s 6羢fۮivOsgI+g]6XmwF pY};X _UM?33-곋|OcF: sO<#o3 8WT+?^d{+ɦqG[4By|>|LP0JB4oDm,ι\Il 9hH(M7NKךҬDiN0[ K*<ӽu:U s+Ŕ$r=3;2*OSO?TQG%T055UUCU_JXgUZoUU[s5]OWa}uXcE6YeeYg3ADgZk6[_%\sECn\½lt祷^{]T[w2y8`V5_+߼=c0 b/ThȮF$cJOF9y 3_!; Rew٢63`Oƽri?őHkZ\5~8;mXa߆;nb~;oֻoNo'pggn>{“WLdqԚ!~)>}ɮV5GVMQb}ZD"i)b 5dq mJ~F@vP`[L8!lL SĶM}@ІRsЇ68mq rDDbMD%6щL8E*^UbWrE-v\bFgDcոF6эoc8G:юwcG>яd>΁g[@d"HF6ґd$%9IJVҒd&5INvғe(Ev Rn !JVҕe,e9KZҖe.uK^җf09Lb$㤨Uәτf49MjVӚ׬&2OYH4`%89NrӜDg:͸2"$&8NzӞg>{Ns 8!P}ԠEhBϷS T@Q(EQvԣe Ңm%A'*QtiLe:Shk#-)J]Җt)M:Tl'7/ӓA}*FiTVժip6է)Ou:֫լg5gVծ |kEӸծwū3 52yl`KϽ><`X42VֲeavؕPg54Φ$hhUڙg}iZ[֕&mS[ַt"o+,6׹ `ӦVrN5:U^4w-ZW>׼Φޖ`UX V*dW{^62![_5qow#ҋ75D_ W p7>ե%Cpza})O=UW񃍛_,~R-OnW[6.}j2&`8X3žYNc*FoL0,Wk=[r{ޥiwl]_ K2&Ex_7x:ww>'-;kyϗMzVZg]?-Ǿwܜ5l{ͪ}/{fG~|7χ~?}W~}w׊>$G?,|D1wa8R?}{?u43DTt 4 &<@ .4T,3 tl1d357 <: ";" 9\)Za_Q\!&taa?IQ-T1UyB8 P΀5$ z!]WwYitD뜕)9O1K`C$ʩyFsٝ0 ( OP><O ̀l 2 ~INB+ }FCL1+E>I!Ҵ^dFTz\W8`E=|:MM͌IRDҐqRXWNGތɉ9NaJOlHm,yjDԗeQMOlQZuV"jZM{ZeϬġڮڰM۲eK5۴U۶u۸ 5B[t/iDñLA["[ EUmŐƔP.M/W>-5nEce&X=J#q= ѥZMԿ=Í݄e<:ʄ]1-̅uׂJ ^a?Me%9EX m^ͰΩC߼!e_߹}Й_Xm\ 6FVfv;NQ `[&= 5F?VfasdON6aV/.bc$6%6&vbσa)Ƽ*B 8!⭍b*.b c:+,>Lc$^c c8v9Ε+c0n {㥺>>;=DVEfFvGHI d dK#NdPvQ&e5S6TVeeVWe%7Y.A~*F3 Lڢ=jD\735}a^QcVQafhѻeDiW_&^.4Q)nvqfc>JUb(1NO-S6%UR59mE#uRE$eR՘L EN8Sy OmF'YˉiT ]X"W=iBؐHԲD™g<[M̏GR-~֏]؈]-m]F9ʤWdȪUU}|fzF $WYD=hVC]ˉvw붞pII;}S^ö B+KҥJXݚTtiޑk "lfLٜV h5@LEX"].d&ބ>4YēnM͝Xq4ї젲唉f9ž,FQOns1[evFo#TBuFBO7\wAgptp  p O '4oWd/G^_q r'"Er>%&wr(o)0+,,." s#-FV5g6w73 9W/oCR Ls^\ tt\)HY9$?GE?HG:/ktZWy9tP?MNNR'SV7WwXutAu[J7K#Tt]gtsuUQup(vU9-0Jvհ=Zcaa_gL9vlgĞfL7_vciwNktH#Bm?rew_S7@@ \Ap+{l8c9> 7XL2#ނ+. Ntn>TWlgq<9,8Dc-40*t|.'04El^<@-t@O4?%̥؃L.O0;ls o[ZCp=tC#NF9QR0@"B [q?VX_8˭wyt݌|c51Ah=x P04ܮޮ?z'pO3ЖQʨ>k7D>REm,1-h~3LrLZR?3HL:'H Z̠7?7%c\zh^'@# EP}ABEB`yX\(h ?C*҆"k|*YqI̢.z`L hxZ1! a # g2–EB ,B=![]+Z̤&7I+.? iH*!xA.O,2ܮ ˜ds'0HfZ̦6nz 8IrL:v? hlzEaFQmR, 0#}lP_ADy;+eE .8.P4FJ(MJWҖt0 {Q `" @ ,⁃.Ohq l_0KGjCk"ֶp\J׺xͫ^׾ `KX3SA x e+B;Z[+ Z pK}E0mq e4KYN#(0 ) pP B(t@&whW4Oy+(bN;V0r'L20udxpK)LQRDjRP\6;̙{LBЈN*u s @){N PjBԧN[XϺַ{`NhOiG_xϻOO;񐏼'OyCt0{GOқOWֻgO};jMv\~sOO;>юC ~5j>vOO?{}cQjc9!z8z y 'η{~@ $$x'X&x-ȂȂ)y33X/ ؃%.81(H.D8;18(X+(z5HPz08T6A؄#_QX](xU8Z؆hi8džE8tX|g} kc:gHjr(i؆HO&Y؀ȈH(P(؃RH 8x4ȊȅnX8'h`G芛؈؈Ҙuܸh؍8XH8AxI؂֨QVxZx ɇƈçX(h(Ix8xRL)X(I8<&)֘E{찐 ِxS؏Ȇ؅ 0ͨiؓBibhɕXY@ɓW(C.xqp8QY@8 X~9ȎNjy3yI Ye 6~)}y,錝ؘķ{QɁUxDYyY KIe.It蝄(2)DɚYI@IَiYM}X}H`WIə8Ih:idxXx?9ۙj!,ɋYyY^1*ٚ9`X J(j"ɖhhY H@xXǜZ*|iz\Z|aZzc{)Tz]ڦn {9Yp|q{eʥrz{yɷ{Ԁק}{koz~}~(wjz{\ Gʦz 0 0: 0SZ3j2ꕺ\HʃxLKfjZڭ~Gjq:B Z@j{Ii-XY '%Z"©ᩝʎrh[)xI,ڞگ麛;JZZ 4Zz乚 "* q3 IF&k*,*Z49;?*_(>;@$b{f I% {-뛵9AU;$+E;a[cz~ikM;9;Y{Iʔ+. }\ҶK?+XI9j7֊ [*p 9(e+~ ۼ }{:z۸+kכuz۽z˶˽㛾껾W{ʾ;|kۿ؛JLCʭx/j9ڣJh+4l@jzۡʻٻ?Z.;BySưC_\Vɏ3ǵj LjL*젘9;ʡQ+CL^Ki OLP\{ȉ<ʲ'm88k4|'z L̷+äˬgDz'@(ƫLەhƃ n~U̺oƾL ߋaĦy]=֜,a w(']LD[G KpY@M# mllӂ=<ܹc<̗I=Ե,L)Mm{ëՌ[Ҋ|}`m Lbj۪:̝ܧ܈Fͩԝݧy=]Ўl*+Z  ܼj$݄= ɭ|ٍ k ޥJlҡKkӁ*׌G? nu/cFq5;ɯşړ &N~(N<s_}OEF\rmy䥬W<:o)3̟<岩͏\ $ע VX҄9\)2.¯.e^ [ҧn:ۙ+<N%-Ӯ]\ْnmD JȐ ΌFN6l?v[|;˹[>Ԍ}/홞!Ip_㣟=9/m՛֚,k\Z8G|̷.j.eFeͬl/ړ\a9nZ::EOٔn/oq;>N@v,H0!B.|PC #"Ɗ'd#HEɐ)|iQC!7DqL9Wfyϖ6 ŒE%U߾}Ú_|: ;WJř&гM:}ҷK%HZ1ikο9z |g߶24k⟁=)9ɡ;3TVfXf5¬4_V{wᏓ^*\tߩsq; zq̮ͩv~+ oo|JO}:ys?Z-֮zm k,0B 'B /0C 7C-DCG$1KD1 *_ATFo1GE2=%fBj:/SkǞ9FeNmvm7{nCn+{oo |p-pM|qǹmqɥzr)W:Ѧ/<;C'KG}׍X_xWfv!=v}ww ~x,xˌ|y_}h]+>)׾{">|7?}W w?~ ᗿ~agzET7@ %H@. t AM՗A A=P{%4P筐s C5 q;v=! 3CD%vM89)NqUⰘmF1e875mmtcG͑_G=Z} 5Ai4H-:s#qIIj* :Jne$@Jx$4yJətK%Vrs-i7K\jQ]/Ja6<1Y0e.p*iFh~lì&fnqٔ7Mq ,8tq9I.yr'7OՓ?=O-EA,.W uh Q{EQ%GAzHT%5i#QRHtK-u)&Th)OIӥBN;h p=S9UjUU0npMզWAU2,+ΊδZu8mkVW͕'#]IT鏭z*_Y'`y5Xs-c*XVn˱gAղ5fdQ{Xծ`u`ۇmjjl[կY-rsUW\LVu]v)oj"y^} k{W/zв `K&xZ"8vps4a5¬j?vtFT2ܢPE?vqbΦX[JbC46?aE=nЭG'6Y0r=c)׾TTqeOlYenG [exdrͬf/͚r!g4sYwnsۡg9C]%-&#sm:Fʑ%L K{!>5Cħ>5|Q/~.TYVND'&! ^z`>f}NFvlf7φv=mjWvmnw[%$nrFwսnvw=ozF7d~} YpDD/Ap+x5pwyE>r'Gy7r_vgG(Dvo{>w=w{w7{?w|>xƿ%W~b??@tS:ٳ;}/|aQ4 "P O}mo/;{|^/~o/Qp Tf7!Y=aT{ޟڕG)C?.?k@Td@DY>:<>H:Q&(?@$4DTdAȋ1xdAkA[ @?G#D)*+,<A,./4A糊1$243$,G@'$88B0QK;tB$0?D,B@4CDDC4dFt %kC҃8@@H;C5LPQ̻A|ARDT4D7Dл6CD5IJCMDY\PT_+4B b4Fd{\]ZH`&PE?E5nopq$r4sDtTudvtw1yGx{|}uE,iD lEhGFoFEHl̼^NȊȋȌȍȎȏɐɑ$ɒ4ɓDɔTɕd;̼,HnlHƇDH>pC?C>x;DʤTJlɦtJ\ʨJ|ʪéJʭʮJ|ɠJ:E_8SCЃC˽˾K39t99DL4L乼K57ˆKJ8=0|$4$={LsLh=P1,Ă,M0Px0k5$4DTdto٬M̀ˇdt%5Edu } 5m hMc!EQ_QuZUџm+  !ҁPwC.M+8uB1%-+&R)ME++ ,5R-*+/3M4E5U6eS6SAR.98e<-m.!S>Aݐ:;U)T9 E @ LB}0ЌԱOSI P)U!8UD , U QTS9UUPxVSeTUԒ( eMVjMyVZVT iVVSW 4 ZEiUJSbV<"A{% T;UPV- RWo+%WCׄe7uӉ؊؄ׇL*ևUhT; ْ5ٓEٔUٕeٖ=ن ѥ+ٜٟٛٝٞY(u١%ڢ5ڒ%ҥeڦmځڨکڜ Y|جZZ[ٯ唰[M!۲EGQ۵muB۸@ۻœ[;a" 5UUeuDžȕɥʵ%q5 @uׅؕ٥ڵ%5EU^= %5EUem߀;PKBu'p'PKaUI"OEBPS/img/specifyMethodDetails.gif3GIF89a({!!)))111999BBBBBJJJRRZZZccck)9)11199BBBJRRk9JBRJck{Rkc!Z{!k!)11)s)11BJJBZcBkBRckR{RRcs{ccccckskkkskcs{s{{{{{{΄քތΌ֔Ɣ֔ޔ֜Μ֜)ޥ!11֭έέ޵)J1޵ֵƽֽ޽)Ƶ9B!J)ν)9BBJ!ƭ1J)Ɣֵ9BBJJJ!J)R)R1Z)Z9ZBcJkBsRέBRR!Z)sR{cs{樓凜lƄƔ{ƵΔ޵s΄֔ޜޥ!,(=x0!DHHŋ3jȱǏ CIɓ(S\ɲ˗?|B2pA " (hA%vXĈӧPJJիXjʵׯ`ÊKٳhӪ]%"@(Jw&*ߦN LÈ+^̸ǐ#KL˘3kYRAv""еpk&M۸sͻ Nȓ+_μЉ A"u@ E-lACرӫ_˟OϿ(h&kAĐBFBEp8\Ǡz 2ӈ$h(,bC0*4.h8@ BhdvL6PF)TViXf\v`)d aRC4 1#1)*E @Bnyg&袌6裐F*餔Vj饘f馜v駠*PM9֬9ͪJ&2tvR.A"@@0D2dkI*)k&6lNS9T*H1xG?8`+J(vFj7϶+NHs 6ֲrD M.E+WlsTc: C -|  E6((K<O?WxpFBia AXg` 3͚6'162#r0,Q?.D{у֨B5PД &KK(K?px  4¦Gx(lnig@X: ^a.앎1g1630)G,\B"XO.E?2ֈyxʏ|0(Ăru ^~gA?k2ldw)G`hsf0"Z; K -rI>~B&(UЂ(vԽЄ2>Ã5CP4o`ͰH*lF*đL4D0( X#Y`XP'#c Q:x̣> IB[?-W G$+&5 @hrԹF. A HdbGBA8#)\'W@K[RS-;M$& 5Gy&ESu ؏qƃu`92N&)MIK"3&2Ly#G3HG&PLBІ:LW ddKdm; 0 V| <2ITГ)(SF,DXpWG :bF;%PY8RcV{?7QǂtVqdC?y9bJy@N_Zo9u'Oԣ5)c!ԁs"t^׾#:(1 ehk7FW H &Fi((JI@?=]kTVH`r `mM+*`l4nwh@Bݳyb(2z[03~q <;ڦEl 49Fjf7{*acq"r4Q2]"06$`f`ڨ62@A neVx`HGJmVQѻ BM ퟗfz^h :RHogVf! Ͷ;m^f}{ 䐏'Oym ƜTΛck$Į|n"BZgOsX-v_'b.E/x!zw]RO{C~mO[ط.< Nt_*TT__'R{?ϿLz0z0py0~67!Wx7S5X3(sgze aRˇ顁,؂.0V(p|2#xz`2(sHJL؄NPR8TXVxXR\؅^`b8dXfxhjH?st( RЃ{C(x؈Ȉ8Xx؉8Xxxk58Xx؋8XxȘʸ،( Rxؘڸ؍8Xx蘎긎؎0Px؏( ِ9yI"9$Y&9Y',ْ.0)i1Y6y89>@B<9FyH t! p0  XJ`bYP \͠ jY 𖒠Еcz/tȔjyk) 0 ~P\3-(622ٓșYɗɎP oY Q闀yLy y m) 9 )9 IXșٜ(Ȝɍyopw0 PUy 0P u`vY静ZzI Z ʠ T[aIwa\ @p @ii5A I:8@ʝDjEKjCJFPz=Y jV]B:UʤS9C0DPr*?7p' 5) ڢ :::y^G:Hz# HڥYL[*Iڝ`zJaJڝʦ[@TE0@9p)'p '#)ڢ:PM9 <ڣMJ*Z:*暥Z誮ɮJhjЫJ@@P8`xz}# p 6J j*Rɥ/K,{Z*ꤸj\a{o۳`:cx۳j[;jsEj} " Fx*{Κ p`  bڤe*> {kiڕ#k;iz*Xj||TPkN5p `{ћHiZ舿M@CG;+L@+щl,9}CF|H 4܍UtZJ+B\oZf|opP\+8v|. Ŀ+D\9klAuǎ! '09PM<3Ȑ<ʤ z:9ʮʰǠ^+ʥ˼xJk#|·@ ܠ@ 5,Z|s˽|Lƌ< Nl#k͕K򬐧 ' ̷6R Μ+ ;NL˪ ʬ,;լ =$ݎC`\ш{ڠ ]# %<-aЫuZI ۰ \#uĉ=}XM=C=Fmщ 1 6¢T-Yr}#_]}[ /0ա<׈u-Dy-ַP#0 P i@xؠ۫vM`J 9@nڸУՌ}, @̀lA\o]н[]ڍ̿= @ ` 6ѝ޻^=׍6jMP `cLSȤ Bmx{ݙtJ v``wTI4 ]ߒ-< N"^ .;`L8 E1 %>ߙP@P97NN^BACLI]n!k.GP,Xm~~LI0HKZPnд}.U~%]霾КO.ꦞä~ꪾͤ>^~븞޵藾>^~Ȟʾ>^~N>^~.^>^_? < "?&(_*.0?,4_6>8<>/:B?D/A_HJGNPoMT_VR|Z\S`b/Ў׮lNnӎî.1O^nxnsO폯.~/n_~2t!N?/_/_x_o?ӯݿ_?O?_?r!N@4H0@ 6xaD(2bÍjcŃʓ# V81ʘ3f9s̓%1,PE`@5bthˎ>[ϩAvkjVbw '˳[jVj\?VvX=}KT[%\0۪w xW6fC.mY*H.;rY'qV_s`ǭΙtM9yਃKxjeղwl{a쵀F3S諿7nж{VWBl?{N>lȻ-:8zPS > /\p@oN,j{n2T̻]lC5CFB:1F Cf,O2_|ƽtiPDKϔb3p"I% Rn(BJ>7j:;&>oC./=mɹ1d> 2QK6Wes5E84sFDUKUW_eVYg%(Ai5Pu[M^VמV56Ye\͊}YiafM5tZe6\q%\sE7]uaׅ7^y祷^{掠wyu]o3=hXY7aV)wY7]$x슪8Z"-8VG&KmU5ucUfb-dwY $SO+OtΣ9P?%9@Ŵ-Qu 餙Q3&ܟgK)OrPqmp(A(;5Bcl}m=0XlQQDmG/P,_N G= O n7F.5%̽{BUG>yTϞ8{}woGo +2 Λ7ۭw^{ S|aNNބ=s6 /zs0.Nɧا4ρc8jn" aǶAЄ'DaHBЅ/4 a8C2auC?bwC!шG4D&6YDtb8E@W"E.vш[bhC0ьgDaѸF6^\mcoюwLG> N}d IGAҐ"!Hs%鲐`d&i8IGuo:XAIRCX,= ҕ'<% 84Ur)җe;mk(ҏtlh4E sfڭy1g Zg)luA7݉6!YҞԠ#zfȩCʼnmQҞSaXr8IOkiB>tԣ}^— (EiJURԥ/iLe:SԦ7i?NOjP: |B]p6թOjT:UVժWjVUn;M_{ ,T>VQc[EVUx9)W/ѵ<嫫ڷk-DKXq )qeQN6 N5YvֳݬN%+Zв k4O‡,ֵmle;[ֶmnu[ mQN[Z}l\6׹υ.W7=Y]v׻oS;Z vN׽/U{wHz^o }!~}M7,}jA*aj _pZ`(4~S~A bg5sa,b;ę=Yb'wOuqi,c&w87eLac!2'& 2DFra xRv9\77yPr cSٌg'9,{6sgZu0PfYM1jթvu-cL(M2:h%Wq'3z!@ =] >rE+mjD؊~65muFaSZq][^-ǭ{)5ɒIwpKlr.n1#W]m#>ruSsEqI>s[uܕ9o;6̻7A +#ܭ./AmtW] ^K[\%CnuCZ!ױ_ye/A{.5w*_L/;ٍ6~Oz3Ώys_ltw>̠?_7~4{/>G>b#@.5Rdt TZӿ? =|6: 0w0Dt,.苮{<K=.>?: d;"T%C+A&BAݫ,B'd-(D̳*:3r3462.AB5#+|s;Wct?<îC0*;49RkI8AC+D̛9E\>+(_>H46ISb/_B :214#`[\ Rn y EG$FT4 D9W {DZJzhFʋ`3ESF$/; ㄼ#NɤN,<[ȺCN,OO3TϪ#ܙLL]; OOlia&OE{B)P;P:FlLmP ;%]%5x+mP9 %,)yeQsѪI*7ݐ24DQ#P̫)5ywP#$UFlv*iPQ+%E,~T -,C90ŧ1%Y$9S=3S;O*- YZ[rtUGVFUU$T4SdMV+-Zlָ\V|VbVe}Ta$V8Vk S5TãD>\<*{XcMN{Vp-YZXb۲F X%ٕГ5XdV4RT?~XZq=.5W*ooڢ>I9=Zt3t8kaZTح=ZՔV*d۫ڷ*[ۗS[۫۾%ȼN5c\;MU\[M5V%03E]ً5]_]ݫWNϮؕ`څ#]ڻݝOx!5]Me^+ݠ^Z,hݴmӭ~N.b- _,*t\U5(j_,z_*UM]}!"eNF`R)b`>v[P` %eL`i`E"K^a+z)av;a^ !%Z(L!=STais``>"lL\D*$^EY`QP,._m_nB'6"(ߑJ$^&])c/eRd0Icr}0F1F~cE(o ~G#A0d5\O~ l\kbU@3"eqY' CW^H_]d#f+g`h)f'fuf&Lfmnn:cYv!rf"sFoaU6T{]wFf'Հn-qZ2_`赗{fffgEhnh.`;`htqkh脖g.駫g/^nNg:?M酾iiyi_jfi6U*ˤv괅D~i^l*>jq1)j^jg7/幕ipnjޕ4)k%ij<䭎xkH秖7I鯞kkvݪ[&dT}l>kc.\aϾ^m>mNmÎeim}mllpmul.|Vfg҅V#LF-6mhMDsFk.oA= no&X\hąG?[nMoNt-۪epnoLћ :"3Fjz32yqJHtbG]:j'7q q/;GFN\er Wrh;0trrږF҇$p.!O=2q+q r8OPKs5i0q<C=rs@sG9pEotMNOAKgo4IWJBG&CWuXr[\tUm^/dYƣjaWu9qxifoeO_Y`Fq'rpGtWugv7woxgw7wywtrwq߅~pjvAmm'꽖sKYRRpMxgx~?W'YO8RXxgyW뗿% Mgwxr zzy/&d'z.Yer-'GWxrH4`7G-%q2{7G{gƷ?o lp)/|Yp7|{g{ȷ^Wn{˧|7?{w{G;x_fx'}9`g\E}K'4Wgwg|P]~MF,h „ 2l萡~^Q箟7j"ǐ`i$ʔ*Wl%̘2gҬifǒ.)BG A O%2m!TNF=8iUW6qbE)Ldj5L"qQ!D*qh\\F3C ngD1$M3QC=M2K|K&w"ک. "M'9/FP$^/-h<74F#3.Ry b;HD;pw%8H;B2#dg(?J*1Cd^R)K`zGŝ!rK$^8MP"!L+ ʔVRQ_Q&W4K 7)50kk$ mDN.Ӆ~MQ:4"Y-b[,ʵĢ]+굯_* "a)*KZPde;r,hC+ђ=-jSղ}-lc+Ҷ-n;@-p+=.r2}.t+Rֽ.vr- 񒷼=/zӫ}/|+ҷ/~ /߀;PK 43PKaUI OEBPS/img/usingDeploywizard3.gif)yGIF89a({!!!))))119999BBBJJJJRRRZZZcccks)9)111999BBJJRk9JBRJcRkRkZsc!Z{!k!)11)s))199BJJBZcBkBRckR{RRRcs{cccckskkkskcs{{{{΄քތΌ֌Ɣ֜Μޜޥ!ޥ11֭έ!))1B)޵スƽֽ޽޽)Ƶ9B!ν)19BBB!J!J)R1ƭ1BJ)R)R1Ɣֵ9BBJJ)R!R)Z9c9cBcJsRέBJRZ)c1sRsZ{Z{cks樓lƄƔֵ{Ƶ޵s΄֌֔֜ޜޥ!,( A !#DHŋ3jȱǏ CIɓ(S\ɲ˗05"DBtȐAvVHtA)|RH$LJJիXjʵׯ`ÊKٳhӪ]˶[O&iD E10"RM LÈ+^̸ǐ#KL˘3kYqSs?yiO*%bFD۸sͻ Nȓ+_μs㪣KNسkνS֭ ϟ=ĉA`zÆi_(h& 6F(VhfᆲAQC (" q`0lu8~2Ӎ8<@}-E3$Ls< Liը%EDv`)dihlp)ti'#;X 2sL1ˡԢ7WL Ĩ%{^馜v駠*ꨤjꩨꪬ*6d5XcM5P'2r Lɀ `Хv9fv+ZSNګP1?T"jh>rMTQC$Jkb $t҈-`@ICdL&%A"D?cW#'<# W0F:򑐌$'IJZ̤&7Nz!?.aIQ <Bk4P?I 8`".(@O`67 ?lf>3!9LR xIxЌ-&2xɚ }Cx\ tf6{Kk`)7q.ԗ9GFHGJҒ(MJ˸0e7Tr^ KZls|AP7JzA 2lnsoG ";[>wQ4mVЋ;܁m᫽TP ifAΪ $ hTJ0IN=233P#,\DZ#]d$c\RMUi@#PN0Kƍ)VpI}hS7. $ s*o>=r.3fԵnuep /z{^:Ub<ͯ~S ?~@,iH)'QM3ߠrƠnWĸ%CU.mK= 3qb?|R`fhy [.>~r7ҭl;.{`' 1$h<i3P\8'1Z+ >A3ˀ'&B̿-ھ++Go.|0Yu'_;J[ZNs+hfaC ? ӞtU36_Fi{f;ЎvtH@mDg9x5GCI)0 PίUY`>ABQ7`8< N:^O"I0þ 6E'7ܬb 振HvpoN3Iw*=r9>w䰮 -@v]Z@mh|9(鎎 d<7jng1X.UP.P;z|@:p{u>dst`O5?Avŧ7"HtȎX<:?qɎ;~:K%x@#~ت%gOE0pQ(v3|19PJ z#hʳ}O[oka[P׳)0~ _G~>v2|8Ͽg7C (p ` P @ 0 0/~|ns7m+` "8$(Y0x,* Y0Xw'Q@B8DsvY 7JD7H7$ӃExXZvA7Or%R" )pr8tXvxxz|؇~zXx؈Ȉ<pSꗃ1Xx؊8Xx؋HgT2>pȘʸ،8Xxؘڸ؍8Xh;EƸ؎8Xx؏9( ِ9YŨّ "9$Y&,ْ.0- )6y8:8I*ɓ@B9DYhJLٔN9HɑO9TYVyX\ٕ^0@P J_9tYv 0 ~闠0 `  0 |qy5yIE!cUtԎa闽  p  S0yJBɚL)IVy@ PE1VЙ 0 )@PiI{{۹gz k ;IۼKPfh{憎ߙ/HTG J a {\=̒A D," kFKGPRLZI:Lj-Y99&)E\8TJpIL5NlrCi\@NmP8Vyy .Z{֩A>\k<3~I KN)T~f\1*`8Keh~ 0~ɪkqux~K=mM9Z~ <R ONQ`_h@Yˏ^n+.겾߰.~]f뼞Ժn..>nʾ>^8ھ>^~>8@?n n?__ "? $(*,_02?4?/_8:<7@B?-DHJFNPR_VX?T\^[b?da_hjgnp_t_v?mz|?&O?.Nn?__XOEOoO??O,Qo_>@??oo??_Oo`84xp "|0ćRT!Č'rHPG-0C]xrL'IHsL yLi3O&nsRM>u&!uD%kvϐURbǮm,۷kŢu;,\jQWeܒkpܯz5/^+S>Q[vUhҢZJ0Kƭ9-LI9zسQʌo<܉cGrvBk7lozO_:yg }{})_l|l57.9spA/;#5PBr < =O䛰1>/sF%c mt4N94pF%QG719|RD w<E-*i(3Г)@Rkt.SJv ԯqM:D%BSMEϗkRmC2N.?=QT3=POETWeES[UXgSE]OV0m^V`uXcWdeYg6Zi= 6[m[oՊq_6]ue]Pܧ5=)7_}^Ww{%`6_0' ΢z* ӇӾz8c7RkuJ<4U׮ 8feV`cۊd›Sҷ:tc&aD6 C$:j%X,jzJa;lJ"+R&i离nbnYֻooGy#G 埇[e5֣z>{{?|'|G?}g}={~?`8@ЀD`@20FU)`5Av|& 0$G UB FAOq!&AZ/]4a oyR- HA<RD* C̋[jąq d<źI)Ta B?Í++MpH4jjx%qnn\ Õ1QUjS 9H2f J4ҐԡA.!qdBR(ɳ nXi2H?qj4e!{9J_S"RxFVK{|Afʸ}(<6.aG2i=IrSjR2Ȩ}Α4_42aӉ|879`9qQߘEޑDOJDA)̀ H+:+< Hr=a8)SPrsG?:fVqrQe)/Z5X)2AȞc u Y鑐|R5v²L fԭ*B*ւ#`WrЮwk^Wկl`;XְElbvculd%;YVֲlf5YvֳmhE;ZoEmjAWնvyumlJւmn_+Gmpy}ϸEnr\6׹eRH;]b*]v׻ox;^O!k½y5^mw%ŗ}+;.үFu i <5s5Ss?zЅ>tG߬V,Ooܝ3xP:{ʻuW<_7>v^goѾvܙo>ww|ٝ?xזx[)o!?[1yX󟏼A?ʫ5uַ}eoLLzu{/[v#3G~|i-G|W>QXّ],7~?~̱?v?U~xJ+G@H Tx??d@2l >?As?@\@?Dd@#TA@AdDATA $4Ad&$=J8a$,"@%,4DC'd6*<&l&  DL@D4L?tFtDY%:2>?C2ADB0,h0DE BF|VlEI9+KZ(xT$CT,tA5 Qt@1dEWD6t(D)E9t9 ɐAkA$FB'a\^%4EFqLsA( ;$F3DJ1?t|lBu)C&*}$HWG@NQ],ȇ;HbLjȌl ?,ȑ$ɢ(⳱cɖtɗɘIBɺ=w)ɜ[GIXQɟDJ#ʢDJSʥļtJʃʨJƳʫDJʮK˱Ļ4KC˴dKs˷DK˺ˬ˽˒t$Lm3$TL8cDŽ4ʴL ̭"ҌDRLtͷܪ٤Mc4νἻ4ιC|dεs<αN|N$^3lTO*cܯOOP"uEPREuвM P 5 Se 55ʰ-eQt]QQQ !%R5#$URe&M'R)}*R ,-R /0S%2 3ESU5=6uS8MM8SA;5S>GvT߼A?5KD%ԊdT3uGMHT6J}KT9]MgTHPQ%UK5STTUVEWU‘YZU\]U?__VdbDE}QeBuihmiukh=nl׼qEq5l!t]TeWYiCFz{|WI7'dyU7wݯ0zWY!X W cͭ5ueXkXA ^ئن\XvA2Y5+٘ٙYYX VbYQsYuYEٓتð9Ϳlc _] lBZcѿuXbم <#/XLbDj}/[%WفXXͿEz{\ۈ뱥4%Y۟(6A#yؠSŤ&r+?[6\Kɔ7q)@{r}X{1t-[i]Z"[4+J3<325ԕMom(*y̌GW+ܗbVKC5Z{QHٙ}N .iD^U+Ē \ [sɸE_M]-e^<ܗ_cC7E]卐']l߯mǙ ܨ߻P`"[j`o+__}z:-]4 >_+}b &>b8 [z՛zމa,f`-%m1.E@acXݛ>d=o1b*VqcBvb5 &F}䨝=id'NC2W. eL&S^I3R殩XYצp[f O~Wٹ^<faa6f)d>efaqggPufvvwxyz{|}~&6Fh0舖艦芶&6FVfi 陦隶&6FVfv꧆;PK]e))PKaUIOEBPS/img/runFunction.gifjGIF89a{!!!!!))))1119999999BBBBBJJJJJRRRZZZccckk)11199BBBJRRZcckBJRRZZkkks{JZZckss!Z!c!c!s!{!)R)Z)c)c){){)1c1k1{119sBsB{BJ{RZZccccccckskkkkkkkskcs{{{{{ބ焥焥Ɣ֔Μޜ)!19֭ޭ!)11B)޽)99B!J))19BBJ!J)9J)R)9BJJJ!R!R)R1Z)Z9ZBc9cBcJkJkRsRsZBJR!Z!Z)sR{cs{樓凜Ƶ!, X„ "N(T0\pAŋ3jȱǏ CIɓ(S\ɲ˗.WPC+R@1bN)Hp(Q1f\65#?@ PPG k,kcϱL C<:! A w&F""?PJ=Փހ)G1ꁓMH%iVSp 27~ړ nVԤgMxpզBB{LZTZ>d'KZͬf75aZd&IPY1t8IhhC2 @R@F@  b`^2#%-@?;]ܠ8%]VteշsE^\ĸqc|"_=RX  8Zp7p N tCp {z Y4 n+@8*ݬW)5C&(6̯HipΥVӘ5h@-oӆ^-b"頾5T/tq峆:v}" QSۛwoy聠 wvvM70,6y~]@C?fQٷgM ժVf8lAǧRz odހ-, Vݦ`S\-"B&7G;zH'8E]Q~WHTA2D=Ynodg-BobU3|(Oy`\vmïp$,5 }H09ʑ`#`>0"Ҡۿ(oy\_ǝuo Tdr;%ֳ]a-/?=}۽"ʝ" $>Qp \׍[]H =(xgOhA T?a3 [:F7zmH(G4@@<@oGh0ԺQ De~ /_`JR25~~'W _ 2_27`~h7  ~~y'0,HF u7@:0v2/~~HEd~*z@ b %؂؅^`b8dXfx_R`(sVL0A0Oȧ ݀H[W$ `}g(@'Qw@: tu緅[ x~S2n`eH'p4 xP$` D|h.ȁ퇊|C $x$w dF…؂ ~w - :PF28E~~xQe38$θh9~Rj0(sc N0C/@`  ·@ H$t(4@1B =`749ѓ;=y?y9 9?ٓ>@H1pUI1`-NyBii:p>7hVYCh>ɔ'P!iImegIh$C@:pJɔg9WfP=ɖADsi.K1c _v{ivٚHf`( sUPM@1@ p ) C} /w2iAؙٝ Yy虞@pa08fvZu(P ʰ ̰ r l A 0q:ZzJF`X"QIAc"47P p 2:  p9 jıHJLڤNq9PVzEZ pw  h p?YP|j:Zyē$p1z$+ j6:Zz2s,* va/.b66+?QzȚʺڬ:Zzؚ?ڭ:Zz蚮`jdN*ѯ [{ ۰;[{۱ ";$[&{tKy02;4[6{8:<۳>@B;D[F{HJke,KR;T[V{XZ\KM;O۵b;d[f{hjN۲kpr;t[Takz|۷~Y8඀[{~0 ;[J˸K۹k;[+ۺ{+;[; ۻ; {țpyЋ̫[{A;۽;{蛼曾۾;{[{ۿ}\K ,V\l|< ,$ #\(|,+0/4|3\8 7<|;@?D|C\HGLl'LSVGm@-Ԫ8 :F1{ E[ Fa1:)&MWFM L6N;< R>T^V~XZ\^`b>d^f~hjln>J =tPxsz}~tδS ~ 舾>LҔ镮nϒn$n-礞>N|E"FBG>+.鸎Ǝ쵞Nл>ȞQ<>Nn~>Ǟ$.^n뉎$Ʈٮ} ^_ ^O .Ůٞ*#"..7o(; ۮ.4OqN*H;T_MQO_XOB_DYKoXfAU-or/d?^Vc_zo/бN8jy onlOR^`/>nO^OREO<>?kMOR/G3_H/C?b?$O{OoO@ wPB >Qb-^ĘQ=~H%u@0Ò&MS3mXN uK(U$JRҠ?>TR^ѕ-bjX ǖEK1ZZO܃g钵{l^Wݾ=5i߻| C5|ibBrEWdʕ-_ƜYfΝ=ZhҥM,j֭][lڵa[n޽}\+nōG\rę?]t걝WǞ]vѯw^x򣿗G^zٿ_>pǟ?t}$07D0AdAS( )4¤+@*Q4$j(N<5;LD%i̱(U1fW챤LrpxQH)E#r:#oDH[J *2EdK/d1+SGlE,[4;2j6M$<=%7 uS=,CG4G} PM+4B)UDJGi$%R.-MgRK"1W=GDJM)S{ՌZ͕WQ0JZ-TUOq]QZ-]AUXW%H4tEZYn-vmSפ` eq*kw/ 8/Udwq%~/6:8Pz!Y5eoMƃ7P#VӘ7F63V1$dM^ޜud%4dU>|Sfvzya=Y{:iVl'{M:V[˦,7M6ޒL&yty矇uz'xWg?|#|ׇ.}߇_8㧿~?f%)@`@6Ё`%8A VЂ`5AvЃaE8Bp@J Ѕ/a e8CІ7auCЇ?b8D"шGDbkx`Ob8E*VъWbE.vы_c8F2ьgDcոF6j1 ;PKePKaUIOEBPS/img/clrnt001.gifRLGIF89aU???999ׂ䤤rrr***FFFOOO 蒒ddd޶@@@ >>>\\\ hhhqqqֽlllbbbCCCWWWDDDBBBttt...&&&===444vvv777111 ʙ222$$$JJJxxx666333Լ~~~ %%%000XXXΪSSS///;;;KKK{{{ RRRIIIAAA888---www555___ɋ|||,,,ooo}}}fff'''[[[MMM"""ŜGGGzzzYYYpppkkkZZZ:::+++HHHmmmggg!!!TTT```QQQ)))UUUNNN(((EEEssseeeLLLPPPuuu###VVV^^^yyyjjjaaacccnnn<<d?t OC4lGmf Juig G0 .@AhP6Q%Ѥ&d)ZRndjGzЪ"D+BkVZY-BfR:el&Ѳ5@к ]k5q+,tylHQ˯@fQ˯vZO!%> _~&CԹrTaN2f<1GLsP;3u;L mJ% ͠r  @A-q>RRWKA?QZd*IFcMٗ{tP633QE-$}"?%Q !?qP 8mTKRm;xA 9Q)>(M6sc8gX 8gg1>NwQ;AFGGhF u 4A`B&%H 2p@ H3-D|DRlwk#Ҿo/#<YC 'C @A1!nL`#'C7L;+Q2 bjI 2 c !<p,:0p`@`6'A?hjB@V %4IXHyۉflv4\3\, 0?@ zx3S#6M:#OWr^%EwL P?{@}PObw:;,@Ch nuۡmw +!~Dž 7((c%QĤ7yz;GLa0 4 qb|oϱ 2-?!e ݂qe  S~? @h?M(|gJ^ClL`0,عGu@LA /` Cuh|Bм `7 P=r@?4 '… A)B2J-b94/<rQXdcqeA??# # iGxG`|rP ҄pE"VJxi1bsZРQGicq!`a]Ay1l &D``!vFċB8D~0d!tIԢ :"Da,L`(p@3J~"hA5d agCʽGtЀ%HY::  U .T4A @B 6y@ $ iL ^A5`[Xα HZM@tiG)'*@0iA"!7oD[0:bj A} a}'p MGp@ +@in@>( ]`G `Y1e% E10@ q}p )G$[0: (v)07%( 'x()>0@ у UBDS( P(NX UxV| @ tMH.o&{nw(r1.!bp @& @N@]0 1U i]8z4 #( Ic1&TȃLe cDH  $w焄 M4 P/" TPpp pC 80YP{Q*vH$ 0q- n"a:`yHZ0hwYP {@{!yw zE$I@H2Pl^ A @ 7>N .+=QhQv@  t` 4P~T @  `V 2 ,&nМik 5 =s f8` hPef/ 0yw8`w =>9'`I] P 0ssP .S:C 8Ay*q!P Ap i녋 @_0 PzXP_.  1 U =4!@0 9H ; 7p@` FE +!;P  4  0 q xP_SP {P 0jC P p0 #m 4 !Y PJp G  %G<`r lE{a ` /p À ]a *[p Vy$  8+pKXC*2pAtJc`v&r^@U *f P } QJ%1ϳڡ@ P ` 08-*.|0]5^ -@0U-% ՠ O? U@ J0y>^l@Q@0PP~J ? Fmp&f4 pxa/pxF@1v6 ȿڡ &6p Ϡ m Xr,b: D q8* C Kqa᯸P1$@a p'^SlUl! 3 P$S i#0 f7Uez YfY+i/,ƹz03̟h, qt1P h@0{ v0 ݐ {( ʁ0 8p <Tp #P6*@0 +=ѐ A gH$r& LpN/8? JP 0T@]L8[0tإl ) T{VcFfE$˦p ,I=Ow 1 |T!>&@ ȖA )%)y O L Y F`X ,@<{P1Mk&l6{ܻ,p$P-]V pT;QP0xfI ҊLҝt).+ Xl1]:?, 0x}  1P\:0x,!E&;}2倎1u+ҊWN0UW%Zǟ7bJX\Rp״51o3I;}T^gZZ㲵ܿr]hW|}W,qG%_u xwZ,`%_7%5c n u$hgVyeW^-x=D>d MVޗcjfaJh8ݥnd:*z60k:?\\XY0`p 'umԮ~"{r/o91?*?U?r.w7rts?):C'(Mwz!6En]kװt_nG~*>r`}w}~~#`!~ x@&P3!ۉm -h?1Q.j ;]4 Q\P+da 5DAq@cC7RaP+dd#HHFRd%- I ~/IPRtXR]VD(ƅXe-myKK(e/}Lk}/yLQDD&.[W#pe3yG(f7L S.f91Ӝ|U9ͷTs6) @g?OT%hA O XzdFThEP@Am@%t `PT+eiK]RT3iK3@=g=iO #iQ% #{G)ʲulj'Jv'bm"c6=nU Ʋ]rnz&3w-j|/.Wmi8S pEÆ8nK"x+Q/NTwp?G($p4M+&s[֋z\umYv+tBMȑ e}2(UʾKDtUA\Kn@qeN';T."Bem@Gnή;E.6̮}׭p9^_%|I,>},6UыH>EDG4FQVAP#~Or`n: Q/_yUppDTX~}_'N=) '/__֥ (yTc1@ȀRv!8Sx  `(gHˁ@<BȀ|H>:ʊ;;JJDx Ѐv90*UPp"8nPMP Tx)Af^hH,X<0&2J!ƾ-i,LCSHV;ͬ84Xv(`,HlDT }A|dJg Ǵ̆;X0O hz`ASsϬ(rU]p/~FF@g(FDPăp(J;,p:Q1tȅI`>0ĉ?0 QX (%@M1X}P/H6.X?Ȕ<( E18X1"0SU 2= p,Qp;-E~њ`w>~P[M,`$N0?`0x*xq,LN].2s"V U 0|tVh@49X bF(;KTCk[+9ЁP1xq-xvŎwxyeq{5Q@?:FUTY(ن(Pn 09崀eO=1e"hwEZJM>;Z-Z6 7u]")Hs({=w,pBs%ڈ _< G}!5z հȎ4U"F0ZE+@W ŝə[\ʽ̥kkE" &039`ֵCO,V(C8 5)˝ ?hVX!@'*[}^HHɅs8μ(؁d(  hGkle@hzp2<W يAڪ ` Hl:\=ԇtAȆSCH` n,]Z`p_m]LXU%0.N@_oa c\ 8A@5Q`H?|6iЁ * _,WbHI< f` 9pc8696:vc ?0/f\S/w'(^xgqm؇.0 Fvd*b,6_߅SD_U_(1&0.0&8XP8p7NXe Q-UhWn_YF`~&_@i (P*M^F$HֆqLHS& gF~djHijY[f޸EaP/ i)0aUa$[g;gg~΀*D@U9؆H8H08h~hHvH i[m2"Dp_&(t5xBL#jX}fVj' $؀ X!P@`H'.贞nA2&j^jlm&mFmfm׆m٦m&ku"؁vFp+8X.ɮll>^~؞kmoH>4K]bl~op&hi^p2 _pp2pg ] o hnnNfg(AN]L_T*~OOnponn7q^vr(`ߕl,-'. s p3'Ws$GpW~3-sx3Hs_01r?"'5OEo2HdI(X)M5NWnqq/!4??VX0WfH/nYO[/Op2Gs#/qTOvj^vW@g?E([od@bAOngRqaW?uAvr'C7v6WrF'R=pwJ;i[E]UFP7(wQt(FtPta/RGco5xUɿx.+X=5y y^l(r_uhR8s7DGvfRhn\skozgwz9zwWWσ>0-X:pQ`>h$H{TWW{XL/G 6xRXM'(`OdR̉* E0}o)H Ir؟}k[H+@Ff7@GT['&L8q"H Nhࡐ ;İ&)ƿ7r#Ȑ"G,i$J <QdQ| !+V& #v3ngw9#iD?X r;Q$bDHiـUHjz,=8[rK/ASFCX-8x$+|@6G$H od$6h M܉ͩ,Ʃ %ֈACf`C>2 #t=P6ei g [1Ӳ&L"?ٌ!p4!94J "~ LH@slO8r&s3}W`Řw@1`lG0  ?0B -Hx6\)1a @&A(ltN:/IBF7T6wpNzTAFO (HMfO$0/H0۟" s}w{w ^/8ʽZ l1OU4`A]mNR)0## ABq7q^BP"2'D5x@  y`o] !>7 pC8 Ka?R$+iK#8?.!#8A!x'ƠPF8$x2F<Vp! e mO2 =`fQ =x`ͧUc0AG2$WtĬ2u$ (?@B#iI)3Qֈ/3$ Ult$$c8CuJ]:p6\eȄ x`#0eɇ-bY&K.-X-cg,u*SӣgvOq-2 T\7@7`0Fa;!hA9PIeuD0 rh.ecf-(UWXy^'ֻ!xp(#h : >(!7P?@!G!hcxET vBFbUܪd3K*^E^ ';?h+DilxI!` D';(E@d Tȱ3| 2+F5e9ՏG o(TaNƂP% (xyDj䳊 t\Jz8Kj&\ (? ?iX>Y/t0L$ G;BADᕁ!]Р 4>p"( "jӁTH)g]m$ L Ѓ\`¶-o?8 8Įll!aSy1Hb̑;qw3RxMF#o$; (D~4HZ|fmY @+^b aaxu*cO|m, Z@+ěe "莰 o\nT-jKZH8_bh!:!ԧ@%<HC iH$~kX"f( tfRvG$4 цe `rPmL8Fk^%;)^uО݀=ψK"^b>?Χlz#Y0?q }:7rl$F,%7a;7#%Aoṁ&7{B_BS;0E`4UJW#WH0$>!U Q?0p$n$DF W\@60=bc7c1cP@f$cL$M֤M$N$*] @G0"p$,B&؀ $Pb:A D|%XX%YY%Z8 X]U]4H ,)?ըi r.76"YT 4 0\N-F 8eVe^&fffn&gZf[[6Tt`AdK^ He*7A fWaT#GLfg'qgq~foJiJ?B9QaRf*"1. *؂.d@-'iOFq{'rvrgO4sB|?|dunkal2CB?'0#}zLv%<>h #t+C$dk :5@P Ԁ(X&)L$DB$4C3/|e304Pz=# @" , 4+1#CNdA1`$*ڀ 4j8DFN-V*|2\]xBCT'|3%X'@8Ȏ@,VcZorR.&..n-hp ؀@fiB$!s +Aâ%֮.YeݽBn#F(/&/fo:D*/Vj&:>,FoOL&o&ro$z/昮UƯ/֯///Yp &0/?t9G]WpXQ0oEiZU. ap 0 ǰ 0 װ 0p00 11+ /)/`GhA1BȆ ŃRE =` \@ @مt-Ԃ 9 `4rTE΁L TzB&@Ft^`]d6BEy1=+LA :QpI@2$HF,X@-,e W(Ttt2Dy9&GȀ ?2GX>sC&D>#P.g@FpȢe F mP(d?Fd 0fF + 4xE ̢ P ?L0BhL?d qHP s1G+@F؃?BwAeDAlB+$A B,5Fhh$ T?pD L94#CrG04T DrF9RF0/PrF|s87@? A d P@L@ ,-,@tDA:5 pk NFD?x1X=r*?8;?<=8}DA@g,+BD673L?<8̘tt1(3"?D( @#l2p @.D)&B'EC+܁?HA7,t-Ci1d,= A!t74?%t3l",B'-??%",-,B `?z3A0tR' !D"?|w@6H?M)+p/?XL?\"9??  L0ԵŴ%^.@LA L+@DC3A8Ht4h:grgH*L6@)(9l @w܂?8@0x,ȃ?F0A!\G%l\*0&DC(1+@) 1\*$#.3 4-F T,1#x Ԛ)5@-W)L48BCa$1(B@R`CCA1׀?%((8$<¢ 3? p*I'  ~az"ϪahbXF?EN'h ^Ȣl)xƀ/>cȟPy4?14Ɏ9LTO\!hN(O_ܘGb΍DO@%Ι /l7i_OSP?g0Pz @8W l-Ea;A!1^d1u`(p$jPBD! Fo|;J|Q$#8\#8XbdܒE,m(hCcѕQ8?.HA2`7x" t,:`+\` DkA(HU,#OxZ<;{PءIYJSv*A29G +-?. $Z!< TE̡w# `@1kLaI.,T&[?֡kH ?d>D P)J\>V7^9`C8B!1 nЂz b8#:`6(pG R+XY֋}F94!=qBD0 Ђ Y< HlA -LȾw6 DP@A!V5 '0+h4'"Xtof#$GI0CHϸV! l >F"7 L!h$Թaď*A b- XC JTP ЁCh`?#^E8`D*匆y%yF ֩$\B,PZ)8@0>#(cj@AB("TQg:E& 7 Cn@THb __׆;$%zxID3ƀ`A!$@g2'Љ{z L@2 `av `F8@80HX 06D ̷i6Bx8#H 0PLFa/+9xPs$H%=r|#01,]IMl4A Op(]GeC`Hya Ua 3X8 ($<?^7 kX:׼}m}C_zEjRW=$[׫]^/q{ڠQ>aɇC|?GQ$ _~W~_POȈ Pozѯ"x30&P;P.C8PK@Sx/Ts _PAg&oPmvw/ ;PKH4WLRLPKaUI OEBPS/img/usingDeploywizard2.gif)eGIF89a'{!!!)))1119999BBBBJJJJRRRZZZZccckk!)91R)9JJckBZJcZs{!Rs!Z{!c!k!)11)k)s)s){))19999BJJBkBJJJJZkRckRcsR{R{RZZZcccks{kkskcsscs{{΄ΌΌ֌֔֔ޜ)ޥ!11έޭ)J1Ƶֵ罵ƽƽ)Ƶƽ9J)νν)199BBJ)ƭJ)R)R1Ɯֵ9BBJJJ!RR)R1ZBc9cBkBkRƜֽBRZ)c1sR{Zk{樓凜lƄֽ{ƵΜ޵s΄֌֜ޭޭ޽!,' F 2(#@|Aŋ3jȱǏ CIɓ(S\ɲ˗0cnࡃ 5xؠA =5laQ$LXjc!GJJիXjʵׯ`ÊKٳhӪ]˶[O azB *eܿ LÈ+^̸ǐ#KL˘3TH_?fJƉ!ak&LM۸sͻ Nȓ+~УKNسk^]%L |!^ƒ"kϿ(h& 6F(VZD9ІvPހ]m*'Ӌ0(4h8hc}1dE-)DSH6 }-FYTViXf\v`)dihlcZ4CL0 ̞|(hS zU裐F*餔Vj饘f馜v駠*ꨤj 5Hͫ3) 0Q@P$DbH&6F+ 5Hͫt I 4@C뵸EoR+ko=4lmv{+0 kdD o}fwǣ?Dm<$9L0{C0$ OLѐ^cANJA[tlXў2Ә&C"] gɊ/1 . +2pT q; AzӍzC uHmބ7-w}N߁7ܒsmkꌐzd/666}Vkh5ߋ?K;CA ys7?J+lWP*# w 4$Mݾ*/> 񣟐VC AZ08? z GH(L WܐoND7 = @,`Go$Л(BNn~_gIT(>b7xoQ">36QL<ܖE8Vxb>D/# IBL">~ѰߪU _"=`p[cD$Hlt#ĊXqp,YY2Ж.q9b,4L8Sw<&.협Yrnԑ4IjZ3$ Q+pВ?$(DHV@ox7󔧏g=9GTSg=O <j{rehi}*4B5цft(H9R(MJWҖ0LgJӚ(e*Z IA2qP 9%`Sń';KPʂs˪~Ăf*hZV,pG +)׵ծq]XUjQzԢ8 `KMl `bF3 e¨R x<$?Nӷxr-ENMm_T p vpM-r[:.m\2Wͮvz xKMzE^w6 2CH(z6yBҚ6q}K6wn ϭpr[]bwEQY.кʕu1\bBWHÍzgL8αwSo9W_.'ސ L݀ |fnW<7tyify`&mO69n&<5kbrϜUs󝽬@ۙ;NhѐP4O|P+ \,<w67F47!ذ)'#钛(OW^Zj0G-4_g'Zπ@ЇN"h{[Im`CJns h XIȇGm`NhOpBxϻWH|*x3^[ϼ7{GOқOWֻKOʠȽwOO;ЏO[ɏ'o{OOO8Xxۇ{؀8Xǀ؁ '&x(*'HȂ0284Xg:<؃>88B8DXFxWGL؄N؀ ݐ W8 @ Ѕ PsAfxhWp pd/8(prXo x p@ {B{h䧊1Ȋ2xЅ@ o P~ߐ sWH~HgNJxfpm`v @ sQ( v lP،JϨ׍Ȑؐ i~)Z_dPgpn`npd` s Q؋p sg$wA ȍڈBFY$EӘCٔhGSVɔCrZ)OU?C0FPD@>@0(`0 / pp;yP]YKyII Y9TٙiTəٕj9Z0Q@5`+.L` ( p`yٚ DyyIɞiyxeZC9@3+(p x5ۀ`PDP ɓWy9 Z)≍() W_S?70K0{s) ) 9 ๥ٚ^ʥi%i*)dZ:Wd8 jH '9$ ʤYQJzyZ i' Z)jRiMe3> *7:jpڪwa`BJ/< Jp j0P$TjةJS Wi铗*ʚZLڥgʭJd~fYJp |)$a$ pNZS` i ذC90zBPZĚ@Z~ Gـ6+:Kf0Z`v|Za_L*$-{ ᗳ1X{ص;磹YYK{۶nn;4v,b|ʟDKp@A˸K(K K۷۹$^&~(*,.02>4^6~8:<5>B>D^F~HJL^@PR>T^V~XnO\^`b>d~hjl~fpr>t^-vz|T~>^+膞芾>P~阞.㖾頮^>~ꪾ~>~N䵞>^YȞn>N^؞~S{%).^Na2N^N⩮ .^4^+9.&{>>oFq'.~ ^&_$~.0/7%/ 7o)?2oBO1FO39 ^*@AB#[_dI^g/`kXmoG?'-j_~p5h59on_e?/b?ax?i_GlnoOoD4NoioOߏ_o؟;y1/Q?6Eɟ7z A.,Ä6TƊ;>ȍMDRJ-]SL5md-pXgJ(E0ͣK>UTUa*QVbeحdŞEVZ(lW\uś[zX`€FXbƍvYdʕ-ӄ|YfΝ=YhҥM }Zj֭+v[ltaƝ[yGoB| C,TIß3B}.#\QPAC3E7]8[3TdSJREuU}uVT=uMe|;q%b\\LXfYSDu i]vXZ J^sO$Li]QK}'wTgG7/YnʹuZWvWՁtV~[]sT.~Sb])TU5xK%V$%Jd_]&w'Z/\.Qf1/ JϞ>jܳ:k{Mzkk&;6F;Vm_mm/;pA|p_kogCۙws~$qwJv%/۽jiz꓏Jx־}<ݑCc*)gzg_|)[Dy!'Q^(B>ը36FO!Q^ (#Nb AUP\* gf%p>+U.-0H! Ԑc ĠwAaC /|NICNyЋ(DhOď1\L$H>5B0XXF' 0S( z2׈FERb5Ie:R45Eiz|L9hLr  e a=;5nRg9jPl.T,ςӡ܄DɈNJqc _8t`%#.pIIcb3NKN7QI7i0P@:X.gD\nJD%?zϑ*iʘrH)”3"=[rVˤuvw].镯e_;EaMb!;YHme1YhgA;Z͈}cQZݘEka;[ތ5jq۵閷l;\݊q\(]s;]Hםuݫ6:ӑwś\nAd4j劏#fLi{_}{_EAR2{y0*{)(I ctՁ`gYL+XS.O¨+o4L) YiQ#bLV7ډ[^0aZakL urk-l - ưd z`~\_ldDr4,\r sy3\9KzЇvmhuiIҕ1[MozmAَԯ5WjUխaYYzeq׏[;hS}s}]'? [%+MSqq~/pR[lbh)g| ӽmiwᆷ1"Ot+*Oj{GdJxB -xRʑ<+]Lxo m7C"^|b>P&Ogl#wU<-Hvj|MT,̎G)UmMZgoIϛ5@IpBogulM"2/}SVO>P˱ usܓg'w*:56<s&8c lsS~˻EAdedFqgFŠj|/jƿm+mFpq$G3stTGcvwGyLzG||}G3 l9d:Cۥvc6k6c; u;6k:8iKoȌLȍD)K7<| r0hJ)U8)|*&b\Bzɖ#.7ȸۨ92:K;J7B83(#-"8.L{Jc' J6i'VZJʇJ[jKSdBwqcKtʷXJ(B(K ,K'KCIqzܻ̱64:èc(*ͪ${(!HnzZ!: JN{;Zʫ*9[<"()r+@IeNSl #nȰ D\,$P!D:Eule Pֱ E܂UQM 5QhDeQ)-Q}QQ[ %R##UR`&'Rǐ)5= R,M$R/}PE20EӶ5-qSi8՛3S;9ӻ>?ԹA55%DPDeltGݱHJETeM%NP-P%(STUը`V SZ[\u- X_`a֔cEdU^E eugMVfmW-P, hmհ-h k% lmViկ(WIWo%Wi5v uQzuWy }Ջw5x ưg;WW(HXq%X~m͋7|uXeXxؓػXoYYV( ĉWY58y;ح4qِm%\ ]8m9YYz3نHјZ#I؂ Zl7Aډ P/ٰ%eYY@NY$J\ebښeܦ]ܖەm< [۬ɽʐKJH %}\UP\%X]ہMOpLDŽ%e&δۗ#䶖0ݸՅ]]e]u٪-PhYݜͭ8ЭL|Eܨ^}^mHou Ŝ̵u0£^=*Md M}_^U˯]Z%D"۔0_MRVY^eZma VasB>mF  J]"N aU!(`VC]ܦ= X [՜'^ XX-.a01)^+56T p5c3rcc+.,VEfFvGd㙍X%a/]6NOQ&R6SFTVTVPvW~ȅYeG-Y]^eRUba&aN_FdVf]fvfTc8լiijln lfoV oh.gHs^pV v6\ h؀|}~&6FVfv臆舖艦芶6X(&6FVfv闆阖陦隶靆i&6FVfv꧆ꨖꩦꪶꮮ;PK_))PKaUIOEBPS/img/OracleProject.gifg#GIF89aqod~s!,@H*\ȰÇ#JHŋ3jȱǏ CIMz˗0cʜIsʛ8sɳϟ@D)TH*]ʴӧMJիXjJtPÊ U׳hӪ]˶mɮjK7Yx˷OiL]+^X5F+)3'=ܸϠCT!i .84ǥzvʆ/_npoߢ N<-llLuJ.߹}c̹\=9mԯ^9sUO6qosn!wx& Qy^{Fya(v(2,~WaB/BAZ}6#u"V IbBn-6䓊#2އPIIe߆ }nhfvcYfPj#zs%{9rzi&)(F&碌6TyItwڍ7f3Yk:(v説֝;E:Ч檫UԩB*k&ZU *F+mDRl>;rRM+-ak䦫+kt,l' 7G,Wlgw ,$l(,r ,4l8<@-DmHlL7PG-T'}m \w`-dmhlp͵Kmx|7tun'~7S+ngwθWWn[NwYOޔ.촿:^KD@z/?g^< G{g}Ͽ=RLUG[ R{_/‹̟?|{8APw.HG&^LxdfH (yp\2L Iz)(L_z'ш47 jB!JxBhnt!%e\Wi3p=~-ID&$~~">xep (ˌΑԃ$Hv?K +gD t2a a ߈ĕL%*cHKƒ|a%wKbD\t G-щL5GIF_HF*&I/.)Hq撕e9ݸs3ĥj51c-iźd)3>/cγP/ЈF4LfOzQuD[s/1e% ꖈԦ.uI=jZ+\g IHLf6d1^mw3aQ/96]lW+tY'W\/ζ`7z6ua-n^[/ _ێ'6wZ,vt^|nb>o*ԶӚNEӞ ne[< gY@JݸfG:rтw ]Sn_Td?]@?Xrp);^6/+OϺcz[[U, _|Jpf^\_ns_K"M}&{Qo4s;K[x/:Й#Gă󩛴nᲞk}/P~Ŷr_gAZTь7[;ݎ5mއp=EEɷCAx dzz {0gnjr5G$zEP'~5r6Y!L8XۣWu?g`h:XԬ*/z.:.CƗst y/&IzoSEM6Y{ {h"ytdeifڋ D{LJ+MkwZ {Gl8)h5C)AZPٔqjp&01q;s)sr:{=HiIG&ʴhO .)8ٕ[KS$`˙ :;|Ҥ+WڡMȕt[yHhֳiKՖYHYyȸiH/˸쥴#8l S1브H9Z)aKȻ:{zᚼۭۼ;cjkٻڽ޻K㻊k绬۾ћW ZKқk̪\z, ⢱"KSII23GI$\ z&8(--? G .-.*FMM=3Mͼ\J-YLM.]d}Z#=ckMNPMrx=|'1e/ls] -ӋuE4!AHt\ҕ}׈ב͢mKӇ=ЉfHُ:zڂMڗٙm׮ ڴ-}PMD |ڢ hiNMn1}/-Ҁ',7V}ؽi-7 {aթٛ#ҜC4>>XM .Xwޅw>nTm{QTK|A 0J<Gz<àP\hƅdl&N\\G^xb|*"Nz|zX\V~l'.IO_yA^|e^-W-~Ýß,衼d~flink./裊rf˔ |*~̛~4Kkk/[Έ^˲ /5/b&n7k94W}-Ge*)KI=úbyGp%Y:K%XYOzPn;̮e ~Wz)9b 9$٢C{/ۋ.>k^+E;ߚ|/V+s8?gɱQ[ȹwi2?4_RIodf NE躮\bpol_n_huw>.tI+__xmo}yO/loV]Yt?AWx߁ r Ct_CtoC΅Hw]/A;;K3lnqW~9.CH"r~{lʲͨT:ɌnIk/OF o!A@ DPa:|8bC BE7fH 7N$YQ @0fk)@;}JS'P3kE PG>BU^ŚUV]~ ̞E{vAfۦ6{J+Ada˿ExRpHL4TJajhR^*9)N+G=Wj֭]l\k߾ww~رcōB*_=z񪢧6xg۵܎KفG^sen+|~搩Ko\]m]_so=xwwj>ym+yyVGz1/h7}gQ|_M?Ż~g_J{D`R@OUVЂ/ fP~bEx,0zKTЭu. "C̵yUr8ǕP A:dΈD,bh8y;f垸ѭJ r.ʰf"5;^Y(F6qMaN(DtQtJdb G4|'?aR,AgJ.񐧬$!IJDщ$Kil:t2L^zl|c 9iFDL!:vdg>hOpLcf?*Ԡ+A.ԡkC%* {D5Jź]whHQtybL8Noԥ!Rʬh@ԧ |,?E*^bɞ&թ\Y*OTz%:jU+[R,fX*R;+@VuūW~k}X’v Xi c!;YTIe$4viV:)zݬiUԪ,&I?mml{Em`}["QqW.׹[VO͵nv ݡU4,~7ExѢ׽Eiwj<صo~߅(Wog-]6<]0cG՚b]Sa vq?\~nU\غ-vsaΘoc=6mL9 2y$+Lv({U_-oB~%ǜf5wifuךg=}]UA6tRD7!^IOq[iMӝf0 jG.u|{fT#muZؒmWt׮Vzak^;Į^vE66fzОu}%W;~v n*ܓ5nu_Xܬneoz|ۻ pt p76[W}-q6,xA.;u@UrC'pUmߙ9o>OWX>I4ZD[ -F_`)[$F\4FCVftglcbEO;;mopq$r4sDtTudvtwxl8ڛz{n GSƾdȀȁ$Ȃ4ȃDȄTȅdȆtȇȈtH{H|ȏ3HǍȎȏɐɑ$ɒ4ɓDɔTɕFhtɗɘIhdɚɛɜɝɞɟɀ;PK< l#g#PKaUIOEBPS/img/runSP.gifG(GIF89a3f3333f33Tff3ff""")))1j333333333f3333333f3f33ff3f3f999BBBLLLLLLLMMMUUU___f3f3f3ffff3fffffffffffffffqodwww333f3f3f̙̙𬨙3333ff3ff̙3̙̙3f̙Ε:33PPfff|3!,H*\ȰÇ#JHŋ3jȱǏ CIɓ R\ɲ˗0cʜI͛8sɳϟ@ JѣH*]ʴӧPJJիXjʵׯ`ÊK,PECњ]˶[T2]oTJ2ҭ9eᙇ*^8q̻ ?frJwJLodȚZ92Ө]x++Ypl̦s-sש OZ͓c&M{7kφ͛س|.1rũ{\ytm6wMέ^(`kyuFhrHuざ`iQ8g|u` "h(,xI0(4h8o&d W:0.W8U ]-!EkAנPKa"{dA)hP 7ц6@& !}ЇXBtqh"xF$pg:ڥt 9'jR=A1>?L!yH.no$')91̤9Q zC:4cG&Y+IDJ d|P ģ(IiY:Lf#Bq<&4kjZ|D *PaO)(Kd.3lf*ts׌<˗.8@Q8H\$AS)PZRs( yJ )<Xa kGEҖi$M^#8}iLsӞw;E=;HM)"{{RJU1xC]ڷҪzѫ?+* O,{ 疎yǫs켇>z^̾EАi.ҘTz8ӠUo5 E>ggI?tOXɂʨ,lzֶ..3m_^MKִjY[Zٷ<%9l#{Xebq`a3{t pnPo;e$okooWR݂u  0@1w=Mn߸.oXƭYwT/e-svx@!Æl[jw/zZxO؏m@H7yPX^Nxݹ=RE 5|N{5@D;NiՠwmOW5` jk}N[T5ȃԀDw~]s}rj~0SئHc6]t˗8*ȃO uW[2xh#Z_g+@ST*Ȃ)Exl=;DRYR86jS{6Iqԕ7(viaJėbl.AJ3$k+Wikܞkʫ ֫0i#|7IZVlpɇAuȣ|u\clJ(R ʬ,v1$`#o@7Y tH7q[;>~%ˇ ̊@l$`̏lo՘KɓL`iG}}_u\mZeZ,>%P͇NJ00 ݩGShCqJX:Ҭ Bb@M?0F-<7.'}ۺ}yR'ْ4=g-]?P;;0u: }ʬ ,_Fu~<= UM{f`'Nasp?75_|T}_V?\$EnEN"x9@7Ol5/q}QdM D@ T`Ć!>XqD=~RH%MDRJ-]ģ +\4xc E|"":DZLx#R9bTU^ŚU+˜3$ #X<YʓG2VӥIśW^\e+#ك58q% ŋ  QDNn8gf˔Zh]O%j֬?۠iLZn޽Iv/_7^e͝?~8aKQܣ^|͟G|GG ǟ_hηP$=D0s >F "@A /p$,C+t;1CW4iCD5?a 9ÊvD!ź*s>E#,Ż-舣8Đ~\) R2$/3I"8hC StJ3l #<3L? 43sQ'40BS.OMSR%ϴ̡F)R!@d!GAT":5,3l5,ܴ:jP<2P5X Y RJ͒K_ X>%a;1 .Enp6*TyŭθW7ob#CC@`R^ 2(֌c-L]-8d V`cg)V58d!b9h$p;:Zh 4^zhg.zj<Ik;:'fײL  1'l;ŷA ,P:@5ww}u뾒L1=bq璾|mF-"T 4@̏bl'Οl/rG=#aP d /xbf_Ɉ0(0\1N2s 7xV`% 6Z\%qm<A"XA 0' *iW}apx4ʭ$"Q֐hPbC` [ 0эbQrwǫ1n"Y) ѐYcsF2 w#vzПO+MSNvR3DSTSQjO*VvYA+O}ZҶ dNVXhÿ́.~H"簏e_;EH,HzuB}hD%ih;FQzcr)DOcc-0$(QDAMX[޶M8=n`V',q[h O"QBP(@FQB-N+WnھRJ- 3g{"=ІH{؃ r ΞN)K`~qW 0ڭ7e9<4($8>@x}HJ 3flZy6Y|Ы5UJ+"P/z?M&kw\VŅtd<[RI\cP뻽R \۝:uiLTDrX &Bw ]''rȷWQߡWVoyg^ޓ?}"-W|Jmҹzh}p_*w}uyIDJM&^Lp靤D;U ^p Wf/ J/ݘJމHB<8fq ]x{U`yyMm ;1|nbM<nfSkbxrJ5_Ҕs2<ޔGGɞA=q;%e>=)|$9{QЄ>+?dѧu4V*vJo>/gweoicĽ.C߅k^ƩzVyo۸?cOw_ zSukrq&yMwp]CZTF{S/' S]y{<(8ٸ8v#9w3*{!K>9310cAy:*@\Ah:1:!s!Z2> P6g ˻D1 )#5K%L@)+Z C , 24CYj;<90ԭ<<<"FB@&l Z= 2ıCwyYc|Dq8rab5@6dz>MA6* 7 􃴔˾ULˌ{ӿ{?{=\Nl@c0|0 T1 3BDhE1\ {9k({|YBC2rD$B)5٣0AC.G0Y C ,HǃPC8[Hy;È<:ɳF˓BAFCLt KI<sL#McD`cĵCܻD\IKAlrBuA9#|6I\dJ?q;/wlA l13FdzH]|?_78j̰u38"?IAB5+EDEe.uGS>T#JŊKTȉMNP6%!SQU@eV%TUV|YZU\ MU_u]V b_E֚9eUfuFhiI5kUkVl$nu9n<qo5W+t eWwWxVyVzV{V|V}uV~]VEV-VVUUUUUUmUUU=U%U UTTTTT}TeTMT5TTTSSSSSuS]SES-SSRRRRRRmRURER-RRQQQQQQmQUQ=Q%Q QPPPPP}PePMP5PPPOOŽOƥOǍOuO]OEO-OONNϭNeI]JteWfMVUݏ duؕ݃x]\ڽ]]U]H-HGG%GFEFJ]^ݱ^MG _C_@,_<<9L6\_3l|_&֍_051_խ_ +`;K[k{`ӝݾ f >:n98764NW4^56W6~WWWWWWW W!W"X#X$.X%>X&NIX'^X(nX)~X*X+X,X-X.X01&263F4V5f6v789:;<4`;PKgL(G(PKaUIOEBPS/img/deployMenu.gifr GIF89a """)))UUUMMMBBB999|PP֭3f333f3333f3ffffff3f̙3ff333f333333333f33333333f33f3ff3f3f3f3333f33̙33333f333333f3333f3ffffff3f33ff3f3f3f3fff3ffffffffff3ffff̙fff3fffff3fff333f3f3ff3ff33f̙̙3̙ff̙̙̙3f̙3f̙333f3̙333f3ffffff3f̙̙3f̙3f3f333f3333f3fff̙fff3f̙3f3f̙fffffffff!___www˲:n!,H$XȰÇ#JHŋ3j1Ž CIɅ;ɲ˗0\͛8#ɳϊusП TzNDu9P"Ӓ-^+ԉ[CJVfTE }sZ^Qju9֫ݯNN=+ף@U~̫qh`{p yk|+ng˙ yS̉=CcVK 9jIK:zefQ^ Zn`}5㾕[tÙG嶓ޗxF{=9qSt\4aF+%b ^y!6T~t!%aM\reku&u!hOm}0(4h#B <@)DiH& FPF)TFUf\RyF])d~hfbpƹc8TgCw2$|EQУG砅)КthC?X)xsjI?n㧗 jfduyjj*e魈 ,2 !2lB+BkĦJJzr[JkrkV$ziخ;V-􎋫[* ޲ ,kklA!Jnm}p+2_Fj,1&y[? 4HPT!1D!0vE;D%qwMl)RqtV粨qwY^8H_CRX/z[k򕐆uĠ?ta ?PWpD9aYwHI4$UH2d?#NT>qxlƐO,*YL};&2ens&)MAs}P6nz 8Ir&5 u3r׼;yʩS,eE3S ӲV}ho=i&m!{ƶ-p߄>T MCw^nVzMcbUqݘIMR)Us.lwCu_m|c2>DIR2>cxTvjdbZWj~ٚHrzyIKcME.SX-csSWO_V6rc^Ǻ1T!=4rkW&;PL*[Xβ,2@ɁN 濉y*d.sd5ͯr󚽬ZEic4a$_Z)].`|AΎ瓥[?hvriZ2O{iLތ/ T:qFaB^•꾻atE8a{)]6d1.Nsi}psvll轅rn4'qN~zηMF[uNN,#=$ 81~d!syO=F^ɻrf49'/.l>9=ai0n^;(; {O=) j_\|ӛPo>Y+XT^4{_(7~qL{}{qe?g"F8X(*M ؀8Xxp;PKwYw r PKaUI!OEBPS/img/SYSDBAaddConnection.gif&#GIF89a{!!!!!))))1111999999BBBBBBJJJJRRRRZZZZccckks)1199BBBJRRckkBJRRZZkks{JZZZcks!Z!c!c!s!{!!)R)Z)c)c)k)s){)1Z1c1k1k19s9{9BsBJ{RZZccccccckskkkkskcs{{{քބ焥焥Ɣ֔Μ)!119֭!))1B)޵޽)99B!)19BBB!J!J)R11BJ)R)9BBJJJJ)R!R)R1Z)Z1Z9ZBc9cBcJkBkJkRsRBJRR!Z)sR{Z{cks{樓凜Ƶ!,HD  B(L0\pAŋ3jȱǏ CIɓ(S\ɲ )T`hB &Di j0F'WtƌPJJիXjʵׯ`ÊKٳbר]ۥ( [EG^׌߿ LÈ+^̸ǐ#KLe3|vifΟ~B~Hk3fШA۸sͻ NM+_μУKN:oӐ1#F_x*,a,Ⳁ;c{Ͽ(h& 6FkICfB! aCA$`b|Qx0(4hcGy|3׎<Dž)sP@AJ~P‰(ey=dXf\v`)dihV恌 wGoƝlRL O:xÍ6dc͢L(4OJB@ PMb*ꨤjꩨꪬ*무 @ ~s+ybq7;:s9M7`3 /|d i6HY啵+?z@2 #1,ja?ɞS=lҖST&"J;DkYĮ(,BP,bga@NN;Gkεr 6?H@jCQ$l`-d ? c =#j ts,> 'X 5$PXW]P ʨ:y EO#/CO٨w~Jq+cn7ܠ\7:4#ԍ[P k2ZCar5ʮ!=/?o|#j-Z3ـ91EUc.ϐ48q P6EzsၨruC)pp5x eCQCrB0'9)O؟;eCZ\g$p  00҈/yhъ̢ fQ06%m7ވơ%`?(q(/IH=9L"F:򑐌$'IJZ , lx #O8`"#<;a?T1LP$t]Lev"d^EBH "!GiB5a"XE\Դ&6߹ņ>~3PðJ8b( C@# oE#p3z $e.&̠ fb >"˄fCwvp(πMLA І s NhȆ6T4rx(XF.BAS`86 jӰ)2?->_s! II:C hby´!hG+*֘_ k;ι&n{7y =6U" !@b! kd#H6XLqX.@QH8{̜0gA n8oМA5od'O9iP<Aws@"oMV@Ё.HԀ;MVx[zϘUjP/2p Ny󛡻pNv 1Md(k${ F1a GMCtF3 eܢ#AΞpxGOқ7$`B!!&jW"/x]B.p e~z_vϾ}!_؁O~#@0Yz),_(B PdGѧp/p&} wG׀z@$D zH=byv3$*,؂.x2/\8u8>&` ! 1L؄NPR8TXVxXZ\ȅ:`b8dXfxhjX81p! !qQ}%Fx؈8Xx؉8X]vLЊ8Xx؋8XȋRȊ،8X(x؍8H蘎긎؎h8XȌ؏9Y ِ99IYɏ )IX&y(*Ɂ!ْ.i٨ Y6y8:<ٓ>@>/YF)p 85y TY' XI3(B9dY9I`0LiOR qt[ٖ4 8uwٕȗȘ)9ɏj9MYz ٌ٘iɋIYnٙ))y阵9Yɛx)| 陵ٛY ߹É≜)IٚٝHiIIY޹Й機AhIɹ( ڡ *ډ˙)" ɛy,*zXi%3ڢ Iy, *:i8:j?ٜ9b4J9C -. ٜayUJlIXzP$*]ʡ9@wW Y~ʟg*5Jjꒋڧ*:҈ꊟz:ɍzF눫**Z ٫Riʺڬڬy{Zfڭ::i|J꺮YʮxJy) zʨ隯[jۯ۰t; IZ ![ k,#{-+6K47ڍtjɣ< (K:;Nzp:TVKH۴[Ȟb[][p+٣uit1ɷs"Z+Ꝃ;륆k{Zڛ+K*) d JDʤ{nZm*[\ʣ{kˡ 닯۟E뤨 ;n: i ы+ۦj+K;ۣL{\Kk[.{Y NK ]:Fʼ [ *\\+f˹_) -( Jˠk @|(YIhKJ\LPQ;:Zx `\(egklhLjr,os|nc\xX$ǂ썀Lƃ|X|Ȍ ,ɖLSǍ ɞɠʢ<ʤ\ʦ|ʨʪʬȈ,P˶|˸˺˼˾<\̿|w#d \v|<i<\<(')ܗlȷrKL\"Ͳ<`{z|Lι4KK}۷9s)+ |).#-6--:it몴; ,En; -. ,N0}X-9[> @-k|kr- NPmSWxݬ]{_B{ALk}\O-s-ӌM5y]jlʘȁJ-ݿ}T=U s]ׯҖ=+l}m}ЦYɠ@K?lúk'#ڲTM<}ǐnώu}]C՟yݶH-} =v װM}ٹ=zk,N}suu]M>-m =ɋ*~4Č`m @B<&\J^n]ۗ+V>WHK`^fGgn^Nkmɻo.qaI˵Ol g~<]Eq;h[ş-je,]5y,NiŒlM$[[ҙeݟ>LڹE g[\k+أ]Nnľޘ>.+qK.KֿYn~ƍ_<~ <.+Ϯ> &k#-֤Վ-ߝm;b+Y\)-=Ñ2`: _~C^Le~;HO#SA`ZU]o\R>dfjol(j,PNܭsvnKޝK yM Ƅ߮>h(O?/ߎoݮs!CѮ눛ў N](Ҵo+2=A++ԇooͮϳi.Ҿ- @SF=G]1 K]__ܞO3X`ƒ 2|!†%:8ѡB3vb‹ ADqȈ-%\I5męSN=}.0 >A=O`E17^Ҫ֭%L؍)eyRmZbW\u :Ѥ76'5T 4Qa2V(2YȊ:~ܖjYƚ/rfɓWf*黭]3oMF*eiOc[čG\l uj{WvݽfnmG^z7ǟ0@$&dA;p3A /0儢m/(0DG|0ByjÚ#E_dDUEo1Gd,*EVPG;!H#D2I%dI'2J)ⰹi4F![ *1$L3D3M5dM7߄3N9$l'/ D:?4PA%PCE4QEU “ˆSD4SM7SO;T06*ݯOWeUW_Q,!%DSBUKaW_SVQok S3SJS 3tXk6SaoU҃(eC(5J Ͷ]wߍ5TnX=_6:HSLU .0xfmm. }S-ts)&D){]Y#S ydw9Xy!?{K52N3)jv&wYdlQ60h O&^ZB:>cqyT&n oK Bw 'p[U/o$G1}a;Nĵ;Cg98uyvo=www>x9gxReumcgz]羾]{Ǐ[H|d}߇?~,>kZ%\c`81|5S>F t`5oeq,4iЄ⠖<7al8#|3І), B@YbWu gRCmĨm`V,0m,.ElnLb4a2f~̠47jl69nt8rÃg<9OzӞehIvfd~#AZMreCGVzE5J9ru>7i''NGc&4/MJa@0ML_8mm)NSSa j}*\5o"R;T䌊ӂ82zN0꒍< UZ+ѫ+IkV&3Ş41Z[׺lqnXL #Ip&hq`/*r:CZ4;.4cDk 9#-mo~*wO@;OS!ܾ \!pGr}vyr'oEyU 0r{[9h^r[VSs_{/1…d}}-:_%]"'ca62-SMٿUy 2p#; y3op u&+.-ooHeVjwo6KОplCxqx?'y^lS|đm=sϝk![o7;e(W'CDWׂXiU wY=C>/dxW^?݊~0Iq*7w_׻3>*+ñ)l,5Tbq@s3@Az  | :4dtAz@Ss3 (之 3: $B}J?,$4#B%A!t:'$B(L;)B*<+lB-8,=/| p#&B1D&(3%4B5<64YCCr< 0t>@4=l>|@C\CATDEbD tG-;߈7t.֠C53)74;DPC\R-%ó:N$DcE#Ʋ-T 58^|_|F#<F:A4dƻpFƳ =He mEW4r=>^Ft,DuFvt1iYc+Gz4`G@DlÄ &?JBFOUHXȐGUŌ H$OFlE4I@I-RI\Ɩ<ɐɛdG^ɟ`J6H(z|TJbʦܿnosJzʫ<4ʮDʯʱlD\JLG)D*(˻˼˽KdK$4,̝K4tL,ɤLܮL뚦άmM4BMʵtׄؔM硗HU*ʏ xIkʉ<)Qߜ ):trGªHE ~ALПLNP}*Q<*=.}Nym$ x mmkQ#*EP=h8*0 :2RF(F̸ǐ#KL˘3k̹ϠCMӈ 9\Sխa7-5ō߿uȓ+_μУKNسkΝOӫ_Ͼyđȡkدƍ0X 솂 Qp5'Vhfv ($h(,"pIC4B*  ( $ 0ʤL6PF)TJЕ 1-\v嗴,h9B C*Qttix|矀*蠄j衈&袌6:52K'4H" RȦtQfV@C:guB*무j뭸뮼+k&*҉(| 'l&d#"`;C~~z鿿;7xʈPI&]jJH}`0.:C4o>~~3<7׼ϣ"5=FtC6skHz^*h@/CaNx*R MXBŐ5!Wʰ1!Y.Ά<u8ڐK"*хS̢.z` H2hLH#ѢD־ J 9@*0 6٠`ؙ"+F#&"۠9IZHrTd#GxDt$%wCΑzNnd%$1HSnѐ;Dbg5 0Ib/H! m) sЇ78 G@!$!9%TrdEԉKXDe$9Ox3g)MOs4b>Ts=O7KYVD'X4, шF`[t4Z6M?5]rt%\z4i~ٟ7re%E2n^g=. ؈s/,=wxĠ?`ЈNF;?)QDB5 %*A WD"jEp)? ,2Moc>6mOZ:ZֿbM޲=e/ٹV`ZȦ] MrNcZ̡ԦAA00j)_|sۦ1;'N[|r`;xJ<iw N ੖Px ~.=w@:U4 gH6 lXԠ2m-7;3vhO @[ \*`aM>Nx񐏼'OM@i僧EQix,ֻg/y\5v-X營u<+-'zO[Ͼ{OOO'/AMr!|#׀ Ȁ8Xx؁H "8$X&x(*,؂.0284X6x8Xr? BD8FXHxJLN؄PRT8VȄZ\؅^`b8dXfxhj[tY=U8WXtxvxuȆ~8XxZg qȇx؉p胕8Xx(؊Ȉ>x؋8qxƘy(،H XXxHѸ؍8$ň䘍xߘ긎؆H?hxxۨ(9I9 ِȏYiyY "$ '*,Xؒ6y8% +rx#%9B)R)J=9XLYVَNi cTXD^ ^`hyjlnٖpr^x){}y[ 2Ye٘^B_\^bș]h)x9~7鉫ɍɕK( FXsyqsٛpYx(y9iؚǙ)Ij_RҩIQi]˜]Y0v(iʙfə9ɊH8Z:Bty o }hY] iI$8y Z#2y*.'ڗ89ȓZ铅)\`Y詠 >j;JYZڥ%[J0b &+z)9z]r*f`X:=z^wL8ZzߩJ ڠl t8W*JZJ;JɩeZ:ZAJa4lJj,ʣ IJ\٤P9WH*zJ j*j&ʭJڧʬzz Yi 9Z:yu t%vzC J V zˊ ;Xiʝz&(ȅQsrjD*㚅" cZ +:G˳jj%خjIyM*n͙{TD[YZp˶\j}۴(ݩz`k\2c5T):q˴C kjP{&{rK>˦y H{[O Cȵ+[ z6 d i{Ik $[jYKۭ0+8۽NKV-k C(}8dʿmxc [G;U\뻷 +[JZ&l )̿lڕ F^7{8<'>*9TN(KjULÉj l˯I6\e˸_P|hAd+;dȴz -1|W \開ڸac\QXZ+,ʆ3۰8YB [ LtL+K+*=Y0 ŷ &)\섎ܢ ˥ɶN9 쾟 ܛcLL{ЍдJx+SL͵9ݬ-k*Lj$cv,b xSҳzM[ ]=KžӺ۵Y Jj=؃[<{˭uy{a-gҋmĎIL ۶:L* }״ؼӻׁ~^;Ɗ=\ +׭cZ϶0 R՝ ʡ dMΏc҄,˻ ;TPi(jӍ||MMZ\+M8 Û,{b͸] z۾+؆MqeW݀x6߹ԑʯ\(*~Hnnm]>d<X9۽>N@nBޖcMlNM1ĝVNm e{fkCG~՝qnO>>T~蘾M ~λ nШnnNp>^.~k})*LKQLЮ_^^ޠθ^Uދ^.֞︮ΊWjJ%yN@>^3n^O% ?⤮Kɓj.8O~0(0xE+Nφ>4zH9֨\Q/\Hfo-]c05t/wlm/"C/nz]pO\;_Y#e_o%!q\ڛό|/쁯n ~v}։_Ь \< ϙ_-X+=5ˏ?*:ķ?AK@ DP8Pbą  @7buqcGCR%I#Qrː,gyRM#IbA0S4ؒҡBqN\j2Џ)V ;1QmDkݶVn\s{Wo^a":4ѣTc"XaS{6ZK:) ٵŦ5ob,xhȜvf:4f͔Iklc:nõ }pʼn77ȝ7\hǶ h`wBeΨlvwѕsK0/V??uUj*@/26B:A #pB 'J=+ <:p`s@7 Q6\oEQ,DּlAt&x|@qCkފcrIB* lQC.STF-H2E쑾6Ͽ3GD0/qLfdHȢ*DDU,cj@ϒnM=3&ϫO>PU>SI*dtÓVU,Vmr2˹X+rꀥZДZmV!ly6"M9Quew]w+,7^H"W^{wzw_~k#t46ZVY%v0h7b'b/.6}h]c1&dOF9j5΂bt8fƋa efVqiwg۞=ڞEޡUȶ,Lq9dEj m[s+jhUHlP>gƙ':Ys k95:{vZ5ﳏWmO9j+(JszRNw`5Ŭ\upeu[MYE=w;=ww:A_.ngP9ϻosOnGTTQP{'.>P OR{^=?dWTHD;V}K40_k2SnL'~| b>x|hV*5OΒl mbHCi$D~l@ wu+bبi ] t'OE{f(/PsJ"Q/2b*!H11cnBBFo*b(QDWUMW (V^]$?8p ûHi/jVx]QE9V'A.q4FXG/*l Hq']A՞D,[l.OvIEn`kڠZJf6 cJJ6xst:UӾ/|BlG/[G]hfxʖ mvo;5-FM7Ӆ.H&Vu^SruYn!Ƴ˚Ul.u9STvf'dt|R(۽$5E*Z7o%a}sl$)yhň4~ULKmnԼqX9r<ہun9d&7;NˑEc'Wօ{_?\̘wbp3 x%O>x_\fŵf8 G9/9pCK>sR{tYݛb"'3ͅL=b+y6un'F.5W[nuoKm>NZ;"}S?v IxNddB];>&| ^g%oU~ߓW'jЇ>2<3!^tQ;_YuSKOl=||_k'dكR~٭|ۏ~} ~ou[[d_ug;?\B@|,:Ȣ@{4 9 \A@394Aic;3@ \A;!|3|A2#‘A,"B@[†CB)(. 7,*LB3CB{!L",CC+T6& 5/|797CfC;C./tC8ĥC C:<2< H2FķD;{ D+DDSxDEܢPEG1LB2ExKĢVTM\UTEEDtAR\7Z?[F_EX|t+4cL̖*L8ʼ̲|l+LҴ6D́bM4̺L0 d FA6Mo2/NBM IXlK2{DJ̹d2LEDτ!&C:L2 LϮO!kO|24KմM}\"-D%7uOP$NmP % lE)CL|#Q'PzD=Q:QIQ]!}4mPlRDR"u( m< 5D+"#҃SR#;O.J41'05Rd~ͣϭS97;:OS0A9@e@D-T=G8?5T|J-KL'ETT5TNSI RTeUuVWXYuUS]G,,_ ,U|qS]Ȃ(xfuf}V&{)J(P˰(Hi,)JV;VmGXo) )xslE0VWz0 K7qȔX* L|vw] :/A/= "(X钣q-=|UnX]⒫*+ KZ-,ցؓmeX}W9XLYi#rB/̳Tו-?ڬ #;#ÂY*ZRdX%c0Gʰ 8i*SXN!Y3Ye׃Wc͑Ý[FQV`UMi(.y)٧-]-p"ܱK7{m2[]WϵZeuօו]U]}-]`\- 9݂]=%^ ,Bu:[m^[eC:*jx)|] uai=]^! 00 { U%ڤ)6ZC%<_%6Z`}=[m[Bͪ!5ML 'N9 ^#<-_I- ,`^|]b&Fb.'>&V*<-f.b0X-&2ƺ3F5n@(sc82:f;9>?AֽB6CD[LcdBvG>d3dEJndMNOPQ&R6SFTVUfVvWXYZ[U>\^_`a&b6c]FeffvghifeklmnfNoq&r6spFufvvwTVxz{gh|~S&6fFfvhf艦芾制Nh~zPiާ6s6&iti&en~r集i&iLiVqf.j>jie~j|jqjNoMko.k9nNOꮶ涖m&^ik~^~WkkbXfVnkO~뾎N,ebl6kVΈM^lRl[NlƮ짱M>mSll~喀Оvk{QlbnFe.nXnU0Vjl^eve.h۾zmPFF.&vono66mVm1Vneֈ.pflvnNb6VopW.mӦVq nnQvolnM~pfj^qoWepN(UoTn_m _r%_pOmq*qpvg//OrSr3'qq#oAr&o7o&or1FqGs^s6gDCs$:nE's'=qMCGqPOe&sGqJgKW6N7rFoŽuNZ7=T@_WwS1bo\v6kVkrwn;gkXWe-toswnjvrouNqOeuqaxRwfVsowt6^VlxQ>gwNMV_拿fffIsydFyihyhVy?fwfo7mWgwk_~xg'0GWgwoP|t'7|7WſgLJ|vȧwɷ|ϧ'}sGWw}gfחٯ汧}dosq`7?Pgw'7G X,h „ 2l!Ĉ'Rh"ƌ7*0@+ ;PK VT--PKaUI OEBPS/toc.ncxA Oracle® Database Extensions for .NET Developer's Guide, 11g Release 1 (11.1) Cover Title and Copyright Information Contents Preface 1 Introduction to Oracle Database Extensions for .NET 2 Installation and Configuration 3 Development and Deployment with Visual Studio .NET 4 Development and Deployment of a .NET Stored Function Demo A Data Type Conversion B Troubleshooting Common Errors Glossary Index Copyright PKIF A PKaUIOEBPS/appendixb.htm& Troubleshooting Common Errors

B Troubleshooting Common Errors

This appendix discusses common errors.

Users may encounter various errors while running the PL/SQL wrapper. Causes and recommended actions for such errors are listed below.

ORA-03113: end-of-file on communication channel
Cause: The connection between Client and Server process was broken. It may also happen if the external agent extproc crashes for some reason.
Action: There was a communication error that requires further investigation. First, check for network problems and review the SQL*Net setup. Also, look in the alert.log file for any errors. Finally, test to see whether the server process is dead and whether a trace file was generated at failure time. There may be some system calls in the .NET function which might terminate the process. Remove such calls.
ORA-03114: not connected to ORACLE
Cause: The connection between Client and Server process was broken. This may also happen if the external agent extproc crashes for some reason.
Action: There was a communication error which requires further investigation. First, check for network problems and review the SQL*Net setup. Also, look in the alert.log file for any errors. Finally, test to see whether the server process is dead and whether a trace file was generated at failure time. There may be some system calls in the .NET function which might terminate the process. Remove such calls.
ORA-20100: System.BadImageFormatException. The format of the file is invalid.
Cause: The .NET Assembly is not in the proper format.
Action: Fix the .NET assembly format that contains the .NET stored procedures or functions. You need to recompile the .NET assembly.
ORA-20100: System.IO.FileNotFoundException. File or assembly name <assemblyname>.dll, or one of its dependencies, was not found.
Cause: The .NET Assembly or one of its dependent assemblies is not available in ORACLE_BASE\ORACLE_HOME\bin\clr or in one of the subdirectories as specified during the creation of the library object by the wizard.
Action: Copy the .NET assembly and all its dependent assemblies to ORACLE_BASE\ORACLE_HOME\bin\clr or to one of its subdirectories as appropriate.
ORA-20100: System.MissingMethodException
Cause: MissingMethodException is thrown for many possible reasons including:
  • The stored procedure or function name does not match the actual stored procedure or function name defined in the .NET assembly.

  • The number, sequence, and type of parameters passed do not match the actual parameters in the .NET stored procedure.

Action: Check the name of the called stored procedure or function for spelling mistakes or case mismatch (upper or lower). Check the number of parameters and check that the type and sequence of the parameters match those of the stored procedure or function defined in the .NET assembly.
ORA-20100: System.Reflection.TargetException. <typename> type not found
Cause: The namespace and/or the class name used in the PL/SQL wrapper is not defined in the .NET Assembly.
Action: Check the class name for spelling mistakes or case mismatch. Check the .NET assembly code for the type.
ORA-20100: System.Security.SecurityException
Cause: .NET stored procedure or function could not be executed with current security level.
Action: Use the appropriate security level. For example, if the .NET stored procedure or function requires file system access, then it should be created with EXTERNAL security level.
ORA-28575: unable to open RPC connection to external procedure agent
Cause: Initialization of a network connection to the extproc agent did not succeed. This problem can be caused by network problems, incorrect listener configuration, or incorrect transfer code.
Action: Check listener configuration in LISTENER.ORA and TNSNAMES.ORA, or check Oracle Names Server. Verify that the multithreaded extproc configuration entries are correct.
ORA-28578: protocol error during callback from an external procedure
Cause: An internal protocol error occurred. This could be due to some registration issue during creation of PL/SQL wrapper.
Action: Recreate the PL/SQL wrapper using the wizard.
PLS-00201: identifier 'DBMS_CLR' must be declared
Cause: Either Oracle Database Extensions for .NET is not installed and configured properly or the .NET stored procedure has not been deployed correctly using the Oracle Deployment Wizard for .NET.
Action: Use the Database Configuration Assistant to configure Oracle Database Extensions for .NET, if it has not been installed already. Deploy the .NET stored procedure using the Oracle Deployment Wizard for .NET.
PKb- &&PKaUIOEBPS/content.opfC Oracle® Database Extensions for .NET Developer's Guide, 11g Release 1 (11.1) en-US B28376-01 Oracle Corporation Oracle Corporation Oracle® Database Extensions for .NET Developer's Guide, 11g Release 1 (11.1) 2005-07-10T12:57:20+08:00 Provides introductory, installation, post-installation configuration, and usage information for Oracle Data Provider for .NET. PKj!HCPKaUIOEBPS/install.htmyR Installation and Configuration

2 Installation and Configuration

This chapter describes the installation of Oracle Database Extensions for .NET, system requirements, and file locations.

This chapter contains these topics:

System Requirements

Oracle Database Extensions for .NET requires the following:

  • Microsoft .NET Framework 1.x or 2.0.

  • Windows Operating System:

    • 32-bit: Windows Vista (Business, Enterprise, and Ultimate Editions), Windows Server 2003, Windows Server 2003 R2, Windows 2000 or Windows XP Professional Edition.

    • 64 bit: Windows Vista x64 (Business, Enterprise, and Ultimate Editions), Windows Server 2003 x64, Windows Server 2003 R2 x64, or Windows XP x64.

    • 64-bit: Windows Server 2003 for Itanium-based systems.

  • Oracle Database 11g Release 1 (11.1) or later.

  • Oracle Client release 10gR2 (10.2) or later is required for .NET stored procedure development and deployment.

  • Oracle Developer Tools for Visual Studio .NET.

    Oracle Developer Tools for Visual Studio .NET is not released with Oracle Database 11g release 1 (11.1). It can be obtained from the Oracle .NET Developer Center at OTN.

Requirements for .NET Stored Procedures and Functions

A .NET stored procedure or function must meet the following requirements:

  • Be declared a public static method.

  • Not be a constructor or a destructor.

  • Use parameter types that are compatible with the Oracle native database types.

File Locations after Installation

OraClr11.dll is installed in the ORACLE_BASE\ORACLE_HOME\bin directory.The readme file, readme.html, is installed in the ORACLE_BASE\ORACLE_HOME\ODE.NET\DOC directory.

.NET assemblies deployed by developers are copied into the ORACLE_BASE\ORACLE_HOME\bin\CLR directory (or its subdirectory) by the Oracle Deployment Wizard for .NET.

Oracle.Database.Extensions.dll is installed in Global Assembly Cache from ORACLE_BASE\ORACLE_HOME\ODE.NET\bin\1.x directory or ORACLE_BASE\ORACLE_HOME\ODE.NET\bin\2.x directory (in case of Oracle Database Extensions for .NET 2.x).

Installation and First Use

Oracle Database Extensions for .NET is installed as part of a custom Oracle Database installation using the Oracle Universal Installer. From the Oracle Universal Installer Welcome screen, you must chose Advanced Installation, then from the Select Installation Type screen, choose Custom. When the Available Product Components list is displayed, go to Enterprise Edition Options, and select Oracle Database Extensions for .NET.

Oracle Database Extensions for .NET is configured using the Database Configuration Assistant.

Configuring Extproc Agent Using Windows Service

As part of Oracle Database Extensions for .NET installation, a Windows service is installed. The service is called OraClrAgnt and can be accessed through the Service Control Panel, as OracleORACLE_HOMEClrAgent, where ORACLE_HOME represents your Oracle home.

This service is used for the startup, configuration, and shutdown of the extproc agent.

The parameters which can be configured using this service are listed in Table 2-1, "OraClrAgnt Service Parameters".

These parameter values can be specified as part of the Start Parameters in the properties window of the Control Panel Service. In this case, the parameter values are not saved and the values must be supplied again if the service is restarted later.

To persist the parameter values, you can change the Windows registry entry for this service and provide the parameter values as command line parameters to OraClrAgnt.exe. To do this, set the Windows registry key, ImagePath, located at

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ OracleOracleHomeClrAgent

The value should be something similar to the following:

ORACLE_BASE\ORACLE_HOME\bin\OraClrAgnt.exe agent_sid=CLRExtProc max_dispatchers=2 tcp_dispatchers=0 max_task_threads=6 max_sessions=25 ENVS="EXTPROC_DLLS=ONLY:ORACLE_BASE\ORACLE_HOME\bin\oraclr11.dll"

If the service cannot be started or stopped, the error messages are logged in the Application Log of the Event Viewer, with the service name as the event source name.

OraClrAgnt Service Parameters

Table 2-1 lists the parameters which can be configured using this service.

Table 2-1 OraClrAgnt Service Parameters

ParametersDescriptions

agent_sid

This represents the SID of the extproc process. The default value is CLRExtProc. This is a mandatory parameter. If this parameter value is changed, appropriate changes need to be made in tnsnames.ora and listener.ora files.

ENVS

Variable that specifies the EXTPROC_DLLS environment variable, which restricts the DLLs that extproc can load.

This is similar to setting environment variables to external procedures using listener.ora.

Refer to "Table 13–5 External Procedures Settings in listener.ora" in Oracle Net Services Administrator's Guide for more information.

listener_address

Address on which the listener is listening. This is an optional parameter. If it is not specified, then this is set to the default value.

max_dispatchers

Number of maximum dispatchers in the extproc process. This is an optional parameter. If it is not specified, then this number is set to a default value.

max_sessions

Number of maximum sessions in the extproc process. This is an optional parameter. If it is not specified, then this number is set to a default value.

max_task_threads

Number of maximum task threads in the extproc process. This is an optional parameter. If it is not specified, then this number is set to a default value.

shutdown_address

Address on which the agent should listen for shutdown messages from agtctl. This is an optional parameter. If it is not specified, then this is set to the default value.

tcp_dispatchers

Number of TCP dispatchers in the extproc process. This is an optional parameter. If it is not specified, then this number is set to a default value.



Note:

By default, this service is created and run in the Local System Account; however, it can be changed to work with a logged-on user account through the service control panel.


See Also:

Oracle Database Heterogeneous Connectivity Administrator's Guide, Table 5-2, for further information about configuration parameters and default values

Oracle Database Extensions for .NET Registry Options

Oracle Database Extensions for .NET uses a number of registry entries located at

HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_ORACLE_HOME\ODE

to load a particular version of .NET runtime and to trouble shoot product issues. Table 2-2 lists such registry keys and the sections where the keys are discussed.

Table 2-2 Registry Options

Registry KeySection

.NETFramework

"Selecting a .NET Runtime Version"


TraceFileName

"TraceFileName"


TraceOption

"TraceOption"


TraceLevel

"TraceLevel"



Selecting a .NET Runtime Version

If multiple .NET runtime versions are installed on the database computer, then Oracle Database Extensions for .NET defaults to using the latest .NET runtime available. However, you can configure Oracle Database Extensions for .NET to load a particular .NET runtime by setting a registry value.

To specify .NET runtime version, set a registry value, .NETFramework under this registry key:

HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_ORACLE_HOME\ODE

Set the registry value to the appropriate .NET runtime version, for example, v2.0.50727.

For example, if the server has .NET framework version 1.1 and 2.0 and the .NET stored procedures are built with .NET framework 1.1, then this registry value may be set to v1.1.4322 to instruct Oracle Database Extensions for .NET to load .NET framework version 1.1.4322 instead of .NET framework version 2.0.50727.

The following are typical values for .NET runtime versions:

1.0 : v1.0.3705

1.1 : v1.1.4322

2.0 : v2.0.50727

Debug Tracing

Oracle Database Extensions for .NET provides debug tracing support, which allows logging of all the Oracle Database Extensions for .NET activities into a trace file. Different levels of tracing are available.

The following registry settings should be configured under

HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_ORACLE_HOME\ODE

TraceOption

TraceOption specifies whether to log trace information in single or multiple files for different threads. If a single trace file is specified, the filename specified in TraceFileName is used. If the multiple trace files option is requested, a Thread ID is appended to the file name provided to create a trace file for each thread.

The valid values for TraceOption are:

0 = Single trace file

1 = Multiple trace files

Note: You can use Oracle Data Provider for .NET tracing mechanism to troubleshoot ODP.NET specific issues.

TraceFileName

TraceFileName specifies the file name that is to be used for logging trace information. If TraceOption is set to 0, the name is used as is. However, if TraceOption is 1, the Thread ID is appended to the file name provided.

The valid values for TraceFileName are: any valid path name and file name.

TraceLevel

TraceLevel specifies the level of tracing in Oracle Database Extensions for .NET.

The valid values for TraceLevel are:

0 = None

1 = Entry and exit information


See Also:

Debug Tracing section in Oracle Data Provider for .NET Developer's Guide

PKF^~RyRPKaUIOEBPS/devdeploy.htm- Development and Deployment with Visual Studio .NET

3 Development and Deployment with Visual Studio .NET

This chapter describes the steps that are required to develop and deploy a .NET stored procedure or function into an Oracle Database.

This chapter contains these topics:

Step 1: Develop the Stored Procedure or Function and Build it into an Assembly

Write the stored procedure or function using Microsoft Visual Studio .NET with an appropriate .NET language. Use Oracle Data Provider for .NET (Oracle.DataAccess.Client and Oracle.DataAccess.Types) in a .NET stored procedure or function to provide data access. Build the stored procedure or function into an assembly as a DLL, and not as an EXE. This is typically accomplished using a Class Library project. Keep in mind the Oracle Data Provider for .NET limitations and restrictions, especially concerning connections and transactional semantics, when designing and developing a .NET procedure or function that uses data access.

Step 2: Run the Oracle Deployment Wizard for .NET

Run Oracle Deployment Wizard for .NET from Microsoft Visual Studio .NET. Oracle Deployment Wizard for .NET is installed as part of the Oracle Developer Tools for Visual Studio .NET. This wizard requires SYSDBA credentials, the name of the assembly to be deployed, and the database it is being deployed to.

Step 3: Choose the Procedure or Function to Deploy and Security Level

Choose the procedure or function to be deployed when the Oracle Deployment Wizard for .NET displays the list of methods for that assembly.

Also, choose the security level.

Oracle Database Extensions for .NET executes .NET stored procedures or functions at a specific security level. The security level dictates the Code Access Permissions granted to a .NET stored procedure or function. By default, .NET stored procedures or functions are executed with the SAFE security level.

The security levels are:

  • Safe

    In Safe level, the .NET stored procedure or function is allowed to access only database resources. Access to any external resources such as local files, networks, and so on, is not allowed.

  • External

    In External level, the .NET stored procedure or function is allowed to read or write to local files, and to access network resources such as sockets and internet nodes, and so on.

  • Unsafe

    In Unsafe level, the .NET stored procedure or function is allowed unrestricted execution including execution of unmanaged code. It is a superset of all other security levels.


See Also:

"Step 3: Choose the Function to Deploy" for the process of entering security level

Step 4: Determine the Appropriate Parameter Type Mappings

Determine the correct mapping between .NET and Oracle data types for creating a PL/SQL wrapper for the .NET stored procedure or function. The Oracle Deployment Wizard for .NET provides default mappings, but they can be overridden.

In case of overloaded .NET stored procedures or functions, the user needs to provide distinct names for the PL/SQL wrappers.

Tables in Appendix A provides conversion information.

Step 5: Deploy the Procedure or Function

Deploy the procedure or function in the database. The wizard performs the following steps:

  1. Connects as SYSDBA.

  2. Copies the user assembly to the ORACLE_BASE\ORACLE_HOME\bin\CLR directory or its subdirectory.

  3. Creates an Oracle library object and grants execute privilege on this library object to the database user:

    CREATE OR REPLACE LIBRARY CLRLIBRARY1_DLL AS '$ORACLE_HOME\
        bin\clr\CLRLibrary1_dll;
    GRANT EXECUTE ON CLRLIBRARY1_DLL TO SCOTT;
    
    
  4. Creates a PL/SQL wrapper in the user's database schema for each procedure or function, according to the parameter type mappings defined by the user.

Step 6: Test the Procedure or Function

Test the .NET stored procedure or function by calling the PL/SQL wrapper.

The PL/SQL wrapper can be located and executed easily using Oracle Developer Tools for Visual Studio .NET, or from a tool like SQL*Plus.

Step 7: Debug the Procedure or Function

Whenever a .NET stored procedure or function is invoked, the Oracle database listener redirects the request to a multithreaded CLR external procedure agent, extproc.exe. Each .NET stored procedure or function is executed in the context of the extproc.exe process.

  1. Ensure that the debug versions of the .NET assembly representing the .NET stored procedure or function and its pdb file and dependency DLLs, and their respective pdb files are copied to the ORACLE_BASE\ORACLE_HOME\bin\clr directory or one of its subdirectories, based on the path provided while creating the library.

  2. Attach the debugger to the extproc.exe process. Note that the debugger should be capable of debugging .NET code. If Visual Studio .NET is used for debugging, select the Native and Common Language Runtime options in the Attach to Process dialog box. The Native option can be deselected if any .NET stored procedure has already been run in the context of the same extproc.exe process.

  3. When the debugger is attached, open the .NET stored procedure or function source code and set any breakpoints that are needed, at the required locations.

  4. Debug the .NET stored procedure.


Note:

You can use Oracle Data Provider for .NETtracing mechanism to troubleshoot application issues. Please see Debug Tracing section in Oracle Data Provider for .NET Developer's Guide.

PK/UZ--PKaUIOEBPS/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\UKPKaUIOEBPS/dcommon/oracle-logo.jpgtFJFIFC    $.' ",#(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,ŝ> Ҥ2n8]'Eyoj'SP[H۷s_J'+yc Pr?i_n|}?3ݛss[QYWcag]E7dti:3 .N3W7[xsºZXDҢ Wր._xzew ҭ.g7\FT[ 7,u̻#8ӞsGÍ{F~.?TPα ]o]nj2v>¢6sTm}O3;sߓ9z<9^Y1aA' .bew`g(: ~Ѥɞ2kzP>k/Hqרxo߅|#_d# ?%(H$a؎?*6LwBD26eo Dqܰe#rr1MI2 A~/viQQ"<x#$;h;Nc}MZ$>m+zmo'wnپܶgp+>'UWUs HAQ<U{&:Ǥӣ(q v9F_PNpV >\p29Voo>o 1 Q!A*ŏqCq$o iqG(;z >j^%->w dX.Wd7w8:ՔKM+ݾU.70 `^@?G<+H~9Й?h'cRנw?PuMMď [.t_.i% cydaN2Ў4:[zޛ}:v%`$)' gW[Ӵ_.jN" dxy;*Ԟ? mC_ZĒ;dFSу(SLyX?g n mPqWk~ATQ\YG_w),-;}ClCj%2A+$ A>W 4G<*h< 2GOV S?*ai_1aN y#`6܂3\_h𮫣뚥Co((x 123|bǍ>[[ niM?+vH?]O4oWϭ*[nVlbIp"ŭ&? k0j:3iqkoz-o)ݜ)(.KmoSRx^oK{[Nhls³H #!Inizh$]/(٬f"137S`3>_xzu炙+yg+nG"H~x-,=Ӕekݸ6 >\p29%O`5/<%5mt=C˷ +`B1n :nNkգԣ7%mܯ=(*?mt>;y ۭ Z|VKm^TW{H6y#8= sOmzM|)q^Y\%%H"=SJo{xއXZtupr2???6ހ:O+_- yzDBFpxk<; NJ'ۯɦd $C㏇5/j߼e0>tE`1vnۀ2kC<'-{.Z^$on#r8;{^Ҵ𷈝դ,LJ##5_ↇ7~=xsFKaw*M$ro'tPu9kN?C9t9쮅rX:7̸5: *O4/x&}K+KYoyÌ|셶u8=fWj^?vp$*:I=7 1zx$P**?kr^R$[Ep$H\2#9 rc.GOW~˭x(c2%BG,@-9&ȏNrFEc%Qx͊.{.mSpOhw4x4&0nϷs<$IKIoQ%zQEQEQEQEQEQEQEQEQEs'O|c_?eH9ڽ}+%P=7ItkvK˴vJ[dg E|y%$|dA,F :v[xV决mAo}aCj"FH ɑO⮂t=/:sj^ڶNɓ;InS[7¾d]Iɔ$0GUuP?OkY4.fG 8]Cmۜd 4sHdpX/[x]ȧhldt]=}^FSfxs\\ki$ ,W c2ztŠ7 xG:d4i$ +m(;s5}aggiݬ ASb~O@&p'I;={:G𶍠:g]j׏y9.1ֶ(o_D%OݬͻuI+ ؅m@(ym"h%BG"WR0Ah~B o\umA" <aD\ xoYvW4X;nϚ1޺T0~S?h'cRװP=&m;F{{xL@.rI#=O^i<־ żCanݾyX2K.C;Y9A@ExIPkVi2 ;QvA`y Er垡_5]CWihe (wHό#({Ex|'`?>?oUQK"oERr +: *O=543'p!0 Ab'*z#s~no߉AkR 7W)Vl`dFbrO8@W^"?V>/7K[2%K6TK1 b* M{IDxM&$ kEn#aH'8$)c@E^MN}G:֫oιTdWERAw忈~uIa .]3A @Wߍ'uYI):Uw7,0®ڏ>8xš6oqt@&),G T`x(7}o-nFi*pyu?Ÿ%񧄴O֑EKXv\d0;b<?ɠ➭i:woe]Awe`pa>ͷ4 ;ݬOtdL1@c|;e{f0^BLN\69mĜN:\Wf~6ާgkKATrF/`WIq)tD:8P\n'j sx_ڇVo4[,a  ~$qC^}_M["m9(#irg"$!'VqQ܆*_B7ꚶ_j #Aeo%ċ dQ^W ;@Ey$:DuxI熿k: a_JC[Gwim^3ڸOR7T|_§FQ\kJ&}/5|3^|McNMG֫6qɹWTgub䃎 dhxN A`4'z7z[-/$}-rKgqq$`MwQ SK7$-sYFgg(m)!de!TL\Κ=͜_UxviǨϓ#|ɛ `UIR p>U|F+ijsY5 nԌ99+o>(՞CxNvebhfwn2 # ^.JK7w}\"#3"dgY ƺrVo21I!f%X~*H<6\j0DKUQ@$O.xgPMQq3u"&UT|+ul7Jz0l`EzXz][Gmgn":(dII4o6bH|XS .|ys&ý?~cm @eKlEDq܌"T>kt7:V3i|( eoHJ\4x~-KIv3ʀ tP;Pz79$X]ZFfH).F72sUoC%Vհ7s Hk+*#*pFy ռG4I#C+ qWwO mA”L8.䞾P?> skRLl三!P0WdUC'C?IWiχ>*;i5ܩ[ˇ+q vrFji0{X[xW_( ۜ~ ?&w)%ML=¥+s^WZ,#vF{dg${+xRzdQ( y0I2N3ysHO7Z>%J[\e 2КK6[ª;$H?ԛf`8gRDj ]H#*K]V5`B>AEn:GON+ "@TP0'Ï~m]VJ\i,PAcd,pw==Vr7s@'j+, 2N8x?my';CUUcj)y*j[0VU  E]1ʐNA >+/v T%A]g?xkV)jNJ|7g]wOkꣵ\ttmKi +xi,U(' z YzHͤwm"rQ@*=:e%JU#GBh~ :6x׶7{c1Xtk~P`Tkw  ϩGhW i`ALF p g_q,w(#*7FNNI>פh<-ih%1YǠ'@(R_wEf,u93r077p6yo%>U,;9, 1"6#*x8 €+9//m[|/vꭂ2g^OG_ko0y_*nxLօૻ']V6 J&FnzO_N+c|{oa |n/ec8¨T RA< I ~kRJ"rUI5Uվ/asYTUPAdkn巸9 I]H#W~> xellb.`tf$0@}.;-,ݧ㑼2@#j|_§FQ|'7^`m>'8"ppYؐ: V<YеKEEr6*It#Oy5ilϻKɐXшV9⻏ xKvO+p8;0 Ԟn巸9 I]H#W~> xellb.`tf$9}/6?-%iHJ_ F ~b|;xſn.,2B]9R;$| D>[DFi0Oe6H o8,vlHFKtU+tsK5;hld?FpA"<g冹ɝAw$0Vx7*w[[)'E;;aBF3r+>\K*]0#e;ʠ'ѓӒO5xOzm<7igbL0 1NpMjIirLiJ*+rcW+Ɖ}/\v~,d;\G ,8(2Fq^@Q@Q@Q@Q@Q@Q@Q@Q@Q@v:42?L5p$WLD[[,2࣯sǧzMo^pkaJ yj<{PQEp~5D:omդ.- I*?շ<|Q>,O}>qp(mҫTJjJ(((>)^+m-tA wo$8V5VmCXF;D[mcQJdeM{^Sӭ-nI}nFd֬PEI/n-.^9#b"b#A4Ep/5?5wRyC#' ? ((((({ h֞(,{5{3yw N(]JlFP$rT8Ȑup>=@=ƧO2OghԱdҶ(jlj0 uI4>%Ս2YpJC<I9zOV].FCyBy>#ƾ%ꚞAupZ mcY\`':袹F_閚nd邨ke]9ux(ψ7 )/•˴Ձ xl+7.Ք<$]ǨP!xR6)kO20)r>@u =.5+ I\B߼=Sӭ-nI}nFdր,QEQEQEQEQEQEQEQEQEQEQEQEQEWN A`'u@EP ;£FWO<6\K0DF dOkCaQn+s3לgEP|'?jI7m}qN1zև7|8<>Ҥ`G"&Nߠ# -['[JuS%ٙg7tsⷁaZ \䓀S~ ih4F2G+uQ  iVW\8ɉӓ2XeOx<+_N-Wdwq)| gk8xgcWѭ{}OOuҭ dJ0H6O":w?XIM7z$|ǽs,dTMz&>[Tal`3W?][oqSY PȒ38t CᏀoǨzơVUd0Nz_W/1/=ά\q'eBʟQKIoQ%y?mz}ۭΕl\S&RUVFqryOi7`Mv#=!gc%*k![\Q<8qdE+.]lo!V WgWV|TfT)$r$` 1[|.+iwOgnMjgh86٠ U5O[!I+ݯ8A=z =K?Jq6 r?߁ot/x:[tdYVHF.7dq+ÞhH=0E0i\?6ʪ' Q_1| M&}NěsU[i(IN ř@+cQO?Q~SCVIrcһKÞ7:^ sOndmgCr*x );kW ~.ԬEڥNb˝̘R6 px =[GyAoR,N!21('o?_λ;4AƅtV@1̓ +?F}GYvʁLZW_]|cnl|R ?A (煵֞Q9/>`v4X -n>%е-kޤW-3e"FD-1+'WmCۿG^^InQtyZ襮<RA@x__+ndn_^G5Ҵoxri}CL$[1\mT  O dPWO4 `iEK@EPN A`'u^@Q@?J o^^?J o^@OI󼟷ZKmݳz݌9EyO |nϙ%݌qjڔ:6}\,,`*Xp=Eyc\Jє ( cx#=R(((((((((((((oƾԼQCeB.V + k,_W+^TTN)+s*/<+n}k(?<)okin1GZ_k(aqhP%֡cFH`:(k}ŗĝJ{s$63deXS^mA妙O]C}.]g,ǀ@zVrV?gfd==olu1$#@ 4SM[{\] m@ܱRwE.pA_?!f}QRIv#1fsXI ZOo} owxՀ((ypq@Q@ |Ohr>Wmwp:{Y<[oqsA*92<G(O^ ]֒yilhT- 8}/Z͵Fҗ;Ur e)d@<G5-1Ze+<ۨ[x6VmKY4!ƽN[O8[P?  l/+ݺFn^> F-f}#]iKaH*ι2HPQ@? SXF#뚖2cu႞Tzd.|4<;=r"mF'9lsjQ@7KJy-gJe N$@I]qM/4u'RaDtyp@\QIP80kj}}jyvvciXH,@ܮ qs^Ey߄.CRnNbF?V~\עQE|Ig;U$FeL8 ½} '4MGLN57vHhG#( =HJSG%|In!.+I F!G-e`0ESլtk+{,縷(cYst+/ZnĝJpջʡF@i 5P[lj4jw]Zl(3XpH=Ji&wh[ *rzJ<M{׺5-vh>bw0 GOA(ʧ;H(Whz5;-"6ZD&@՛䓎I&((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((PKxttPKaUIOEBPS/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 PKaUIOEBPS/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-OJPKaUIOEBPS/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.hcPKaUIOEBPS/intro.htmBq Introduction to Oracle Database Extensions for .NET

1 Introduction to Oracle Database Extensions for .NET

This chapter introduces Oracle Database Extensions for .NET, which makes it possible to build and run .NET stored procedures or functions with Oracle Database for Microsoft Windows.

This chapter contains these topics:

Oracle Database Extensions for .NET Overview

Oracle Database Extensions for .NET provides the following:

  • A Common Language Runtime (CLR) host for Oracle Database

  • Data access through Oracle Data Provider for .NET classes

  • Oracle Deployment Wizard for Visual Studio .NET

The Oracle Database hosts the Microsoft Common Language Runtime (CLR) in an external process, outside of the Oracle database process, but on the same computer. The integration of Oracle Database with the Microsoft Common Language Runtime (CLR) enables applications to run .NET stored procedures or functions on Oracle Database, on Microsoft Windows Vista, Microsoft Windows 2003, Windows 2000, and Windows XP.

Application developers can write stored procedures and functions using any .NET compliant language, such as C# and VB.NET, and use these .NET stored procedures in the database, in the same manner as other PL/SQL or Java stored procedures. .NET stored procedures can be used from PL/SQL packages, procedures, functions, and triggers.

Application developers build .NET procedures or functions into a .NET assembly, typically using Microsoft Visual Studio .NET. Oracle Data Provider for .NET is used in .NET stored procedures and functions for data access. After building .NET procedures and functions into a .NET assembly, developers deploy them in Oracle database, using the Oracle Deployment Wizard for .NET, a component of the Oracle Developer Tools for Visual Studio .NET.

The .NET stored procedure or function appears to the caller as a PL/SQL stored procedure or function because a PL/SQL wrapper has been generated for it. The user invokes a .NET stored procedure or function through this PL/SQL wrapper. Oracle Deployment Wizard for .NET determines the probable mappings between Oracle data types and .NET data types, which the user can override. The mappings are handled seamlessly by the PL/SQL wrapper.

Oracle Database Extensions for .NET Architecture

Description of clrnt001.gif follows

This architecture diagram shows the client application and then two Oracle spaces, the Oracle process space and the external process space.

The Oracle process space includes the Oracle database instance and hosts the PL/SQL wrapper.

The external process space includes the Oracle CLR host, in which .NET stored procedures or functions are executed.

Oracle CLR Host

Oracle CLR host is installed as part of Oracle Database Extensions for .NET installation and runs in the extproc process. The extproc process loads the Oracle CLR host which in turn loads an instance of the Microsoft Common Language Runtime (CLR), thus providing an interface for the wrapped PL/SQL procedure. These mechanics are not visible to the users. From a user's point of view, the application is invoking just another PL/SQL stored procedure or function.


Note:

The Microsoft .NET Framework must be installed on the same computer as the database.

External Processes

.NET stored procedures or functions are hosted in a process external to the Oracle database. This external process is a heterogeneous service agent called extproc, external procedure agent, or external process. This guide uses the terms extproc process or extproc agent.

The extproc process supports the following architectures:

Dedicated Agent Architecture

In dedicated (that is, single-threaded) agent architecture, an extproc process is started up for each user session. The process terminates when the user session ends. This architecture can consume an unnecessarily large amount of system resources since, with every user session, a new extproc process must be started and shut down. Therefore dedicated agent architecture does not perform well in terms of system resources and runtime efficiency.

Multithreaded Agent Architecture

A multithreaded extproc process uses a pool of shared threads. The tasks requested by the user sessions are put on a queue and are picked up by the first available thread.

Multithreaded agent architecture allows more efficient use of system resources than dedicated architecture.

A separate multithreaded extproc process must be started for each system identifier (SID). Each TNS listener that is running on a system listens for incoming connection requests for a set of SIDs. If the SID in an incoming Oracle Net connect string is one that the listener is listening for, then that listener processes the connection. If a multithreaded process has been started for the SID, then the listener passes the request to that process.

Real Application Clusters (RAC) and External Processes

The Oracle multithreaded extproc process is tightly coupled with the Oracle listener. Therefore, each node in a Real Application Clusters (RAC) environment has an Oracle multithreaded extproc process associated with the listener on that node.

Multiple Databases Instance and External Processes

A single Oracle multithreaded extproc process is used with multiple database instances associated with a single Oracle home if a single listener is shared among multiple database instances.

Listener and Tnsnames Files

The following are typical examples of the listener.ora and tnsnames.ora files configured for Oracle Database Extensions for .NET. By default, Oracle Database Extensions for .NET uses CLRExtProc as the SID, but this can be changed using the Database Configuration Assistant (DBCA).

Listener.ora file

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = C:\oracle\database_1)
      (PROGRAM = extproc)
    )
    (SID_DESC =
      (SID_NAME = CLRExtProc)
      (ORACLE_HOME = C:\oracle\database_1)
      (PROGRAM = extproc)
      (ENVS="EXTPROC_DLLS=ONLY:C:\oracle\database_1\bin\oraclr11.dll")
    )
  )
 
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
     
    )
  )

Tnsnames.ora File

ORACLE =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = user.us.oracle.com)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = oracle.us.oracle.com)
    )
  )
 
ORACLR_CONNECTION_DATA =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
    )
    (CONNECT_DATA =
      (SID = CLRExtProc)
      (PRESENTATION = RO)
    )
  )
 
MSOLNIT-PC =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = msolnit-pc)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = orcl)
    )
  )
 
EXTPROC_CONNECTION_DATA =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
    )
    (CONNECT_DATA =
      (SID = PLSExtProc)
      (PRESENTATION = RO)
    )
  )

Oracle Deployment Wizard for .NET

Description of TitlePage.gif follows

The Oracle Deployment Wizard for .NET is a graphical tool integrated with Microsoft Visual Studio .NET which makes it easy to deploy any .NET procedure or function into an Oracle database. It is installed as part of Oracle Developer Tools for Visual Studio .NET.


See Also:

Oracle Developer Tools for Visual Studio .NET Dynamic Help, available by installing Oracle Developer Tools for Visual Studio .NET, for more information

Oracle Data Provider for .NET

Oracle Data Provider for .NET provides data access to the Oracle database from any client application. Oracle Data Provider for .NET is available for free download on Oracle Technology Network (OTN).


See Also:

Oracle Data Provider for .NET Developer's Guide for detailed descriptions of ODP.NET classes

Oracle Developer Tools for Visual Studio .NET

Oracle Developer Tools for Visual Studio .NET is a set of application tools tightly integrated with the Visual Studio .NET development environment. Oracle Developer Tools enables developers to execute a wide range of application development tasks, such as creating tables, editing stored procedures, and viewing data in the Oracle Database. Oracle Developer Tools for Visual Studio .NET is available for free download on Oracle Technology Network (OTN).


See Also:

Oracle Developer Tools for Visual Studio .NET Help

PKh}ؓBBPKaUIOEBPS/index.htm;o Index

Index

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

A

agent_sid, 2.5.1
architecture
Oracle Database Extensions for .NET, 1.2
assemblies, 2.3
building, 3.1, 4.2
assembly
copy, 4.3

B

BFILE mapping to .NET Framework, A
build, 4.3
building
assemblies, 3.1, 4.2

C

C#, 1.1
choosing connection, 4.3
Class Library projects, 3.1
CLR, 1.1
CLR host, 1.1, 1.2, 1.2.1
CLRExtProc, 1.2.2.3, 2.5.1
Common Language Runtime (CLR), 1.1
connection
add, 4.3
choosing, 4.3
new, 4.3
copy assembly, 4.3
copy options, 4.3
creating
function, demo, 4
functions, 4.2
.NET stored procedure sor functions, 3.1
stored procedures, 4.2

D

data type mapping, 4.5
data types
mapping, 3.4
.NET Framework, 3.4
ODP.NET Types, 3.4
data types mappings
determing appropriate, 3.4
db configuration assistant, 2.4
debug tracing, 2.6.2
debugging, 3.7, 3.7
stored procedure, 3.7
demo
creating a function, 4
deploy, 4.6
deploying
function or procedure, 4.4
deploying the procedure or function, 3.5
deployment, 3.5
directory, 4.3
options, 4.3
deployment wizard, 1.1, 1.2, 2.3, 3.4
DLL, 3.1

E

error messages, B
EXE, 3.1
extproc.exe process, 3.7

F

file locations, 2.3
first use, 2.4
functions
creating, 4.2
testing, 4.7

I

information needed for deployment
summary, 4.6
installation, 2.4

J

Java, 1.1

L

languages, 1.1
levels
security, 4.4
library database object, 4.3
listener.ora, 1.2.2.3, 2.5.1

M

mapping
data type, 4.5
mappings
data type, 3.4
max_dispatchers, 2.5.1
max_sessions, 2.5.1
max_task_threads, 2.5.1
Microsoft .NET Framework, 2.1

N

.NET Framework data types, 3.4
.NET functions, 3.1
.NET languages, 1.1
.NET stored procedures, 2.1, 3.1
requirements, 2.2
support for, 2.4

O

obtaining Oracle Developer Tools for .NET, 2.1
ODP.NET, 1.1, 1.4, 3.1
operating systems, 1.1, 2.1
Oracle client release, 2.1
Oracle Data Provider for .NET, 1.1, 1.4
Oracle Database Extensions for .NET, 1.2.1
architecture, 1.2
assemblies, 2.3
overview, 1.1
Oracle Database releases, 2.1
Oracle Deployment Wizard for .NET, 1.2, 1.3, 2.3, 3.4, 4.3
Oracle Developer Tools for .NET
obtaining, 2.1
Oracle Developer Tools for Visual Studio .NET, 1.1, 1.3, 4, 4.7
Oracle Technology Network, 2.1
Oracle Universal Installer, 2.4
ORACLE_BASEORACLE_HOMEbin directory, 2.3
Oracle.DataAccess.Client.dll, 2.3
OraClrAgnt
service parameters, 2.5.1
OraClrAgnt Service, 2.5
OraClrAgnt.exe, 2.5
OTN, 2.1
OUI, 2.4
overview
Oracle Database Extensions for .NET, 1.1

P

parameter type mapping, 4.4, 4.5
pdb file, 3.7
PLSExtProc, 1.2.2.3
PL/SQL, 1.1
wrapper, 1.1, 1.2
PL/SQL wrapper, 4.6

R

requirements
for .NET stored procedures, 2.2
system, 2.1

S

schema, 4.4, 4.5
security, 4.4
SQL*Plus, 4.7
stored procedure, 1.2
stored procedures
creating, 4.2
testing, 4.7
summary
information needed for deployment, 4.6
system requirements, 2.1

T

tcp_dispatchers, 2.5.1
testing
functions or stored procedures, 4.7
tnsnames.ora, 1.2.2.3, 2.5.1
TraceFileName, 2.6.2
TraceLevel, 2.6.2
TraceOption, 2.6.2
Troubleshooting
common errors, B

U

Universal Installer, 2.4

V

VB.NET, 1.1
Visual Studio .NET, 1.1, 1.3

W

Windows operating systems, 1.1, 2.1
Windows registry entries
ImagePath, 2.5
.NETFramework, 2.6
ProviderNull, 2.6
RecreateAppDomain, 2.6
wizard
Oracle Deployment Wizard for .NET, 1.3
wrapper, 1.1, 1.2
PL/SQL, 4.6
PKqaD;;PKaUIOEBPS/cover.htm Cover

Oracle Corporation

PK;PKaUIOEBPS/title.htm> Oracle Database Extensions for .NET Developer's Guide, 11g Release 1 (11.1)

Oracle® Database

Extensions for .NET Developer's Guide

11g Release 1 (11.1)

B28376-01

July 2007


Oracle Database Extensions for .NET Developer's Guide, 11g Release 1 (11.1)

B28376-01

Copyright © 2004, 2007, Oracle. All rights reserved.

Primary Author: Janis Greenberg

Contributors: Neeraj Gupta, Shailendra Jain, Chithra Ramamurthy, Gnanaprakash Rathinam, Christian Shay, Subramanian Venkatraman

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.

PKOxPKaUIOEBPS/glossary.html Glossary

Glossary

assembly

Assembly is the Microsoft term for the module that is created when a DLL or .EXE is complied by a .NET compiler.

Common Language Runtime

Microsoft Common Language Runtime (CLR) is the component of the .NET framework that allows many languages to create and develop applications using the same library.

Dynamic Link Library (DLL)

An executable file that a Windows application can load when needed.

external procedure

A function written in a third-generation language (3GL), such as C, and callable from within PL/SQL or SQL as if it were a PL/SQL function or procedure.

implicit database session

The database session of the caller.

Microsoft .NET Framework Class Library

The Microsoft .NET Framework Class Library provides the classes for the .NET framework model.

namespace

  • .NET:

    A namespace is naming device for grouping related types. More than one namespace can be contained in an assembly.

  • XML Documents:

    A namespace describes a set of related element names or attributes within an XML document.

Oracle Net Services

The Oracle client/server communication software that offers transparent operation to Oracle tools or databases over any type of network protocol and operating system.

PL/SQL

Oracle's procedural language extension to SQL.

result set

The output of a SQL query, consisting of one or more rows of data.

stored function

A stored function is a PL/SQL block that Oracle stores in the database and can be executed from an application.

stored procedure

A stored procedure is a PL/SQL block that Oracle stores in the database and can be executed from an application.

PKPKaUIOEBPS/appendixa.htm Data Type Conversion

A Data Type Conversion

This appendix contains the following tables used to determine the correct parameter type mappings.

Mapping of Oracle Native Data Type to .NET Framework Data Types

Table A-1 lists the supported mapping of Oracle native data types to the .NET Framework Types.

Table A-1 Mapping of Oracle Native Data Type to .NET Framework Data Types

Oracle Native Data Type.NET Framework Data Types

BFILE *

Byte[]

BINARY_DOUBLE

Byte, Byte[], Decimal, Double, float, int, Int16, Int32, Int64, long, SByte, short, Single, String, uint, Uint16, Uint32, Uint64, ulong, ushort

BINARY_FLOAT

Byte, Byte[], Decimal, Double, float, int, Int16, Int32, Int64, long, SByte, short, Single, String, uint, Uint16, Uint32, Uint64, ulong, ushort

BINARY_INTEGER

Byte, Byte[], Char, Decimal, Double, float, int, Int16, Int32, Int64, long, SByte, short, Single, String, uint, Uint16, Uint32, Uint64, ulong, ushort

BLOB

Byte[]

BOOLEAN

Not Supported

CHAR

Byte, Char, Char[], DateTime, Decimal, Double, float, int, Int16, Int32, Int64, long, SByte, short, Single, String, uint, Uint16, Uint32, Uint64, ulong, ushort

CLOB

Byte, Char, Char[], DateTime, Decimal, Double, float, int, Int16, Int32, Int64, long, SByte, short, Single, String, uint, Uint16, Uint32, Uint64, ulong, ushort

DATE

Byte[], Char[], String, DateTime

FLOAT

Byte, Byte[], Decimal, Double, float, int, Int16, Int32, Int64, long, SByte, short, Single, String, uint, Uint16, Uint32, Uint64, ulong, ushort

INTERVAL DAY TO SECOND

Byte[], Char, Char[], String, TimeSpan

INTERVAL YEAR TO MONTH

Byte, Byte[], Char, Char[], int, Int16, Int32, Int64, long, short, String

LONG

Byte, Char, Char[], DateTime, Decimal, Double, float, int, Int16, Int32, Int64, long, SByte, short, Single, String, uint, Uint16, Uint32, Uint64, ulong, ushort

LONG RAW

Byte[]

NCHAR

Byte, Char, Char[], DateTime, Decimal, Double, float, int, Int16, Int32, Int64, long, SByte, short, Single, String, uint, Uint16, Uint32, Uint64, ulong, ushort

NCLOB

Byte, Char, Char[], DateTime, Decimal, Double, float, int, Int16, Int32, Int64, long, SByte, short, Single, String, uint, Uint16, Uint32, Uint64, ulong, ushort

NUMBER

Byte, Byte[], Char, DateTime, Decimal, Double, float, int, Int16, Int32, Int64, long, SByte, short, Single, String, uint, Uint16, Uint32, Uint64, ulong, ushort

NVARCHAR2

Byte, Char, Char[], DateTime, Decimal, Double, float, int, Int16, Int32, Int64, long, SByte, short, Single, String, uint, Uint16, Uint32, Uint64, ulong, ushort

PLS_INTEGER

Byte, Byte[], Char, Decimal, Double, float, int, Int16, Int32, Int64, long, SByte, short, Single, String, uint, Uint16, Uint32, Uint64, ulong, ushort

RAW

Byte[]

REAL

Byte, Byte[], Decimal, Double, float, int, Int16, Int32, Int64, long, SByte, short, Single, String, uint, Uint16, Uint32, Uint64, ulong, ushort

ROWID

Char[], String

TIMESTAMP

Byte[], Char[], String, DateTime

TIMESTAMP WITH LOCAL TIME ZONE

Byte[], Char[], String, DateTime

TIMESTAMP WITH TIME ZONE

Byte[], Char[], String, DateTime

UROWID

Char[], String

VARCHAR2

Byte, Char, Char[], DateTime, Decimal, Double, float, int, Int16, Int32, Int64, long, SByte, short, Single, String, uint, Uint16, Uint32, Uint64, ulong, ushort

XMLType

Char[], String


Mapping of .NET Framework Data Types to Oracle Native Data Types

Table A-2 lists the supported mapping of .NET Framework Types to Oracle native data types.

Table A-2 Mapping of .NET Framework Data Types to Oracle Native Data Types

.NET Framework Data TypesOracle Native Data Type

Byte

BINARY_DOUBLE, BINARY_FLOAT, BINARY_INTEGER, CHAR, CLOB, FLOAT, INTERVAL YEAR TO MONTH, LONG, NCHAR, NCLOB, NUMBER, NVARCHAR2, PLS_INTEGER, REAL, VARCHAR2

Byte[]

BINARY_DOUBLE, BINARY_FLOAT, BINARY_INTEGER, BLOB, DATE, FLOAT, INTERVAL YEAR TO MONTH, LONG RAW, NUMBER, PLS_INTEGER, RAW, REAL, TIMESTAMP, TIMESTAMP WITH LOCAL TIME ZONE, TIMESTAMP WITH TIME ZONE

Char

BINARY_INTEGER, CHAR, CLOB, INTERVAL DAY TO SECOND, INTERVAL YEAR TO MONTH, LONG, NCHAR, NCLOB, NUMBER, NVARCHAR2, PLS_INTEGER, VARCHAR2, XMLType

Char[]

CHAR, CLOB, DATE, INTERVAL DAY TO SECOND, INTERVAL YEAR TO MONTH, LONG, NCHAR, NCLOB, NVARCHAR2, ROWID, TIMESTAMP, TIMESTAMP WITH LOCAL TIME ZONE, TIMESTAMP WITH TIME ZONE, UROWID, VARCHAR2, XMLType

DateTime

CHAR, CLOB, DATE, LONG, NCHAR, NCLOB, NVARCHAR2, TIMESTAMP, TIMESTAMP WITH LOCAL TIME ZONE, TIMESTAMP WITH TIME ZONE, VARCHAR2

Decimal

BINARY_DOUBLE, BINARY_FLOAT, BINARY_INTEGER, CHAR,CLOB, FLOAT, LONG, NCHAR, NCLOB, NVARCHAR2, NUMBER, PLS_INTEGER, REAL, VARCHAR2

Double

BINARY_DOUBLE, BINARY_FLOAT, BINARY_INTEGER, CHAR, CLOB, FLOAT, LONG, NCHAR, NCLOB, NUMBER, NVARCHAR2, PLS_INTEGER, REAL, VARCHAR2

float

BINARY_DOUBLE, BINARY_FLOAT, BINARY_INTEGER, CHAR, CLOB, FLOAT, LONG, NCHAR, NCLOB, NUMBER, NVARCHAR2, PLS_INTEGER, REAL, VARCHAR2

int

BINARY_DOUBLE, BINARY_FLOAT, BINARY_INTEGER, CHAR, CLOB, FLOAT, INTERVAL YEAR TO MONTH, LONG, NCHAR, NCLOB, NUMBER, NVARCHAR2, PLS_INTEGER, REAL, VARCHAR2

Int16

BINARY_DOUBLE, BINARY_FLOAT, BINARY_INTEGER, CHAR, CLOB, FLOAT, INTERVAL YEAR TO MONTH, LONG, NCHAR, NCLOB, NUMBER, NVARCHAR2, PLS_INTEGER, REAL, VARCHAR2

Int32

BINARY_DOUBLE, BINARY_FLOAT, BINARY_INTEGER, CHAR, CLOB, FLOAT, INTERVAL YEAR TO MONTH, LONG, NCHAR, NCLOB, NUMBER, NVARCHAR2, PLS_INTEGER, REAL, VARCHAR2

Int64

BINARY_DOUBLE, BINARY_FLOAT, BINARY_INTEGER, CHAR, CLOB, FLOAT, INTERVAL YEAR TO MONTH, LONG, NCHAR, NCLOB, NUMBER, NVARCHAR2, PLS_INTEGER, REAL, VARCHAR2

long

BINARY_DOUBLE, BINARY_FLOAT, BINARY_INTEGER, CHAR, CLOB, FLOAT, INTERVAL YEAR TO MONTH, LONG, NCHAR, NCLOB, NUMBER, NVARCHAR2, PLS_INTEGER, REAL, VARCHAR2

SByte

BINARY_DOUBLE, BINARY_FLOAT, BINARY_INTEGER, CHAR, CLOB, FLOAT, LONG, NCHAR, NCLOB, NUMBER, NVARCHAR2, PLS_INTEGER, REAL, VARCHAR2

short

BINARY_DOUBLE, BINARY_FLOAT, BINARY_INTEGER, CHAR, CLOB, FLOAT, INTERVAL YEAR TO MONTH, LONG, NCHAR, NCLOB, NUMBER, NVARCHAR2, PLS_INTEGER, REAL, VARCHAR2

Single

BINARY_DOUBLE, BINARY_FLOAT, BINARY_INTEGER, CHAR, CLOB, FLOAT, LONG, NCHAR, NCLOB, NUMBER, NVARCHAR2, PLS_INTEGER, REAL, VARCHAR2

String

BINARY_DOUBLE, BINARY_FLOAT, BINARY_INTEGER, CHAR, CLOB, DATE, FLOAT, INTERVAL DAY TO SECOND, INTERVAL YEAR TO MONTH, LONG, NCHAR, NCLOB, NUMBER, NVARCHAR2, PLS_INTEGER, REAL, ROWID, STRING, TIMESTAMP, TIMESTAMP WITH LOCAL TIME ZONE, TIMESTAMP WITH TIME ZONE, UROWID, VARCHAR2, XMLTYPE

TimeSpan

INTERVAL DAY TO SECOND

uint

BINARY_DOUBLE, BINARY_FLOAT, BINARY_INTEGER, CHAR, CLOB, FLOAT, LONG, NCHAR, NCLOB, NUMBER, NVARCHAR2, PLS_INTEGER, REAL, VARCHAR2

Uint16

BINARY_DOUBLE, BINARY_FLOAT, BINARY_INTEGER, CHAR, CLOB, FLOAT, LONG, NCHAR, NCLOB, NUMBER, NVARCHAR2, PLS_INTEGER, REAL, VARCHAR2

Uint32

BINARY_DOUBLE, BINARY_FLOAT, BINARY_INTEGER, CHAR, CLOB, FLOAT, LONG, NCHAR, NCLOB, NUMBER, NVARCHAR2, PLS_INTEGER, REAL, VARCHAR2

Uint64

BINARY_DOUBLE, BINARY_FLOAT, BINARY_INTEGER, CHAR, CLOB, FLOAT, LONG, NCHAR, NCLOB, NUMBER, NVARCHAR2, PLS_INTEGER, REAL, VARCHAR2

ulong

BINARY_DOUBLE, BINARY_FLOAT, BINARY_INTEGER, CHAR, CLOB, FLOAT, LONG, NCHAR, NCLOB, NUMBER, NVARCHAR2, PLS_INTEGER, REAL, VARCHAR2

ushort

BINARY_DOUBLE, BINARY_FLOAT, BINARY_INTEGER, CHAR, CLOB, FLOAT, LONG, NCHAR, NCLOB, NUMBER, NVARCHAR2, PLS_INTEGER, REAL, VARCHAR2


Mapping of Oracle Native Data Type to ODP.NET Data Types

Table A-3 lists the supported mapping of Oracle native data types to the ODP.NET Types.

Table A-3 Mapping of Oracle Native Data Type to ODP.NET Data Types

Oracle Native Data TypeODP.NET Type

BFILE *

OracleBFile



BINARY_DOUBLE

OracleDecimal

OracleString

BINARY_FLOAT

OracleDecimal

OracleString

BINARY_INTEGER

OracleDecimal

OracleString

BLOB

OracleBinary

OracleBlob

BOOLEAN

Not Supported

CHAR

OracleString

CLOB

OracleClob

OracleString

DATE

OracleDate

OracleString

OracleTimeStamp

OracleTimeStampTZ

OracleTimeStampLTZ

FLOAT

OracleDecimal

OracleString

INTERVAL DAY TO SECOND

OracleString

OracleIntervalDS

INTERVAL YEAR TO MONTH

OracleIntervalYM

OracleString

LONG

OracleString

LONG RAW

OracleBinary

NCHAR

OracleString

NCLOB

OracleClob

OracleString

NUMBER

OracleDecimal

OracleString

NVARCHAR2

OracleString

PLS_INTEGER

OracleDecimal

OracleString

RAW

OracleBinary

REAL

OracleDecimal

OracleString

ROWID

OracleString

TIMESTAMP

OracleDate

OracleString

OracleTimeStamp

OracleTimeStampTZ

OracleTimeStampLTZ

TIMESTAMP WITH LOCAL TIME ZONE

OracleDate

OracleString

OracleTimeStamp

OracleTimeStampTZ

OracleTimeStampLTZ

TIMESTAMP WITH TIME ZONE

OracleDate

OracleString

OracleTimeStamp

OracleTimeStampTZ

OracleTimeStampLTZ

UROWID

OracleString

VARCHAR2

OracleString

XMLType

OracleClob

OracleString

OracleXmlType


Mapping of ODP.NET Data Types to Oracle Native Data Types

Table A-4 lists the supported mapping of the ODP.NET Types to the Oracle native data types.

Table A-4 Mapping of ODP.NET Data Types to Oracle Native Data Types

ODP.NET TypeOracle Native Data Type

OracleBFile

BFILE *

OracleBinary

BLOB

LONG RAW

RAW

OracleBlob

BLOB

OracleClob

CLOB

NCLOB

XMLType

OracleDate

DATE

TIMESTAMP

TIMESTAMP WITH LOCAL TIME ZONE

TIMESTAMP WITH TIME ZONE

OracleDecimal

BINARY_DOUBLE

BINARY_INTEGER

BINARY_FLOAT

FLOAT

NUMBER

PLS_INTEGER

REAL

OracleIntervalDS

INTERVAL DAY TO SECOND

OracleIntervalYM

INTERVAL YEAR TO MONTH

OracleString

BINARY_DOUBLE

BINARY_FLOAT

BINARY_INTEGER

CHAR

CLOB

DATE

FLOAT

INTERVAL DAY TO SECOND

INTERVAL YEAR TO MONTH

LONG

NCHAR

NCLOB

NVARCHAR2

NUMBER

PLS_INTEGER

REAL

ROWID

STRING

TIMESTAMP

TIMESTAMP WITH LOCAL TIME ZONE

TIMESTAMP WITH TIME ZONE

UROWID

VARCHAR2

XMLType

OracleTimeStamp

DATE

TIMESTAMP

TIMESTAMP WITH LOCAL TIME ZONE

TIMESTAMP WITH TIME ZONE

OracleTimeStampTZ

DATE

TIMESTAMP

TIMESTAMP WITH LOCAL TIME ZONE

TIMESTAMP WITH TIME ZONE

OracleTimeStampLTZ

DATE

TIMESTAMP

TIMESTAMP WITH LOCAL TIME ZONE

TIMESTAMP WITH TIME ZONE

OracleXmlType

XMLType


* BFILE Mapping to .NET Framework

An Oracle native BFILE type parameter can be converted to a .NET Byte[]. However, converting a Byte[] to an Oracle native BFILE type is not supported. This means BFILE to .NET Byte[] conversion can be done only if the BFILE parameter type on the database side is an IN parameter and the corresponding parameter on the .NET stored procedure is an IN parameter of type Byte[]. For a BFILE INOUT, or OUT parameter or a RETURN VALUE, the corresponding .NET stored procedure parameters must be of type Oracle.DataAccess.Types.OracleBFile. Otherwise, an exception is thrown.

PL\SQL Associative Array

PL\SQL Associative array is not supported.

PK~ǼPKaUIOEBPS/preface.htm#D Preface

Preface

This document describes the features of Oracle Database for Windows software installed on Windows 2003, Windows 2000, and Windows XP Professional operating systems.

This guide describes Oracle Database Extensions for .NET, which provides a Common Language Runtime (CLR) host for Oracle Database and data access through Oracle Data Provider for .NET (ODP.NET) classes.

This preface contains these topics:

Audience

Oracle Database Extensions for .NET Developer's Guide is intended for programmers who are developing applications to access an Oracle database using Oracle Database Extensions for .NET. This documentation is also valuable to systems analysts, project managers, and others interested in the development of database applications.

To use this document, you must be familiar with Microsoft .NET Framework classes and ADO.NET and have a working knowledge of application programming using Microsoft C#, Visual Basic, or another .NET language.

Users should also be familiar with the use of Structured Query Language (SQL) to access information in relational database systems.

Documentation Accessibility

Our goal is to make Oracle products, services, and supporting documentation accessible, with good usability, to the disabled community. To that end, our documentation includes features that make information available to users of assistive technology. This documentation is available in HTML format, and contains markup to facilitate access by the disabled community. Accessibility standards will continue to evolve over time, and Oracle is actively engaged with other market-leading technology vendors to address technical obstacles so that our documentation can be accessible to all of our customers. For more information, visit the Oracle Accessibility Program Web site at

http://www.oracle.com/accessibility/

Accessibility of Code Examples in Documentation

Screen readers may not always correctly read the code examples in this document. The conventions for writing code require that closing braces should appear on an otherwise empty line; however, some screen readers may not always read a line of text that consists solely of a bracket or brace.

Accessibility of Links to External Web Sites in Documentation

This documentation may contain links to Web sites of other companies or organizations that Oracle does not own or control. Oracle neither evaluates nor makes any representations regarding the accessibility of these Web sites.

TTY Access to Oracle Support Services

Oracle provides dedicated Text Telephone (TTY) access to Oracle Support Services within the United States of America 24 hours a day, seven days a week. For TTY support, call 800.446.2398.

Related Documents

For more information, see these Oracle resources:

Many of the examples in this book use the sample schemas, which are installed by default when you select the Basic Installation option with an Oracle Database installation. Refer to Oracle Database Sample Schemas for information on how these schemas were created and how you can use them yourself.

Printed documentation is available for sale in the Oracle Store at

http://oraclestore.oracle.com/

To download free release notes, installation documentation, white papers, or other collateral, please visit the Oracle Technology Network (OTN). You must register online before using OTN; registration is free and can be done at

http://www.oracle.com/technology/membership/

If you already have a username and password for OTN, then you can go directly to the documentation section of the OTN Web site at

http://www.oracle.com/technology/documentation/

Conventions

The following text conventions are used in this document:

ConventionMeaning
boldfaceBoldface type indicates graphical user interface elements associated with an action, or terms defined in text or the glossary.
italicItalic type indicates book titles, emphasis, or placeholder variables for which you supply particular values.
monospaceMonospace type indicates commands within a paragraph, URLs, code in examples, text that appears on the screen, or text that you enter.

PK P##PKaUIOEBPS/demo.htmS Development and Deployment of a .NET Stored Function Demo

4 Development and Deployment of a .NET Stored Function Demo

This chapter demonstrates how to develop and deploy a .NET stored function.

This chapter contains these topics:


See Also:

Oracle Developer Tools for Visual Studio .NET Help for further information for further information about these components

Overview of .NET Stored Function Demonstration

This demonstration uses Oracle Developer Tools for Visual Studio .NET extensively although some processes can be performed with other Oracle tools. Also, the demonstration refers to the following components of Oracle Developer Tools for Visual Studio .NET:

  • Oracle Explorer

  • Oracle Project

  • Oracle Deployment Wizard for .NET

In this demonstration, you will develop and deploy a .NET stored function named GetDeptNo, with a PL/SQL wrapper, GETDEPTNO. The GetDeptNo function accepts an employee number (EMPNO), performs a query, and returns the department number (DEPTNO) of the employee.

Step 1: Create the GetDeptNo Function and Build it into an Assembly

This demonstration begins by opening Visual Studio .NET, creating a function, and building it into an assembly.

  1. Open Visual Studio .NET and connect as scott/tiger. See Oracle Developer Tools for Visual Studio .NET Help for information about connecting.

  2. From the Visual Studio .NET menu, select File, then New Project.

  3. To create an Oracle Project template, select the project type Visual C# Projects, and select Oracle Project.

  4. Name the project CLRLibrary1 and provide a location for it.

    A class named CLRLibrary1.Class1 appears. It contains a template for a stored procedure.

    Description of OracleProject.gif follows

  5. Copy the following code over the base class and save.

    using System;
    // use the ODP.NET provider
    using Oracle.DataAccess.Client;
    using Oracle.DataAccess.Types;
     
    namespace CLRLibrary1
    {
      // Sample .NET stored function returning department number for 
      // a given employee number
      public class Class1
      {
        public static int GetDeptNo(int empno)
        {
          int deptno = 0;
     
          // Check for context connection
          OracleConnection conn = new OracleConnection();
          if( OracleConnection.IsAvailable == true )
          {
            conn.ConnectionString = "context connection=true";
          }
          else
          {
            throw new InvalidOperationException("context connection" +
              "not available");
          }
     
          conn.Open();
          // Create and execute a command
          OracleCommand cmd = conn.CreateCommand();
          cmd.CommandText = "SELECT DEPTNO FROM EMP WHERE EMPNO = :1";
     
          cmd.Parameters.Add(":1",OracleDbType.Int32,empno, 
            System.Data.ParameterDirection.Input);
     
          OracleDataReader rdr = cmd.ExecuteReader();
     
          if (rdr.Read())
            deptno = rdr.GetInt32(0);
     
          rdr.Close();
          cmd.Dispose();
          conn.Close();
     
          return deptno;
     
        } // GetDeptNo
      } // Class1
    } // CLRLibrary1
    
    
  6. From the Build menu, select Build Solution or Build CLRLibrary1.

    This builds the code into an assembly.

  7. Save.

Step 2: Start the Oracle Deployment Wizard for .NET

Oracle Deployment Wizard for .NET can be started from the build menu.

  1. From the Build menu, select Deploy CLRLibrary1.

    Description of deployMenu.gif follows

  2. When the Welcome window appears, select Do not show this page again, if you want.

    Then, click Next.

    Description of TitlePage.gif follows

  3. The Configure your OracleConnection window appears.

    Choose your connection from the drop-down list, and click Next or click New Connection, if you are not connected.

    You must choose or add a SYSBA connection.

    Description of usingDeploywizard1.gif follows

  4. If you have selected New Connection, the Add Connection window appears.

    In the Connection Details tab, select the Data source name from the drop-down list.You can select an option to Use Windows integrated authentication or an option Use a specific user name and password, and enter that information.If you want, select Save password.The option for Role shows SYSDBA, which is the only available option.If you want to test the connection, click Test connection.Click OK,

    Description of SYSDBAaddConnection.gif follows

  5. The Specify your deployment option window appears.

    The first time you run the deployment wizard, select Copy assembly and generate stored procedures. If you later modify your function or stored procedure, you can run the deployment wizard again, and choose to perform just one of these operations.Click Next.

    Description of usingDeploywizard2.gif follows

  6. The Specify an assembly and library name window appears.

    To specify the assembly, select the project from the drop-down list, or select File, and click Browse to navigate to the one you want.

    To specify the name of the library database object to be used for the selected assembly, accept the default, select the name from the drop-down list, or enter a new name.

    For this demonstration, accept the default project and library name and click Next.

    Description of usingDeploywizard3.gif follows

  7. The Specify Copy Options window appears.

    To specify the dependent assemblies to copy to the database, select them from the list. The list displays all possible dependent assemblies. In this case, the assemblies displayed have already been copied to the database and, therefore, there is no need to copy them. To deploy the assembly to a directory other than the default bin\clr directory, modify the destination path. The destination must be a bin\clr directory or one of its existing subdirectories.

    For this demonstration, do not select any dependent assemblies, and do not modify the destination path.

    If you want to, select Overwrite the file if it already exists in the database.

    Then, click Next.

    Description of CopyOptions.gif follows

Step 3: Choose the Function to Deploy

The Specify methods and security details window appears.

You can select the entire project to deploy, or expand it to deploy specific functions. Because there is only one function in this project, selecting any one item, checks the entire project. If there were more functions or procedures, you could select individual items to deploy.

If you want to select a different schema to deploy, you can do so here. If the schema you want is not listed, you need to apply different filters. For information on this process, see Oracle Developer Tools for Visual Studio .NET Help.

You can set the security level using the drop-down list. The possible levels are:

  • Safe - (Default)

  • External

  • Unsafe

For this demonstration, do the following:

  1. Choose GetDeptNo() from the list of procedures and functions contained within that assembly.

  2. The schema initially says SYS. Change it to Scott, so that you can deploy it in the scott schema.

  3. Accept the default security level. You can either click Next to continue, or you can click Parameter Type Mapping... to view the type mappings.

    Description of specifyMethodDetails.gif follows

Step 4: Determine the Appropriate Parameter Type Mappings

If you have selected Parameter Type Mapping..., the Parameter Type Mapping window appears, which allows you to change the data type, using the drop-down list.

For this demonstration, accept the default mappings of the .NET data type System.Int32 to the Oracle type BINARY_INTEGER.

Click OK to return to the Specify methods and security details window.


See Also:

"Data Type Conversion" for data type mapping tables

Description of DatatypeMapping.gif follows

Step 5: Deploy the Function to an Oracle Database

The Summary window of the Oracle Deployment Wizard for .NET appears, showing all the indicated specifications. This window permits you to modify any values by selecting Back.

To complete the demonstration, do the following:

  1. Review the summary.

  2. To verify SQL commands, select Show Script.

    Description of summary.gif follows

  3. When the Show Sql window appears, review the code for the PL/SQL wrapper and click OK to return to the Summary window.

    Description of ShowSqlDialog.gif follows

  4. Click Finish to deploy the GetDeptNo() function.

Step 6: Test the Function

At this point, GetDeptNo() function has been deployed to the Oracle database and you are ready to test it by invoking the PL/SQL wrapper function.

You must be connected as the default user, scott, in this demonstration, to call the function.

Test the function by invoking it from the following tools:

Invoking from Oracle Developer Tools for Visual Studio .NET

To locate and call the function from Oracle Developer Tools for Visual Studio .NET:

  1. From the View menu, select Oracle Explorer.

  2. Expand the Functions node.

  3. Locate GETDEPTNO.

  4. Right-click GETDEPTNO and from the menu, select Run.

    Description of runSP.gif follows

  5. When the Run Function dialog box appears, enter employee number 7934 as the input value.

    Description of runFunction.gif follows

  6. Click OK.

    The output value 10 appears in the Document Window, indicating that employee number 7934 belongs to department 10.

    Description of success.gif follows

Invoking from ODP.NET client

The following code sample demonstrates how to invoke the PL/SQL wrapper for .NET function.

using System;
using System.Data;
using Oracle.DataAccess.Client;
 
namespace ODPNETClientApp
{
  public class Class1
  {
    public static void Main()
    {
      int empno  = 7934;
      int deptno = 0;
 
      try
      {
        // Open a connection to the database
        OracleConnection con = new OracleConnection(
          "User Id=scott; Password=tiger; Data Source=inst1");
        con.Open();
 
        // Create and execute the command
        OracleCommand cmd = con.CreateCommand();
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.CommandText = "GETDEPTNO";
 
        // Set parameters
        OracleParameter retParam = cmd.Parameters.Add(":DEPTNO",
            OracleDbType.Int32, System.Data.ParameterDirection.ReturnValue); 
        cmd.Parameters.Add(":EMPNO", OracleDbType.Int32, empno, 
        System.Data.ParameterDirection.Input);
        
        cmd.ExecuteNonQuery();
        deptno = (int)retParam.Value;
 
        Console.WriteLine("\nEmployee# {0} working in department# {1}\n", 
          empno, deptno);
 
        cmd.Dispose();
        con.Close();
      }
      catch (Exception e)
      {
        Console.WriteLine(e.Message);
      }
    }
  } // Class1
} // ODPNETClientApp namespace

Invoking from SQL*Plus

To invoke the GetDeptNo() function .NET function from SQL* Plus:

  1. Start SQL*Plus and log in as user scott with the password tiger.

  2. Enter the following commands:

    SET SERVEROUTPUT ON;
    DECLARE
    deptno BINARY_INTEGER;
    BEGIN
      deptno := GetDeptNo(7934);
      DBMS_OUTPUT.PUT_LINE(deptno);
    END;
     
    

Alternatively, you can execute following statement:

SELECT GetDeptNo(7934) FROM DUAL;


PKISSPKaUIMETA-INF/container.xml PKYuPK aUIoa,mimetypePKaUIW :OEBPS/toc.htmPKaUIb//%OEBPS/img/summary.gifPKaUI%% GOEBPS/img/usingDeploywizard1.gifPKaUIrmpmOEBPS/img/DatatypeMapping.gifPKaUIeGPK-OEBPS/img/success.gifPKaUIcA//OEBPS/img/CopyOptions.gifPKaUIBu'p'OEBPS/img/ShowSqlDialog.gifPKaUI 43"eOEBPS/img/specifyMethodDetails.gifPKaUI]e)) -OEBPS/img/usingDeploywizard3.gifPKaUIeWOEBPS/img/runFunction.gifPKaUIH4WLRLotOEBPS/img/clrnt001.gifPKaUI_)) OEBPS/img/usingDeploywizard2.gifPKaUI< l#g#OEBPS/img/OracleProject.gifPKaUIgL(G(OEBPS/img/runSP.gifPKaUIwYw r 97OEBPS/img/deployMenu.gifPKaUI&&!COEBPS/img/SYSDBAaddConnection.gifPKaUI VT--&kOEBPS/img/TitlePage.gifPKaUIIF A "OEBPS/toc.ncxPKaUIb- &&OEBPS/appendixb.htmPKaUIj!HCOEBPS/content.opfPKaUIF^~RyRxOEBPS/install.htmPKaUI/UZ--50OEBPS/devdeploy.htmPKaUIS\UK~]OEBPS/dcommon/cpyr.htmPKaUIxttbxOEBPS/dcommon/oracle-logo.jpgPKaUIo"nR M kOEBPS/dcommon/doccd_epub.jsPKaUIl-OJOEBPS/dcommon/oracle.gifPKaUIr.hcOEBPS/dcommon/blafdoc.cssPKaUIh}ؓBBJOEBPS/intro.htmPKaUIqaD;;[OEBPS/index.htmPKaUI;OEBPS/cover.htmPKaUIOx(OEBPS/title.htmPKaUI+OEBPS/glossary.htmPKaUI~ǼOEBPS/appendixa.htmPKaUI P## }OEBPS/preface.htmPKaUIISS OEBPS/demo.htmPKaUIYu-META-INF/container.xmlPK%% X