'************************************************* ***************
'* Name : TERMOMETRE.BAS *
'* Author : [FERHAT YOL] *
'* Notice : DS18B20'li oda termometresi] *
'* : *
'* Date : 12.02.2011 *
'* Version : 1.0 *
'* Notes : Isı sensörü olarak DS18B20 kullanılacaktır. Sensör*
'* : kablosu 15 metreden fazla olaması halinde DS18B20 *
'* : Data bacağına bağlı olan 4.7K direnci 2.2K direnç *
'* : ile değiştirilmesi gerekmektedir. *
'************************************************* ***************
DEFINE OSC 4
@ DEVICE pic16F628 'işlemci 16F628
@ DEVICE pic16F628, WDT_ON 'Watch Dog timer açık
@ DEVICE pic16F628, PWRT_ON 'Power on timer açık
@ DEVICE pic16F628, PROTECT_OFF 'Kod Protek kapalı
@ DEVICE pic16F628, MCLR_off 'MCLR pini kullanılMIYOR.
@ DEVICE pic16F628, INTRC_OSC_NOCLKOUT 'Dahili osilatör kullanılacak
TRISA=%10111000
TRISB=%00000000
PORTA=0ORTB=0
CMCON=7 'Comparatör pinleri iptal hepsi giriş çıkış
On Interrupt GoTo KESME 'kesme oluşursa KESME adlı etikete git.
'presc:000=1/2, 001=1/4, 010=1/8, 011=1/16, 100=1/32, 101=1/64, 110=1/128,111=1/256
OPTION_REG=%00000011 'Pull up dirençleri İPTAL- Bölme oranı 1/16
INTCON=%10100000 'Kesmeler aktif ve TMR0 (bit5) kesmesi aktif
TMR0=99
'---------------------------PIN TANIMLAMALARI-----------------------------------
Symbol Set=PORTA.5
Symbol YUKARI=PORTA.4
Symbol ASAGI=PORTA.3
Symbol DIG0=PORTA.0
Symbol DIG1=PORTA.1
Symbol DIG2=PORTA.2
'-------------------------------------------------------------------------------
ROLEISI VAR PORTA.6
ROLESOGUK VAR PORTB.7
'-----------------------------DEĞİŞKENLER---------------------------------------
SAYAC VAR Byte
SIRA VAR Byte
SAYI VAR Byte
TERM VAR Word
ISIS VAR Word
ONDA VAR Byte
AKTAR1 VAR Byte
AKTAR2 VAR Byte
AKTAR3 VAR Byte
SYC VAR Byte
SNS VAR Byte
SNY VAR Byte
ISIH VAR Byte
ISIL VAR Byte
TUS VAR Bit
DP VAR Bit
W VAR Bit
U VAR Bit
Z VAR Byte
X VAR Byte
I VAR Word
'---------------------------------ISI TANIMLAMALARI-----------------------------
Busy VAR Bit ' Busy Status-Bit
HAM VAR Word
ISI VAR Word ' Sensör HAM okuma değeri
Float VAR Word ' Holds remainder for + temp C display
ISARET_BITI VAR HAM.11'Bit11 ' +/- sıcaklık İşaret biti, 1 = olursa eksi sıcaklık
EKSI_ISI CON 1 ' Negatif_Cold = 1
SERECE CON 223 ' ° işareti
ISARET VAR Byte
Comm_Pin VAR PORTA.7
'--------------------------------------------------------------
'--------------------BAŞLANGIC------------------------------------
BASLANGIC:
DP=0
GoSub EKRAN3
GoSub SENSORYAZ
GoSub SENSOROKU
Read $0,ISIL
Read $1,ISIH
Read $2,SNS
If ISIL>99 Then ISIL=0
If ISIH>9 Then ISIH=0
If SNS>50 Then SNS=0
TERM=(ISIL*10)+ISIH
ISIS=TERM-SNS
GoSub DELAY1
DP=1:W=1:SYC=0
BASLA:'----------------------------ANA DONGÜ------------------------------------
GoSub Ekran
GoSub SENSOROKU
GoSub KONTROL
If TUS=1 Then GoTo AYAR
GoTo BASLA
'--------------------------------ALT PROGRAMLAR---------------------------------
SENSOROKU:
OWOUT Comm_Pin, 1, [$CC, $44]' ISI değerini oku
Bekle:
OWIN Comm_Pin, 4, [Busy] ' Busy değerini oku
If Busy = 0 Then Bekle ' hala meşgulmü? , evet ise goto Bekle..!
OWOUT Comm_Pin, 1, [$CC, $BE]' scratchpad memory oku
OWIN Comm_Pin, 2, [HAM.LowByte, HAM.HighByte]' İki byte oku ve okumayı bitir.
GoSub Hesapla
Return
SENSORYAZ: 'okumaya hazırlan..
OWOUT Comm_Pin, 1, [$CC,$4E, $FF, $FF, $7F]
OWOUT Comm_Pin, 1, [$CC,$48]
OWOUT Comm_Pin, 1, [$CC,$B8]
OWOUT Comm_Pin, 1, [$CC,$BE]
Return
Hesapla: ' Ham değerden Santigrat derece hesabı
ISARET = "+"
If ISARET_BITI = EKSI_ISI Then
ISARET = "-"
ham=~ham+2
EndIf
Float = (HAM*10)/16
Return
End
Return
KONTROL: ' Role kontrol..
'mevcut ısı degeri Set edilen ısı degerinden az ise roleısı acılacak
'mevcut ısı degeri set degerine esit ((ve)) mevcut ısı degeri setısı degeri + tolerans tan kucuk ise (ısı rolesi+soguk rolesi) kapanacak
'mevcut ısı degeri set degerine esit ((ve)) mevcut ısı degeri setısı degeri + tolerans tan buyuk ise soguk rolesi acılacak
' Sıcaklık kontrol
If (Float=>TERM And Float <=TERM+SNS) Then
SYC=0:Low ROLEISI :Low ROLESOGUK
endif
If Float =< ISIS Then
SYC=SYC+1
If SYC=>3 Then
SYC=3:High ROLEISI
EndIf
endif
If Float=>TERM+SNS Then
SYC=SYC+1
If SYC=>3 Then
SYC=3:High ROLEISI
EndIf
EndIf
Return
DELAY: 'gecıkme 1
For I=0 To 150:Next
Return
DELAY1:'gecıkme 2
For I=0 To 12000:Next
Return
DELAY2:'gecıkme 3
For I=0 To 125:Next
Return
EKRAN:'Sıcaklık gösteriliyor.
Z=Float Dig 0:GoSub AL:AKTAR1=SAYI
Z=Float Dig 1:GoSub AL:AKTAR2=SAYI
Z=Float Dig 2:GoSub AL:AKTAR3=SAYI
Return
EKRAN1: 'SET yazısı
Z=14:GoSub AL:AKTAR1=SAYI
Z=13:GoSub AL:AKTAR2=SAYI
Z=5:GoSub AL:AKTAR3=SAYI
Return
EKRAN2:'Set değeri gösteriliyor
Z=TERM Dig 0:GoSub AL:AKTAR1=SAYI:If U=1 Then AKTAR1=0
Z=TERM Dig 1:GoSub AL:AKTAR2=SAYI
Z=TERM Dig 2:GoSub AL:AKTAR3=SAYI
Return
EKRAN3:
AKTAR1=64
AKTAR2=64
AKTAR3=64
Return
EKRAN4:'Hassasiyet ekranı
Z=SNS Dig 0:GoSub AL:AKTAR1=SAYI:If U=1 Then AKTAR1=0
Z=SNS Dig 1:GoSub AL:AKTAR2=SAYI
aktar3=0
Return
AL: LookUp Z,[63,6,91,79,102,109,125,7,127,111,99,57,64,121,120],SAYI :Return'Karekter al
KAYDET: 'Değerler eproom'a kaydediliyor..
While TUS=1:Wend
ISIL=TERM/10
ISIH=TERM//10
WRITE $0,ISILAUSEUS 2
WRITE $1,ISIHAUSEUS 2
WRITE $2,SNSAUSEUS 2
GoTo BASLANGIC
AYAR: 'Menuye gırıs
While TUS=1:Wend
DP=0
GoSub EKRAN1
GoSub DELAY1
Read $0,ISIL
Read $1,ISIH
TERM=(ISIL*10)+ISIH
DP=1:syc=0:SNY=0:W=0
MENU:
If YUKARI=0 Then
W=1:U=0:sny=0
TERM=TERM+1
While YUKARI=0
SYC=SYC+1:GoSub DELAY
If SYC>40 Then
SYC=50:TERM=TERM+1:GoSub DELAY
EndIf
GoSub EKRAN2
If TERM>990 Then TERM=0
Wend
SYC=0:If TERM>999 Then TERM=990
Else
W=0
EndIf
If ASAGI=0 Then
W=1:U=0:sny=0
TERM=TERM-1
While ASAGI=0
SYC=SYC+1:GoSub DELAY
If SYC>40 Then
SYC=50:TERM=TERM-1:GoSub DELAY
EndIf
GoSub EKRAN2
If TERM>999 Then TERM=990
Wend
SYC=0:If TERM>999 Then TERM=990
Else
W=0
EndIf
If TUS=1 Then
GoTo SENSIVITY
EndIf
GoSub EKRAN2
GoTo MENU
SENSIVITY: '| menusu giriş..
While TUS=1:Wend
Read $2,sns
If SNS>50 Then SNS=0
DP=1:SNY=0
SENS:
GoSub EKRAN4
If YUKARI=0 Then
W=1:SNY=0:U=0
SNS=SNS+1
While YUKARI=0
SYC=SYC+1:GoSub DELAY
If SYC>40 Then
SYC=40:SNS=SNS+1:GoSub DELAY2
EndIf
GoSub EKRAN4
If SNS=>50 Then SNS=50
Wend
SYC=0:If SNS=>50 Then SNS=50
Else
W=0
EndIf
If ASAGI=0 Then
W=1:U=0:sny=0
SNS=SNS-1
While ASAGI=0
SYC=SYC+1:GoSub DELAY
If SYC>40 Then
SYC=40:SNS=SNS-1:GoSub DELAY2
EndIf
GoSub EKRAN4
If SNS>50 Then SNS=0
Wend
SYC=0:If SNS>50 Then SNS=0
Else
W=0
EndIf
If TUS=1 Then
GoTo KAYDET
EndIf
GoTo SENS
Disable
KESME: 'kesme alt programı
If Set=0 Then
TUS=1
Else
TUS=0
EndIf
If W=0 Then
SNY=SNY+1
If SNY=>120 Then
U=1
Else
U=0
EndIf
EndIf
If SNY=>240 Then SNY=0
SAYAC=SAYAC+1
If SAYAC>2 Then SAYAC=0
If SAYAC=0 Then
DIG2=0
PORTB=AKTAR1
DIG0=1
PAUSEUS 2
EndIf
If SAYAC=1 Then
DIG0=0
PORTB=AKTAR2
DIG1=1
PAUSEUS 2
EndIf
If SAYAC=2 Then
DIG1=0
PORTB=AKTAR3
DIG2=1
PAUSEUS 2
EndIf
TMR0=160
INTCON.2=0
Resume
Enable
End
'************************************************* ***************'* Name : TERMOMETRE.BAS *
'* Author : [FERHAT YOL] *
'* Notice : DS18B20'li oda termometresi] *
'* : *
'* Date : 12.02.2011 *
'* Version : 1.0 *
'* Notes : Is sens r olarak DS18B20 kullan lacakt r. Sens r*
'* : kablosu 15 metreden fazla olamas halinde DS18B20 *
'* : Data baca na ba l olan 4.7K direnci 2.2K diren *
'* : ile de i tirilmesi gerekmektedir. *
'************************************************* ***************
DEFINE OSC 4
@ DEVICE pic16F628 'i lemci 16F628
@ DEVICE pic16F628, WDT_ON 'Watch Dog timer a k
@ DEVICE pic16F628, PWRT_ON 'Power on timer a k
@ DEVICE pic16F628, PROTECT_OFF 'Kod Protek kapal
@ DEVICE pic16F628, MCLR_off 'MCLR pini kullan lMIYOR.
@ DEVICE pic16F628, INTRC_OSC_NOCLKOUT 'Dahili osilat r kullan lacak
TRISA=%10111000
TRISB=%00000000
PORTA=0ORTB=0
CMCON=7 'Comparat r pinleri iptal hepsi giri k
On Interrupt GoTo KESME 'kesme olu ursa KESME adl etikete git.
'presc:000=1/2, 001=1/4, 010=1/8, 011=1/16, 100=1/32, 101=1/64, 110=1/128,111=1/256
OPTION_REG=%00000011 'Pull up diren leri PTAL- B lme oran 1/16
INTCON=%10100000 'Kesmeler aktif ve TMR0 (bit5) kesmesi aktif
TMR0=99
'---------------------------PIN TANIMLAMALARI-----------------------------------
Symbol Set=PORTA.5
Symbol YUKARI=PORTA.4
Symbol ASAGI=PORTA.3
Symbol DIG0=PORTA.0
Symbol DIG1=PORTA.1
Symbol DIG2=PORTA.2
'-------------------------------------------------------------------------------
ROLEISI VAR PORTA.6
ROLESOGUK VAR PORTB.7
'-----------------------------DE KENLER---------------------------------------
RLI VAR BIT
RLS VAR BIT
PORTBB VAR BYTE
SAYAC VAR Byte
SIRA VAR Byte
SAYI VAR Byte
TERM VAR Word
ISIS VAR Word
ONDA VAR Byte
AKTAR1 VAR Byte
AKTAR2 VAR Byte
AKTAR3 VAR Byte
SYC VAR Byte
SNS VAR Byte
SNY VAR Byte
ISIH VAR Byte
ISIL VAR Byte
TUS VAR Bit
DP VAR Bit
W VAR Bit
U VAR Bit
Z VAR Byte
X VAR Byte
I VAR Word
'---------------------------------ISI TANIMLAMALARI-----------------------------
Busy VAR Bit ' Busy Status-Bit
HAM VAR Word
ISI VAR Word ' Sens r HAM okuma de eri
Float VAR Word ' Holds remainder for + temp C display
ISARET_BITI VAR HAM.11'Bit11 ' +/- s cakl k aret biti, 1 = olursa eksi s cakl k
EKSI_ISI CON 1 ' Negatif_Cold = 1
SERECE CON 223 ' i areti
ISARET VAR Byte
Comm_Pin VAR PORTA.7
'--------------------------------------------------------------
'--------------------BA LANGIC------------------------------------
BASLANGIC:
DP=0
GoSub EKRAN3
GoSub SENSORYAZ
GoSub SENSOROKU
Read $0,ISIL
Read $1,ISIH
Read $2,SNS
If ISIL>99 Then ISIL=0
If ISIH>9 Then ISIH=0
If SNS>50 Then SNS=0
TERM=(ISIL*10)+ISIH
ISIS=TERM-SNS
GoSub DELAY1
DP=1:W=1:SYC=0
BASLA:'----------------------------ANA DONG ------------------------------------
GoSub Ekran
GoSub SENSOROKU
GoSub KONTROL
If TUS=1 Then GoTo AYAR
GoTo BASLA
'--------------------------------ALT PROGRAMLAR---------------------------------
SENSOROKU:
OWOUT Comm_Pin, 1, [$CC, $44]' ISI de erini oku
Bekle:
OWIN Comm_Pin, 4, [Busy] ' Busy de erini oku
If Busy = 0 Then Bekle ' hala me gulm ? , evet ise goto Bekle..!
OWOUT Comm_Pin, 1, [$CC, $BE]' scratchpad memory oku
OWIN Comm_Pin, 2, [HAM.LowByte, HAM.HighByte]' ki byte oku ve okumay bitir.
GoSub Hesapla
Return
SENSORYAZ: 'okumaya haz rlan..
OWOUT Comm_Pin, 1, [$CC,$4E, $FF, $FF, $7F]
OWOUT Comm_Pin, 1, [$CC,$48]
OWOUT Comm_Pin, 1, [$CC,$B8]
OWOUT Comm_Pin, 1, [$CC,$BE]
Return
Hesapla: ' Ham de erden Santigrat derece hesab
ISARET = "+"
If ISARET_BITI = EKSI_ISI Then
ISARET = "-"
ham=~ham+2
EndIf
Float = (HAM*10)/16
Return
End
Return
KONTROL: ' Role kontrol..
'mevcut s degeri Set edilen s degerinden az ise role s ac lacak
'mevcut s degeri set degerine esit ((ve)) mevcut s degeri set s degeri + tolerans tan kucuk ise ( s rolesi+soguk rolesi) kapanacak
'mevcut s degeri set degerine esit ((ve)) mevcut s degeri set s degeri + tolerans tan buyuk ise soguk rolesi ac lacak
' S cakl k kontrol
IF (Float=TERM) THEN
SYC=0:LOW RLI :LOW RLS
ELSEIF Float =< ISIS THEN
SYC=SYC+1
If SYC=>3 Then
SYC=3:HIGH RLI
EndIf
ELSEIF Float=>TERM+SNS THEN
SYC=SYC+1
If SYC=>3 Then
SYC=3:HIGH RLS
ENDIF
EndIf
ROLEISI=RLI
RETURN
DELAY: 'gec kme 1
For I=0 To 150:Next
Return
DELAY1:'gec kme 2
For I=0 To 12000:Next
Return
DELAY2:'gec kme 3
For I=0 To 125:Next
Return
EKRAN:'S cakl k g steriliyor.
Z=Float Dig 0:GoSub AL:AKTAR1=SAYI
Z=Float Dig 1:GoSub AL:AKTAR2=SAYI
Z=Float Dig 2:GoSub AL:AKTAR3=SAYI
Return
EKRAN1: 'SET yaz s
Z=14:GoSub AL:AKTAR1=SAYI
Z=13:GoSub AL:AKTAR2=SAYI
Z=5:GoSub AL:AKTAR3=SAYI
Return
EKRAN2:'Set de eri g steriliyor
Z=TERM Dig 0:GoSub AL:AKTAR1=SAYI:If U=1 Then AKTAR1=0
Z=TERM Dig 1:GoSub AL:AKTAR2=SAYI
Z=TERM Dig 2:GoSub AL:AKTAR3=SAYI
Return
EKRAN3:
AKTAR1=64
AKTAR2=64
AKTAR3=64
Return
EKRAN4:'Hassasiyet ekran
Z=SNS Dig 0:GoSub AL:AKTAR1=SAYI:If U=1 Then AKTAR1=0
Z=SNS Dig 1:GoSub AL:AKTAR2=SAYI
aktar3=0
Return
AL: LookUp Z,[63,6,91,79,102,109,125,7,127,111,99,57,64,121,120],SAYI :Return'Karekter al
KAYDET: 'De erler eproom'a kaydediliyor..
While TUS=1:Wend
ISIL=TERM/10
ISIH=TERM//10
WRITE $0,ISILAUSEUS 2
WRITE $1,ISIHAUSEUS 2
WRITE $2,SNSAUSEUS 2
GoTo BASLANGIC
AYAR: 'Menuye g r s
While TUS=1:Wend
DP=0
GoSub EKRAN1
GoSub DELAY1
Read $0,ISIL
Read $1,ISIH
TERM=(ISIL*10)+ISIH
DP=1:syc=0:SNY=0:W=0
MENU:
If YUKARI=0 Then
W=1:U=0:sny=0
TERM=TERM+1
While YUKARI=0
SYC=SYC+1:GoSub DELAY
If SYC>40 Then
SYC=50:TERM=TERM+1:GoSub DELAY
EndIf
GoSub EKRAN2
If TERM>990 Then TERM=0
Wend
SYC=0:If TERM>999 Then TERM=990
Else
W=0
EndIf
If ASAGI=0 Then
W=1:U=0:sny=0
TERM=TERM-1
While ASAGI=0
SYC=SYC+1:GoSub DELAY
If SYC>40 Then
SYC=50:TERM=TERM-1:GoSub DELAY
EndIf
GoSub EKRAN2
If TERM>999 Then TERM=990
Wend
SYC=0:If TERM>999 Then TERM=990
Else
W=0
EndIf
If TUS=1 Then
GoTo SENSIVITY
EndIf
GoSub EKRAN2
GoTo MENU
SENSIVITY: '| menusu giri ..
While TUS=1:Wend
Read $2,sns
If SNS>50 Then SNS=0
DP=1:SNY=0
SENS:
GoSub EKRAN4
If YUKARI=0 Then
W=1:SNY=0:U=0
SNS=SNS+1
While YUKARI=0
SYC=SYC+1:GoSub DELAY
If SYC>40 Then
SYC=40:SNS=SNS+1:GoSub DELAY2
EndIf
GoSub EKRAN4
If SNS=>50 Then SNS=50
Wend
SYC=0:If SNS=>50 Then SNS=50
Else
W=0
EndIf
If ASAGI=0 Then
W=1:U=0:sny=0
SNS=SNS-1
While ASAGI=0
SYC=SYC+1:GoSub DELAY
If SYC>40 Then
SYC=40:SNS=SNS-1:GoSub DELAY2
EndIf
GoSub EKRAN4
If SNS>50 Then SNS=0
Wend
SYC=0:If SNS>50 Then SNS=0
Else
W=0
EndIf
If TUS=1 Then
GoTo KAYDET
EndIf
GoTo SENS
DISABLE
KESME: 'kesme alt program
If Set=0 Then
TUS=1
Else
TUS=0
EndIf
If W=0 Then
SNY=SNY+1
If SNY=>120 Then
U=1
Else
U=0
EndIf
EndIf
If SNY=>240 Then SNY=0
SAYAC=SAYAC+1
If SAYAC>2 Then SAYAC=0
If SAYAC=0 Then
DIG2=0
PORTBB=AKTAR1
PORTBB.7=RLS
PORTB=PORTBB
DIG0=1
PAUSEUS 2
EndIf
If SAYAC=1 Then
DIG0=0
PORTBB=AKTAR2
PORTBB.7=RLS
PORTB=PORTBB
DIG1=1
PAUSEUS 2
EndIf
If SAYAC=2 Then
DIG1=0
PORTBB=AKTAR3
PORTBB.7=RLS
PORTB=PORTBB
DIG2=1
PAUSEUS 2
EndIf
TMR0=160
INTCON.2=0
Resume
Enable
End
:02000000D32803 :100008000800083033190130A300A2013608840023
:100018003408482034088004D02084130005FF3EAB
:10002800331DA20C3319A20D32306220A30B0C2809
:1000380022080314CE28A200083033190130A30087
:10004800A20C3608840034084820340803188004B9
:100058003730622034088004A30B24280314CE28E8
:10006800B31CCE283A28B300331CCE2836088400A7
:10007800340848200130A100E030632034088004AF
:100088000130A100E0306328FF3A80054B2884172F
:100098008005CE2883161C141A0883169B0ACE28BE
:1000A800030183169A001C1555309D00AA309D0047
:1000B8009C149C185D281C119B0ACE28A101E83EBF
:1000C800A000A109FC30031C6C28A00703186928AC
:1000D800A0076400A10F692820187228A01C7628A0
:1000E800000076280800013EA7000A30A200A301FC
:1000F8009C20A70B7C2824080800A20001308C282B
:10010800A20006308C28A20004308C28A2000530FA
:10011800A80023082102031D932822082002043086
:1001280003180130031902302805031DFF30CE28BB
:10013800A501A4011030A600210DA40DA50D2208CB
:10014800A4022308031C230FA5020318B2282208BF
:10015800A40723080318230FA5070310A00DA10D5A
:10016800A60BA0282008CE281030A800A101A001C5
:10017800A70CA60C031CC6282208A00723080318EE
:10018800230FA107A10CA00CA50CA40CA80BBC283C
:100198002408CE28831303138312640008008316EF
:1001A800B8308500860183128501860107309F00DB
:1001B8008B17E1288B1B0800FF2CDE2083160330E9
:1001C80081008312DE20A0308B00DE2063308100A6
:1001D800DE20CD10DE20FE22DE208621DE204C210E
:1001E800DE2083169B0183124E20CB00DE2083166F
:1001F80001309B0083124E20CA00DE208316023095
:100208009B0083124E20D200DE20640064304B0233
:10021800031C0F29CB01DE2064000A304A02031CAC
:100228001629CA01DE20640033305202031C1D293E
:10023800D201DE204B08A600A7010A30A200A301C4
:10024800B820C2002508C3004A084207C400430872
:100258000318013EC500DE2052084402C0004508CC
:10026800031CFF3EC100DE206622DE20CD14DE2006
:100278004D17DE20D401DE208D22DE204C21DE2029
:10028800F321DE2064004D1E4A29842BDE203F29FD
:10029800DE200530B6008030B40001303720CC3085
:1002A8001F2044301F203420DE200530B600803067
:1002B800B400043037200520013903194D10031DFF
:1002C8004D143420DE2064004D1C5829DE200530F2
:1002D800B6008030B40001303720CC301F20BE304B
:1002E8001F203420DE200530B6008030B4000230F4
:1002F80037200520BA000520BB003420DE20BE21AF
:10030800DE200800DE200530B6008030B400013061
:100318003720CC301F204E301F20FF301F20FF30E9
:100328001F207F301F203420DE200530B6008030AB
:10033800B40001303720CC301F2048301F20342033
:10034800DE200530B6008030B40001303720CC30D4
:100358001F20B8301F203420DE200530B600803042
:10036800B40001303720CC301F20BE301F2034208D
:10037800DE200800DE202B30C900DE206400BB1D13
:10038800D529DE202D30C900DE203A09C2003B09FC
:10039800C30002304207BA0043080318013EBB00FD
:1003A800DE20DE203A08A6003B08A7000A30A2009B
:1003B800A301B820C2002508C3004208A0004308D2
:1003C800A1001030A200A3019C20B8002108B900A8
:1003D800DE200800DE206300EF29DE200800DE2092
:1003E8003808A0003908A1004508A30044088A205D
:1003F800031D0C2ADE20D401DE204D1183164D1179
:100408008312DE20CD118316CD118312DE204C2AF3
:100418003808A0003908A1004108A300400881203D
:10042800031D292ADE20D40ADE206400033054028A
:10043800031C272ADE200330D400DE204D15831646
:100448004D118312DE20DE204C2A52084407C200D8
:1004580045080318013EC3003808A0003908A10068
:100468004308A30042088720031D4C2ADE20D40A33
:10047800DE20640003305402031C4B2ADE200330C4
:10048800D400DE20CD158316CD118312DE20DE20A8
:10049800DE204D1905174D1D0513DE200800DE204E
:1004A800BC01BD013C08A0003D08A100A301963095
:1004B8008120031D642ADE20BC0A0319BD0F562AB9
:1004C800DE200800DE20BC01BD013C08A0003D087C
:1004D800A1002E30A300E0308120031D782ADE2001
:1004E800BC0A0319BD0F692ADE200800DE20BC0102
:1004F800BD013C08A0003D08A100A3017D3081207A
:10050800031D8B2ADE20BC0A0319BD0F7D2ADE20BD
:100518000800DE203808A0003908A1000030772044
:10052800D600DE202A23DE205008C600DE20380848
:10053800A0003908A10001307720D600DE202A2348
:10054800DE205008C700DE203808A0003908A100C6
:1005580002307720D600DE202A23DE205008C8008B
:10056800DE200800DE200E30D600DE202A23DE2022
:100578005008C600DE200D30D600DE202A23DE20FB
:100588005008C700DE200530D600DE202A23DE20F2
:100598005008C800DE200800DE204408A0004508F6
:1005A800A10000307720D600DE202A23DE20500864
:1005B800C600DE206400CD1EE22AC601DE20440803
:1005C800A0004508A10001307720D600DE202A23AC
:1005D800DE205008C700DE204408A0004508A1001E
:1005E80002307720D600DE202A23DE205008C800FB
:1005F800DE200800DE204030C600DE204030C70084
:10060800DE204030C800DE200800DE205208A000AE
:10061800A10100307720D600DE202A23DE205008F2
:10062800C600DE206400CD1E1A2BC601DE2052084B
:10063800A000A10101307720D600DE202A23DE2089
:100648005008C700DE20C801DE200800DE2056085A
:100658000E3C031C482B3223D000482B03308A0061
:100668005608393E03188A0A82003F3406345B3440
:100678004F3466346D347D3407347F346F346334DB
:100688003934403479347834DE200800DE206400C0
:100698004D1E502BDE204B2BDE204408A0004508C1
:1006A800A1000A30A200A3019C20CB00DE20440850
:1006B800A0004508A1000A30A200A3019C2024083C
:1006C800CA00DE2083169B0183124B085520DE20CA
:1006D80002306220DE20831601309B0083124A0814
:1006E8005520DE2002306220DE20831602309B0077
:1006F800831252085520DE2002306220DE20EC28CA
:10070800DE2064004D1E8A2BDE20852BDE20CD10D6
:10071800DE20B622DE206622DE2083169B018312AD
:100728004E20CB00DE20831601309B0083124E2022
:10073800CA00DE204B08A600A7010A30A200A301C8
:10074800B820C2002508C3004A084207C40043086D
:100758000318013EC500DE20CD14DE20D401DE20C2
:10076800D301DE204D13DE206400051A012CDE20A3
:100778004D17DE20CD12DE20D301DE20C40A031976
:10078800C50ADE206400051AEE2BDE20D40ADE201E
:100798005322DE20640029305402031CDD2BDE20A6
:1007A8003230D400DE20C40A0319C50ADE205322E1
:1007B800DE20DE20D022DE204408A0004508A1006B
:1007C8000330A300DE308420031DEC2BC401C501D7
:1007D800DE20C62BDE20D401DE204408A000450818
:1007E800A1000330A300E7308420031DFF2BDE3077
:1007F800C4000330C500DE20042CDE204D13DE20AB
:10080800DE2064008519562CDE204D17DE20CD121F
:10081800DE20D301DE200130C4020030031C013E7B
:10082800C502DE2064008519432CDE20D40ADE20B0
:100838005322DE20640029305402031C302CDE20B1
:100848003230D400DE200130C4020030031C013EE7
:10085800C502DE205322DE20DE20D022DE2044081E
:10086800A0004508A1000330A300E7308420031D41
:10087800412CDE30C4000330C500DE20162CDE20FB
:10088800D401DE204408A0004508A1000330A300DD
:10089800E7308420031D542CDE30C4000330C5002B
:1008A800DE20592CDE204D13DE20DE2064004D1E94
:1008B800602CDE20642CDE20DE20D022DE20B72B48
:1008C800DE2064004D1E6A2CDE20652CDE20831697
:1008D80002309B0083124E20D200DE2064003330A9
:1008E8005202031C782CD201DE20CD14DE20D30165
:1008F800DE200923DE206400051AB82CDE204D17FF
:10090800DE20D301DE20CD12DE20D20ADE206400F4
:10091800051AAC2CDE20D40ADE205322DE20640027
:1009280029305402031CA02CDE202830D400DE20FD
:10093800D20ADE207A22DE20DE200923DE206400AF
:1009480032305202031CAA2C3230D200DE208B2C0B
:10095800DE20D401DE20640032305202031CB62CA3
:100968003230D200DE20BB2CDE204D13DE20DE200C
:1009780064008519F32CDE204D17DE20CD12DE2011
:10098800D301DE20D203DE2064008519E82CDE20A6
:10099800D40ADE205322DE20640029305402031CCE
:1009A800DD2CDE202830D400DE20D203DE207A229F
:1009B800DE20DE200923DE20640033305202031CCF
:1009C800E62CD201DE20C82CDE20D401DE20640013
:1009D80033305202031CF12CD201DE20F62CDE202B
:1009E8004D13DE20DE2064004D1EFD2CDE204A2B38
:1009F800DE20DE207C2C6400851A042D4D16052D82
:100A08004D1264004D1B112DD30A64007830530237
:100A1800031C102DCD16112DCD126400F030530299
:100A2800031C172DD301CF0A640003304F02031CA7
:100A38001E2DCF0164004F08003C031D2F2D05110A
:100A48004608CE00CD19CE17CD1DCE134E08860010
:100A580005140230622064004F08013C031D402D3C
:100A680005104708CE00CD19CE17CD1DCE134E0860
:100A7800860085140230622064004F08023C031D82
:100A8800512D85104808CE00CD19CE17CD1DCE1397
:100A98004E088600051502306220A03081000B1137
:080AA8000900DE206300562D59
:02400E00543F1D
:00000001FF
:02000000D12805:100008000800083033190130A300A2013608840023
:100018003408482034088004CE2084130005FF3EAD
:10002800331DA20C3319A20D32306220A30B0C2809
:1000380022080314CC28A200083033190130A30089
:10004800A20C3608840034084820340803188004B9
:100058003730622034088004A30B24280314CC28EA
:10006800B31CCC283A28B300331CCC2836088400AB
:10007800340848200130A100E030632034088004AF
:100088000130A100E0306328FF3A80054B2884172F
:100098008005CC2883161C141A0883169B0ACC28C2
:1000A800030183169A001C1555309D00AA309D0047
:1000B8009C149C185D281C119B0ACC28A101E83EC1
:1000C800A000A109FC30031C6C28A00703186928AC
:1000D800A0076400A10F692820187228A01C7628A0
:1000E800000076280800013EA7000A30A200A301FC
:1000F8009A20A70B7C2824080800A20001308A282F
:10010800A20006308A28A20004308A28A800230802
:100118002102031D9128220820020430031801300F
:10012800031902302805031DFF30CC28A501A401BE
:100138001030A600210DA40DA50D2208A402230845
:10014800031C230FA5020318B0282208A4072308BC
:100158000318230FA5070310A00DA10DA60B9E28B9
:100168002008CC281030A800A101A001A70CA60CDB
:10017800031CC4282208A00723080318230FA1077B
:10018800A10CA00CA50CA40CA80BBA282408CC28F8
:10019800831303138312640008008316B8308500A4
:1001A8008030860083128501860107309F008B17F7
:1001B800E0288B1B08000A2DDD2083160330810000
:1001C8008312DD20A0308B00DD2063308100DD202C
:1001D800CF10DD200923DD208D21DD205321DD20F6
:1001E80083169B0183124E20CD00DD20831601303B
:1001F8009B0083124E20CC00DD20831602309B002A
:1002080083124E20D300DD20640064304D02031CAD
:100218000E29CD01DD2064000A304C02031C15298B
:10022800CC01DD20640033305302031C1C29D301A8
:10023800DD204D08A600A7010A30A200A301B620C0
:10024800C4002508C5004C084407C6004508031823
:10025800013EC700DD2053084602C0004708031CC2
:10026800FF3EC100DD2053084607C20047080318B7
:10027800013EC300DD207122DD20CF14DD204F16A2
:10028800DD20D501DD209822DD205321DD20FA2153
:10029800DD2064004F1D51298F2BDD204629DD20EC
:1002A8000530B6008030B40001303720CC301F2034
:1002B80044301F203420DD200530B6008030B400E3
:1002C800043037200520013903194F10031D4F143E
:1002D8003420DD2064004F1C5F29DD200530B60086
:1002E8008030B40001303720CC301F20BE301F20B2
:1002F8003420DD200530B6008030B40002303720CD
:100308000520BA000520BB003420DD20C521DD20F2
:100318000800DD200530B6008030B40001303720F9
:10032800CC301F204E301F20FF301F20FF301F20F1
:100338007F301F203420DD200530B6008030B40027
:1003480001303720CC301F2048301F203420DD20DA
:100358000530B6008030B40001303720CC301F2083
:10036800B8301F203420DD200530B6008030B400BE
:1003780001303720CC301F20BE301F203420DD2034
:100388000800DD202B30CB00DD206400BB1DDC29FC
:10039800DD202D30CB00DD203A09C4003B09C50023
:1003A80002304407BA0045080318013EBB00DD20AF
:1003B800DD203A08A6003B08A7000A30A200A301E6
:1003C800B620C4002508C5004408A0004508A100BF
:1003D8001030A200A3019A20B8002108B900DD203E
:1003E8000800DD206300F629DD200800DD20400834
:1003F800A0004108A1003908A30038088720031D80
:10040800172ADD20D50ADD20640003305502031CBD
:10041800162ADD200330D500DD20051783160513C5
:100428008312DD20DD20DD203808A0003908A10076
:100438004708A30046088720031D2A2ADD20D50186
:10044800DD200513831605138312DD20DD20080047
:10045800DD203808A0003908A1004308A30042089D
:100468008720031D492ADD20D50ADD2064000330DA
:100478005502031C482ADD200330D500DD208516EF
:10048800831685128312DD20DD20DD204608A000BA
:100498004708A1003908A30038088720031D5C2AF3
:1004A800DD20D501DD208512831685128312DD201B
:1004B800DD200800DD20BC01BD013C08A0003D088E
:1004C800A100A30196308120031D6F2ADD20BC0AFC
:1004D8000319BD0F612ADD200800DD20BC01BD0124
:1004E8003C08A0003D08A1002E30A300E030812088
:1004F800031D832ADD20BC0A0319BD0F742ADD20E1
:100508000800DD20BC01BD013C08A0003D08A10099
:10051800A3017D308120031D962ADD20BC0A031922
:10052800BD0F882ADD200800DD203808A000390822
:10053800A10000307720D700DD203523DD205108C9
:10054800C800DD203808A0003908A1000130772054
:10055800D700DD203523DD205108C900DD2038080B
:10056800A0003908A10002307720D700DD2035230C
:10057800DD205108CA00DD200800DD200E30D7003C
:10058800DD203523DD205108C800DD200D30D700DF
:10059800DD203523DD205108C900DD200530D700D6
:1005A800DD203523DD205108CA00DD200800DD20CC
:1005B8004608A0004708A10000307720D700DD20BA
:1005C8003523DD205108C800DD206400CF1DED2A49
:1005D800C801DD204608A0004708A10001307720A7
:1005E800D700DD203523DD205108C900DD2046086D
:1005F800A0004708A10002307720D700DD2035236E
:10060800DD205108CA00DD200800DD204030C80088
:10061800DD204030C900DD204030CA00DD20080060
:10062800DD205308A000A10100307720D700DD208D
:100638003523DD205108C800DD206400CF1D252B9F
:10064800C801DD205308A000A10101307720D700A0
:10065800DD203523DD205108C900DD20CA01DD2059
:100668000800DD2057080E3C031C532B3D23D10006
:10067800532B03308A005708443E03188A0A820025
:100688003F3406345B344F3466346D347D3407347C
:100698007F346F3463343934403479347834DD202E
:1006A8000800DD2064004F1D5B2BDD20562BDD206C
:1006B8004608A0004708A1000A30A200A3019A201A
:1006C800CD00DD204608A0004708A1000A30A2009E
:1006D800A3019A202408CC00DD2083169B018312F5
:1006E8004D085520DD2002306220DD2083160130C0
:1006F8009B0083124C085520DD2002306220DD204B
:10070800831602309B00831253085520DD200230E7
:100718006220DD20EB28DD2064004F1D952BDD20B5
:10072800902BDD20CF10DD20C122DD207122DD20BD
:1007380083169B0183124E20CD00DD2083160130E5
:100748009B0083124E20CC00DD204D08A600A70197
:100758000A30A200A301B620C4002508C5004C0831
:100768004407C60045080318013EC700DD20CF1422
:10077800DD20D501DD20D401DD204F12DD2064000D
:10078800051A0C2CDD204F16DD20CF11DD20D401F9
:10079800DD20C60A0319C70ADD206400051AF92BF3
:1007A800DD20D50ADD205E22DD20640029305502D7
:1007B800031CE82BDD203230D500DD20C60A0319E2
:1007C800C70ADD205E22DD20DD20DB22DD20460891
:1007D800A0004708A1000330A300DE308420031DD9
:1007E800F72BC601C701DD20D12BDD20D501DD2087
:1007F8004608A0004708A1000330A300E730842082
:10080800031D0A2CDE30C6000330C700DD200F2C84
:10081800DD204F12DD20DD2064008519612CDD20EC
:100828004F16DD20CF11DD20D401DD200130C602B6
:100838000030031C013EC702DD20640085194E2CE0
:10084800DD20D50ADD205E22DD2064002930550236
:10085800031C3B2CDD203230D500DD200130C602E0
:100868000030031C013EC702DD205E22DD20DD20B2
:10087800DB22DD204608A0004708A1000330A300C2
:10088800E7308420031D4C2CDE30C6000330C7003F
:10089800DD20212CDD20D501DD204608A0004708F9
:1008A800A1000330A300E7308420031D5F2CDE3055
:1008B800C6000330C700DD20642CDD204F12DD2088
:1008C800DD2064004F1D6B2CDD206F2CDD20DD202A
:1008D800DB22DD20C22BDD2064004F1D752CDD20BE
:1008E800702CDD20831602309B0083124E20D3002B
:1008F800DD20640033305302031C832CD301DD2038
:10090800CF14DD20D401DD201423DD206400051A76
:10091800C32CDD204F16DD20D401DD20CF11DD20D2
:10092800D30ADD206400051AB72CDD20D50ADD20A6
:100938005E22DD20640029305502031CAB2CDD202B
:100948002830D500DD20D30ADD208522DD20DD20FA
:100958001423DD20640032305302031CB52C3230DE
:10096800D300DD20962CDD20D501DD206400323057
:100978005302031CC12C3230D300DD20C62CDD20ED
:100988004F12DD20DD2064008519FE2CDD204F1676
:10099800DD20CF11DD20D401DD20D303DD2064006C
:1009A8008519F32CDD20D50ADD205E22DD206400C8
:1009B80029305502031CE82CDD202830D500DD2025
:1009C800D303DD208522DD20DD201423DD20640013
:1009D80033305302031CF12CD301DD20D32CDD204E
:1009E800D501DD20640033305302031CFC2CD301F5
:1009F800DD20012DDD204F12DD20DD2064004F1D9C
:100A0800082DDD20552BDD20DD20872C6400861B7A
:100A18000F2D4F15102D4F1164004F1A1C2DD40A9D
:100A2800640078305402031C1B2DCF151C2DCF11E8
:100A38006400F0305402031C222DD401D00A640053
:100A480003305002031C292DD00164005008003CDB
:100A5800031D342D05114808860005140230622054
:100A680064005008013C031D3F2D0510490886000D
:100A780085140230622064005008023C031D4A2D90
:100A880085104A088600051502306220A0308100D2
:0A0A98000B110900DD2063004F2D53
:02400E00543F1D
:00000001FF