[Tͪ#n$;<:a4sX[m/F-%"5EeƋy.zh/DQǎ#UtGU<]%5XT$I َɛF[9W<>#+&Z$G]g0K5]넴9WyQp|<y ydkfsbnnṀcxU>N^XitU5=(tGV}˔ThGH `Nu}!ocTtr߯|!e0##l3.Bc^DjBq)1˘qϔ/^f߂/rה4x%9xMCtupE.y+Fv0RI-z.pah&hJ/HVuuf3ӬSkn6G`,ۋ%F`N:Q",} ,϶J	a^LUHIKg];+]2ljWi3}{8*/2NҎQMU .
P1A{NGZw~p ~{HvY.,
xlԛ+EZ_P ZCq9[@\S24X~:1(-T]T]pi|wA&Xf)ʢCiҹRdd|eA7#U9+CwWthD[sHIlRxc>!9D 3m;W:te>3..us 受BH %Y*38-]!ɤt,Cڪ)Kg{>Ot~%zM=edP/y7]:\C\$;$lTGmH?zF䠞 IZ">KZ?b஀?$襉Oy7ubKϰHKn:_3&P췕~M {ܗ|RQucmƧT\O]͓O}# d+ܘoS7;cx(ĳMҳFjW	}N2 [j%06!w8gSA!#vdDyTa~'5$QO=]?xEʷ&0b	$EQX|ȦsUnhw[Ů_Z
N&cŔb4H⍗7{/Ut(
:i.;]bf<O\AQŘe
|	Xփ\LP\YGs}J_Qv /+-y<}Dx}*jƛ]O,|pCJuήїm<=A$OĦ㤩ٿwgUo_Ofy}l[t]DHQ'hT?ňh:GFTXwdn(c-[\JN </+-y<}Dx`F{APl恤8hD dMLP֒Y|.<B8HeGԣc%nʬ;DqTlL[:Y<G	B勝cRY[=rNGZw~p ~ҏ(ˣIS3ub{Cm%9S\Dt~%zM=edP/y7]:\C\$;$lT-/5BO?<gNumn͏gc&0%:<:!|gM
<ucQ2grlGPI1<!;#A&GW|DW	[ό/+-y<}Dxoߊ},SOfAez.".]'R 71,#kKrZն-٘jYh",d(%-FY 3:=w+淶ΈY>!C*ə~"X=LeKYW'4;Y~(JbDF')Awf=\|{YEÅ!zs*ᙽWe.>

^Ң|C/сB! go5tVf}c\l3Ҳ%PL7?>5iuQ- T('(*&I)3 `Nu}!ocTtr߯|!e0##lICxjXY?T 
.=S]Ė'!\AwxTH<_+᣹8a#ZFAUblJߧS|oڍC6G+N2|
<yUR57tFش!RG%5!dA+ёBxdIKx~Oim)&
vU5FYiU"Nh
_àbS] [byj:1-(XZ]YV(8s3Ԡ:ҩ&lȃAwp}_
Y 3yWkVβW=t}(fCrus34Z ؃ߔ=>;+nzՑެ"e
0/Ǚ'E!D
sK.قNǫ6mNŎMܘk"WCɯL+B**dl.J;,EIpPU#j؆:D߅~*#Q{+CwWthD(WNVv^1wIk#x.{FɆW4r%v$P%0sF p
xgZ(Jզ{ɐ$Sj#|Dy9xH	eo	O|egHbBT)Q饧Z"2^	a';x9ca8U:gL)RuV;"oOcX^7\{,Rf,Vo?T!敦d0v?Renwp{Vub{Cm_qu
Aí?y{a=uXALyyNުc#2#U&D+~F0(>^I5/ә{MFf0lL PJfTPZV2a=fRnؒImR
zUCOT|m֨ob	L>W8-Pv[%h4;֞r>)d!g7cD!tU\Y$<&KtNYBFxצ ÿFp+U {/UZj&_gʬ'N/t[ JLGԲCUo6KV -SI_
HM?12-?աPD`w!)kz?#gqDW (Z|\H oQ)f
Gȁ6lbEUerȣZ8ZZpSx!P4OxxΆ)_RL:JCnי+9S*ƈ"yM]u`lH0B\5$6#>}8n3xxBzܺ]2kݗvl	]Nk.qwZdƟ2X3.Eպ@ҥY!*1w,Rf,Vo?T!敦eup|PM:@i4+1:,ގῇ`){()GzFXx;H-;5I$"ϼ۵V	WoW!YE
|gZ[>2a{2ԶMnɎDl׮f5ZB}Xc#3)	i-`22stTC}*Be	nm|劯kO~;
7B The data type to get a class.
     *
     * @return string
     *
     */
    public function getTypeClass($type)
    {
        return '';
    }

    /**
     * Returns array of functions available for a class.
     *
     * @param string $class The class to get function list.
     *
     * @return string[]
     *
     */
    public function getFunctionsClass($class)
    {
        return array();
    }

    /**
     * Returns array of functions available for a type.
     *
     * @param string $type The data type to get function list.
     *
     * @return string[]
     *
     */
    public function getFunctions($type)
    {
        $class = $this->getTypeClass($type);
        return $this->getFunctionsClass($class);
    }

    /**
     * Returns array of all functions available.
     *
     * @return string[]
     *
     */
    public function getAllFunctions()
    {
        $ret = array_merge(
            $this->getFunctionsClass('CHAR'),
            $this->getFunctionsClass('NUMBER'),
            $this->getFunctionsClass('DATE'),
            $this->getFunctionsClass('UUID')
        );
        sort($ret);
        return $ret;
    }

    /**
     * Returns array of all attributes available.
     *
     * @return string[]
     *
     */
    public function getAttributes()
    {
        return array();
    }

    /**
     * Returns array of all column types available.
     *
     * @return string[]
     *
     */
    public function getColumns()
    {
        // most used types
        return array(
            'INT',
            'VARCHAR',
            'TEXT',
            'DATE',
        );
    }

    /**
     * Returns an array of integer types
     *
     * @return string[] integer types
     */
    public function getIntegerTypes()
    {
        return array();
    }

    /**
     * Returns the min and max values of a given integer type
     *
     * @param string  $type   integer type
     * @param boolean $signed whether signed
     *
     * @return string[] min and max values
     */
    public function getIntegerRange($type, $signed = true)
    {
        return array('', '');
    }
}
