2020-10-19 10:58:10 +00:00

12 lines
13 KiB
Go

//
// Copyright 2020 FoxyUtils ehf. All rights reserved.
//
// This is a commercial product and requires a license to operate.
// A trial license can be obtained at https://unidoc.io
//
// DO NOT EDIT: generated by unitwist Go source code obfuscator.
//
// Use of this source code is governed by the UniDoc End User License Agreement
// terms that can be accessed at https://unidoc.io/eula/
package mmr ;import (_a "errors";_ba "fmt";_g "github.com/unidoc/unipdf/v3/common";_f "github.com/unidoc/unipdf/v3/internal/bitwise";_fc "github.com/unidoc/unipdf/v3/internal/jbig2/bitmap";_bc "io";);func _ge (_bf ,_bd int )int {if _bf < _bd {return _bd ;};return _bf ;};func (_cac *runData )uncompressGetCode (_egc []*code )(*code ,error ){return _cac .uncompressGetCodeLittleEndian (_egc );};func (_bdb *Decoder )createLittleEndianTable (_daf [][3]int )([]*code ,error ){_ffe :=make ([]*code ,_dag +1);for _gge :=0;_gge < len (_daf );_gge ++{_afd :=_ag (_daf [_gge ]);if _afd ._gf <=_cb {_ebc :=_cb -_afd ._gf ;_eg :=_afd ._be <<uint (_ebc );for _ebca :=(1<<uint (_ebc ))-1;_ebca >=0;_ebca --{_bbc :=_eg |_ebca ;_ffe [_bbc ]=_afd ;};}else {_ed :=_afd ._be >>uint (_afd ._gf -_cb );if _ffe [_ed ]==nil {var _acd =_ag ([3]int {});_acd ._e =make ([]*code ,_dd +1);_ffe [_ed ]=_acd ;};if _afd ._gf <=_cb +_fg {_ea :=_cb +_fg -_afd ._gf ;_df :=(_afd ._be <<uint (_ea ))&_dd ;_ffe [_ed ]._c =true ;for _bge :=(1<<uint (_ea ))-1;_bge >=0;_bge --{_ffe [_ed ]._e [_df |_bge ]=_afd ;};}else {return nil ,_a .New ("\u0043\u006f\u0064\u0065\u0020\u0074a\u0062\u006c\u0065\u0020\u006f\u0076\u0065\u0072\u0066\u006c\u006f\u0077\u0020i\u006e\u0020\u004d\u004d\u0052\u0044\u0065c\u006f\u0064\u0065\u0072");};};};return _ffe ,nil ;};func (_d *code )String ()string {return _ba .Sprintf ("\u0025\u0064\u002f\u0025\u0064\u002f\u0025\u0064",_d ._gf ,_d ._be ,_d ._ff );};func (_def *runData )uncompressGetNextCodeLittleEndian ()(int ,error ){_fcd :=_def ._gac -_def ._bea ;if _fcd < 0||_fcd > 24{_eagf :=(_def ._gac >>3)-_def ._ddd ;if _eagf >=_def ._cd {_eagf +=_def ._ddd ;if _dcf :=_def .fillBuffer (_eagf );_dcf !=nil {return 0,_dcf ;};_eagf -=_def ._ddd ;};_abg :=(uint32 (_def ._dfg [_eagf ]&0xFF)<<16)|(uint32 (_def ._dfg [_eagf +1]&0xFF)<<8)|(uint32 (_def ._dfg [_eagf +2]&0xFF));_gbba :=uint32 (_def ._gac &7);_abg <<=_gbba ;_def ._bbb =int (_abg );}else {_cgd :=_def ._bea &7;_baf :=7-_cgd ;if _fcd <=_baf {_def ._bbb <<=uint (_fcd );}else {_abca :=(_def ._bea >>3)+3-_def ._ddd ;if _abca >=_def ._cd {_abca +=_def ._ddd ;if _ege :=_def .fillBuffer (_abca );_ege !=nil {return 0,_ege ;};_abca -=_def ._ddd ;};_cgd =8-_cgd ;for {_def ._bbb <<=uint (_cgd );_def ._bbb |=int (uint (_def ._dfg [_abca ])&0xFF);_fcd -=_cgd ;_abca ++;_cgd =8;if !(_fcd >=8){break ;};};_def ._bbb <<=uint (_fcd );};};_def ._bea =_def ._gac ;return _def ._bbb ,nil ;};func _bad (_ef ,_bg int )int {if _ef > _bg {return _bg ;};return _ef ;};func (_dfb *Decoder )detectAndSkipEOL ()error {for {_gbb ,_cgc :=_dfb ._gd .uncompressGetCode (_dfb ._gdb );if _cgc !=nil {return _cgc ;};if _gbb !=nil &&_gbb ._ff ==EOL {_dfb ._gd ._gac +=_gbb ._gf ;}else {return nil ;};};};func (_cf *Decoder )UncompressMMR ()(_afg *_fc .Bitmap ,_gdg error ){_afg =_fc .New (_cf ._fb ,_cf ._gb );_db :=make ([]int ,_afg .Width +5);_ggda :=make ([]int ,_afg .Width +5);_ggda [0]=_afg .Width ;_dac :=1;var _bcc int ;for _ebf :=0;_ebf < _afg .Height ;_ebf ++{_bcc ,_gdg =_cf .uncompress2d (_cf ._gd ,_ggda ,_dac ,_db ,_afg .Width );if _gdg !=nil {return nil ,_gdg ;};if _bcc ==EOF {break ;};if _bcc > 0{_gdg =_cf .fillBitmap (_afg ,_ebf ,_db ,_bcc );if _gdg !=nil {return nil ,_gdg ;};};_ggda ,_db =_db ,_ggda ;_dac =_bcc ;};if _gdg =_cf .detectAndSkipEOL ();_gdg !=nil {return nil ,_gdg ;};_cf ._gd .align ();return _afg ,nil ;};func (_ccd *Decoder )uncompress2d (_aca *runData ,_efde []int ,_bbd int ,_fbe []int ,_dde int )(int ,error ){var (_cfg int ;_ee int ;_bbdg int ;_gbbe =true ;_ggdf error ;_bae *code ;);_efde [_bbd ]=_dde ;_efde [_bbd +1]=_dde ;_efde [_bbd +2]=_dde +1;_efde [_bbd +3]=_dde +1;_fbg :for _bbdg < _dde {_bae ,_ggdf =_aca .uncompressGetCode (_ccd ._gdb );if _ggdf !=nil {return EOL ,nil ;};if _bae ==nil {_aca ._gac ++;break _fbg ;};_aca ._gac +=_bae ._gf ;switch mmrCode (_bae ._ff ){case _ca :_bbdg =_efde [_cfg ];case _agb :_bbdg =_efde [_cfg ]+1;case _gg :_bbdg =_efde [_cfg ]-1;case _bb :_acc :=1;for _acc > 0{var _bdf []*code ;if _gbbe {_bdf =_ccd ._ecd ;}else {_bdf =_ccd ._fec ;};_bae ,_ggdf =_aca .uncompressGetCode (_bdf );if _ggdf !=nil {return 0,_ggdf ;};if _bae ==nil {break _fbg ;};_aca ._gac +=_bae ._gf ;if _bae ._ff < 64{if _bae ._ff < 0{_fbe [_ee ]=_bbdg ;_ee ++;_bae =nil ;break _fbg ;};_bbdg +=_bae ._ff ;_fbe [_ee ]=_bbdg ;_ee ++;break ;};_bbdg +=_bae ._ff ;};_dff :=_bbdg ;_cgef :=1;_gfg :for _cgef > 0{var _ccce []*code ;if !_gbbe {_ccce =_ccd ._ecd ;}else {_ccce =_ccd ._fec ;};_bae ,_ggdf =_aca .uncompressGetCode (_ccce );if _ggdf !=nil {return 0,_ggdf ;};if _bae ==nil {break _fbg ;};_aca ._gac +=_bae ._gf ;if _bae ._ff < 64{if _bae ._ff < 0{_fbe [_ee ]=_bbdg ;_ee ++;break _fbg ;};_bbdg +=_bae ._ff ;if _bbdg < _dde ||_bbdg !=_dff {_fbe [_ee ]=_bbdg ;_ee ++;};break _gfg ;};_bbdg +=_bae ._ff ;};for _bbdg < _dde &&_efde [_cfg ]<=_bbdg {_cfg +=2;};continue _fbg ;case _fe :_cfg ++;_bbdg =_efde [_cfg ];_cfg ++;continue _fbg ;case _aa :_bbdg =_efde [_cfg ]+2;case _fcc :_bbdg =_efde [_cfg ]-2;case _ec :_bbdg =_efde [_cfg ]+3;case _af :_bbdg =_efde [_cfg ]-3;default:if _aca ._gac ==12&&_bae ._ff ==EOL {_aca ._gac =0;if _ ,_ggdf =_ccd .uncompress1d (_aca ,_efde ,_dde );_ggdf !=nil {return 0,_ggdf ;};_aca ._gac ++;if _ ,_ggdf =_ccd .uncompress1d (_aca ,_fbe ,_dde );_ggdf !=nil {return 0,_ggdf ;};_eeb ,_dba :=_ccd .uncompress1d (_aca ,_efde ,_dde );if _dba !=nil {return EOF ,_dba ;};_aca ._gac ++;return _eeb ,nil ;};_bbdg =_dde ;continue _fbg ;};if _bbdg <=_dde {_gbbe =!_gbbe ;_fbe [_ee ]=_bbdg ;_ee ++;if _cfg > 0{_cfg --;}else {_cfg ++;};for _bbdg < _dde &&_efde [_cfg ]<=_bbdg {_cfg +=2;};};};if _fbe [_ee ]!=_dde {_fbe [_ee ]=_dde ;};if _bae ==nil {return EOL ,nil ;};return _ee ,nil ;};func (_bfc *Decoder )initTables ()(_aac error ){if _bfc ._ecd ==nil {_bfc ._ecd ,_aac =_bfc .createLittleEndianTable (_fea );if _aac !=nil {return ;};_bfc ._fec ,_aac =_bfc .createLittleEndianTable (_fcb );if _aac !=nil {return ;};_bfc ._gdb ,_aac =_bfc .createLittleEndianTable (_ac );if _aac !=nil {return ;};};return nil ;};type Decoder struct{_fb ,_gb int ;_gd *runData ;_ecd []*code ;_fec []*code ;_gdb []*code ;};func New (r _f .StreamReader ,width ,height int ,dataOffset ,dataLength int64 )(*Decoder ,error ){_cg :=&Decoder {_fb :width ,_gb :height };_ab ,_eb :=_f .NewSubstreamReader (r ,uint64 (dataOffset ),uint64 (dataLength ));if _eb !=nil {return nil ,_eb ;};_ggd ,_eb :=_cgb (_ab );if _eb !=nil {return nil ,_eb ;};_cg ._gd =_ggd ;if _bag :=_cg .initTables ();_bag !=nil {return nil ,_bag ;};return _cg ,nil ;};func (_bff *Decoder )fillBitmap (_ga *_fc .Bitmap ,_agc int ,_efd []int ,_gc int )error {var _cgf byte ;_fd :=0;_acg :=_ga .GetByteIndex (_fd ,_agc );for _abc :=0;_abc < _gc ;_abc ++{_de :=byte (1);_dc :=_efd [_abc ];if (_abc &1)==0{_de =0;};for _fd < _dc {_cgf =(_cgf <<1)|_de ;_fd ++;if (_fd &7)==0{if _bgd :=_ga .SetByte (_acg ,_cgf );_bgd !=nil {return _bgd ;};_acg ++;_cgf =0;};};};if (_fd &7)!=0{_cgf <<=uint (8-(_fd &7));if _ddb :=_ga .SetByte (_acg ,_cgf );_ddb !=nil {return _ddb ;};};return nil ;};const (EOF =-3;_geb =-2;EOL =-1;_cb =8;_dag =(1<<_cb )-1;_fg =5;_dd =(1<<_fg )-1;);func (_bfff *Decoder )uncompress1d (_gae *runData ,_cba []int ,_cge int )(int ,error ){var (_eag =true ;_caf int ;_ffb *code ;_ecf int ;_efc error ;);_fga :for _caf < _cge {_eab :for {if _eag {_ffb ,_efc =_gae .uncompressGetCode (_bfff ._ecd );if _efc !=nil {return 0,_efc ;};}else {_ffb ,_efc =_gae .uncompressGetCode (_bfff ._fec );if _efc !=nil {return 0,_efc ;};};_gae ._gac +=_ffb ._gf ;if _ffb ._ff < 0{break _fga ;};_caf +=_ffb ._ff ;if _ffb ._ff < 64{_eag =!_eag ;_cba [_ecf ]=_caf ;_ecf ++;break _eab ;};};};if _cba [_ecf ]!=_cge {_cba [_ecf ]=_cge ;};_ebg :=EOL ;if _ffb !=nil &&_ffb ._ff !=EOL {_ebg =_ecf ;};return _ebg ,nil ;};func _cgb (_ce *_f .SubstreamReader )(*runData ,error ){_cfc :=&runData {_afb :_ce ,_gac :0,_bea :1};_gcg :=_bad (_ge (_bba ,int (_ce .Length ())),_dca );_cfc ._dfg =make ([]byte ,_gcg );if _ae :=_cfc .fillBuffer (0);_ae !=nil {if _ae ==_bc .EOF {_cfc ._dfg =make ([]byte ,10);_g .Log .Debug ("F\u0069\u006c\u006c\u0042uf\u0066e\u0072\u0020\u0066\u0061\u0069l\u0065\u0064\u003a\u0020\u0025\u0076",_ae );}else {return nil ,_ae ;};};return _cfc ,nil ;};const (_fe mmrCode =iota ;_bb ;_ca ;_agb ;_aa ;_ec ;_gg ;_fcc ;_af ;_ccc ;_da ;);type runData struct{_afb *_f .SubstreamReader ;_gac int ;_bea int ;_bbb int ;_dfg []byte ;_ddd int ;_cd int ;};func (_ggdc *runData )align (){_ggdc ._gac =((_ggdc ._gac +7)>>3)<<3};type mmrCode int ;func (_gec *runData )uncompressGetCodeLittleEndian (_bcg []*code )(*code ,error ){_cfa ,_ebd :=_gec .uncompressGetNextCodeLittleEndian ();if _ebd !=nil {_g .Log .Debug ("\u0055n\u0063\u006fm\u0070\u0072\u0065\u0073s\u0047\u0065\u0074N\u0065\u0078\u0074\u0043\u006f\u0064\u0065\u004c\u0069tt\u006c\u0065\u0045n\u0064\u0069a\u006e\u0020\u0066\u0061\u0069\u006ce\u0064\u003a \u0025\u0076",_ebd );return nil ,_ebd ;};_cfa &=0xffffff;_fbc :=_cfa >>(_fgd -_cb );_gce :=_bcg [_fbc ];if _gce !=nil &&_gce ._c {_fbc =(_cfa >>(_fgd -_cb -_fg ))&_dd ;_gce =_gce ._e [_fbc ];};return _gce ,nil ;};var (_ac =[][3]int {{4,0x1,int (_fe )},{3,0x1,int (_bb )},{1,0x1,int (_ca )},{3,0x3,int (_agb )},{6,0x3,int (_aa )},{7,0x3,int (_ec )},{3,0x2,int (_gg )},{6,0x2,int (_fcc )},{7,0x2,int (_af )},{10,0xf,int (_ccc )},{12,0xf,int (_da )},{12,0x1,int (EOL )}};_fea =[][3]int {{4,0x07,2},{4,0x08,3},{4,0x0B,4},{4,0x0C,5},{4,0x0E,6},{4,0x0F,7},{5,0x12,128},{5,0x13,8},{5,0x14,9},{5,0x1B,64},{5,0x07,10},{5,0x08,11},{6,0x17,192},{6,0x18,1664},{6,0x2A,16},{6,0x2B,17},{6,0x03,13},{6,0x34,14},{6,0x35,15},{6,0x07,1},{6,0x08,12},{7,0x13,26},{7,0x17,21},{7,0x18,28},{7,0x24,27},{7,0x27,18},{7,0x28,24},{7,0x2B,25},{7,0x03,22},{7,0x37,256},{7,0x04,23},{7,0x08,20},{7,0xC,19},{8,0x12,33},{8,0x13,34},{8,0x14,35},{8,0x15,36},{8,0x16,37},{8,0x17,38},{8,0x1A,31},{8,0x1B,32},{8,0x02,29},{8,0x24,53},{8,0x25,54},{8,0x28,39},{8,0x29,40},{8,0x2A,41},{8,0x2B,42},{8,0x2C,43},{8,0x2D,44},{8,0x03,30},{8,0x32,61},{8,0x33,62},{8,0x34,63},{8,0x35,0},{8,0x36,320},{8,0x37,384},{8,0x04,45},{8,0x4A,59},{8,0x4B,60},{8,0x5,46},{8,0x52,49},{8,0x53,50},{8,0x54,51},{8,0x55,52},{8,0x58,55},{8,0x59,56},{8,0x5A,57},{8,0x5B,58},{8,0x64,448},{8,0x65,512},{8,0x67,640},{8,0x68,576},{8,0x0A,47},{8,0x0B,48},{9,0x01,_geb },{9,0x98,1472},{9,0x99,1536},{9,0x9A,1600},{9,0x9B,1728},{9,0xCC,704},{9,0xCD,768},{9,0xD2,832},{9,0xD3,896},{9,0xD4,960},{9,0xD5,1024},{9,0xD6,1088},{9,0xD7,1152},{9,0xD8,1216},{9,0xD9,1280},{9,0xDA,1344},{9,0xDB,1408},{10,0x01,_geb },{11,0x01,_geb },{11,0x08,1792},{11,0x0C,1856},{11,0x0D,1920},{12,0x00,EOF },{12,0x01,EOL },{12,0x12,1984},{12,0x13,2048},{12,0x14,2112},{12,0x15,2176},{12,0x16,2240},{12,0x17,2304},{12,0x1C,2368},{12,0x1D,2432},{12,0x1E,2496},{12,0x1F,2560}};_fcb =[][3]int {{2,0x02,3},{2,0x03,2},{3,0x02,1},{3,0x03,4},{4,0x02,6},{4,0x03,5},{5,0x03,7},{6,0x04,9},{6,0x05,8},{7,0x04,10},{7,0x05,11},{7,0x07,12},{8,0x04,13},{8,0x07,14},{9,0x01,_geb },{9,0x18,15},{10,0x01,_geb },{10,0x17,16},{10,0x18,17},{10,0x37,0},{10,0x08,18},{10,0x0F,64},{11,0x01,_geb },{11,0x17,24},{11,0x18,25},{11,0x28,23},{11,0x37,22},{11,0x67,19},{11,0x68,20},{11,0x6C,21},{11,0x08,1792},{11,0x0C,1856},{11,0x0D,1920},{12,0x00,EOF },{12,0x01,EOL },{12,0x12,1984},{12,0x13,2048},{12,0x14,2112},{12,0x15,2176},{12,0x16,2240},{12,0x17,2304},{12,0x1C,2368},{12,0x1D,2432},{12,0x1E,2496},{12,0x1F,2560},{12,0x24,52},{12,0x27,55},{12,0x28,56},{12,0x2B,59},{12,0x2C,60},{12,0x33,320},{12,0x34,384},{12,0x35,448},{12,0x37,53},{12,0x38,54},{12,0x52,50},{12,0x53,51},{12,0x54,44},{12,0x55,45},{12,0x56,46},{12,0x57,47},{12,0x58,57},{12,0x59,58},{12,0x5A,61},{12,0x5B,256},{12,0x64,48},{12,0x65,49},{12,0x66,62},{12,0x67,63},{12,0x68,30},{12,0x69,31},{12,0x6A,32},{12,0x6B,33},{12,0x6C,40},{12,0x6D,41},{12,0xC8,128},{12,0xC9,192},{12,0xCA,26},{12,0xCB,27},{12,0xCC,28},{12,0xCD,29},{12,0xD2,34},{12,0xD3,35},{12,0xD4,36},{12,0xD5,37},{12,0xD6,38},{12,0xD7,39},{12,0xDA,42},{12,0xDB,43},{13,0x4A,640},{13,0x4B,704},{13,0x4C,768},{13,0x4D,832},{13,0x52,1280},{13,0x53,1344},{13,0x54,1408},{13,0x55,1472},{13,0x5A,1536},{13,0x5B,1600},{13,0x64,1664},{13,0x65,1728},{13,0x6C,512},{13,0x6D,576},{13,0x72,896},{13,0x73,960},{13,0x74,1024},{13,0x75,1088},{13,0x76,1152},{13,0x77,1216}};);const (_dca int =1024<<7;_bba int =3;_fgd uint =24;);func _ag (_cc [3]int )*code {return &code {_gf :_cc [0],_be :_cc [1],_ff :_cc [2]}};func (_ded *runData )fillBuffer (_gdf int )error {_ded ._ddd =_gdf ;_ ,_bdd :=_ded ._afb .Seek (int64 (_gdf ),_bc .SeekStart );if _bdd !=nil {if _bdd ==_bc .EOF {_g .Log .Debug ("\u0053\u0065\u0061\u006b\u0020\u0045\u004f\u0046");_ded ._cd =-1;}else {return _bdd ;};};if _bdd ==nil {_ded ._cd ,_bdd =_ded ._afb .Read (_ded ._dfg );if _bdd !=nil {if _bdd ==_bc .EOF {_g .Log .Trace ("\u0052\u0065\u0061\u0064\u0020\u0045\u004f\u0046");_ded ._cd =-1;}else {return _bdd ;};};};if _ded ._cd > -1&&_ded ._cd < 3{for _ded ._cd < 3{_dcc ,_feb :=_ded ._afb .ReadByte ();if _feb !=nil {if _feb ==_bc .EOF {_ded ._dfg [_ded ._cd ]=0;}else {return _feb ;};}else {_ded ._dfg [_ded ._cd ]=_dcc &0xFF;};_ded ._cd ++;};};_ded ._cd -=3;if _ded ._cd < 0{_ded ._dfg =make ([]byte ,len (_ded ._dfg ));_ded ._cd =len (_ded ._dfg )-3;};return nil ;};type code struct{_gf int ;_be int ;_ff int ;_e []*code ;_c bool ;};