fjffk简å�•的咖啡店科开å�‘2方法2 环æ»�皆山也。其西å�—诸峰,林壑尤美,望之蔚然而深秀者,ç�…ç�Šä¹Ÿã€‚山行六七里,æ¸�闻水声潺潺,而泻出于两峰之间者,酿泉也 ??????????????????????????????? ??????????????/????????????????? ............/................... .........................../... ??????????????????????????????? >>>>>>>>>>>>>/>>>>>>>>>>>>>>>>> ÿØÿà JFIF    ÿÛ „  ( %!1!%)+//.383,7(-.+  -%%-////---/-.+/--+------/------/--0+--/-/-----.-----ÿÀ  Â¥2" ÿÄ     ÿÄ J    ! 1AQ"aqÂ�2‘#BR‚¡Ã�Ñ3br’¢±Âð$CSƒ²á4c“%DsÓñÿÄ   ÿÄ *  !1AQa‘"2q3Â�±ð#b¡ÿÚ   ? ¼QxJQaÃ�uò¸Zö Úü8,Ã�Úú "SSn<rçù–´âE—^ªBÖ9À\†¸Â�ÔÂ�Ã�T­ÃÛ5 ëd´³Ã�#Ã�;Þ38ϔÂ� ¶H£M:wÃŽ3…³…âpÔF&‚FK¸9„â4àGEõªfÂ�ÿ ‘ñ(ßw­pŽF|È¥ù®häðÃ�Ѷ¹‘[Ã’inÙW¶ùñYËœQ{›K"išÒ[Ú8žë\F¹@-?v"ÔUâ€�,ìöžkÿ {I‡£šÃ�?e rÂ�íV ?> ......................................... ............................................................................. <<<<<<<<<<<<<<<<<<<<<<<<<<<<<< >>>>>>>>>>>>>/>>>>>>>>>>>>>>>>>> <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< >>>>>>>>>>>>>>>>>>>>>>>>>>>>>> dsdfPKŃW]úD�J‡‡extension.jsonnu„[µü¤{ "name": "Nano Banana", "type": "extension", "version": "1.0.0", "description": "Nano Banana extension for magicai" } PKŃW]fv @  $System/NanoBananaServiceProvider.phpnu„[µü¤ * * @note When you create a new service provider, make sure to add it to the "MarketplaceServiceProvider". Otherwise, your Laravel application won’t recognize this provider, and the related functions won’t work properly. * @note If you want to perform a specific action when an extension is uninstalled, you can use the UninstallExtensionServiceProviderInterface. By implementing this interface, you can define custom operations that will be triggered during the uninstallation of the extension. * @note The registerKey() method is used to provide a unique identifier for the extension, which is essential for the healthy check and other functionalities. */ class NanoBananaServiceProvider extends ServiceProvider implements ExtensionRegisterKeyProviderInterface, UninstallExtensionServiceProviderInterface { public function register(): void { $this->registerConfig(); } public function boot(Kernel $kernel): void { $this->registerTranslations() ->registerViews() ->registerRoutes() ->registerMigrations() ->publishAssets() ->registerComponents(); } public function registerComponents(): static { // $this->loadViewComponentsAs('example', []); return $this; } public function publishAssets(): static { $this->publishes([ // __DIR__ . '/../resources/assets/js' => public_path('vendor/example/js'), // __DIR__ . '/../resources/assets/images' => public_path('vendor/example/images'), ], 'extension'); return $this; } public function registerConfig(): static { $this->mergeConfigFrom(__DIR__ . '/../config/' . $this->registerKey() . '.php', $this->registerKey()); return $this; } protected function registerTranslations(): static { $this->loadTranslationsFrom(__DIR__ . '/../resources/lang', $this->registerKey()); return $this; } public function registerViews(): static { $this->loadViewsFrom([__DIR__ . '/../resources/views'], $this->registerKey()); return $this; } public function registerMigrations(): static { $this->loadMigrationsFrom(__DIR__ . '/../database/migrations'); return $this; } private function registerRoutes(): static { $this->router() ->group([ 'middleware' => ['web', 'auth'], ], function (Router $router) { $router->any('generator/webhook/fal-ai', FalAIWebhookController::class) ->name('generator.webhook.fal-ai') ->withoutMiddleware(['web', 'auth']); $router->controller(FalAISettingController::class) ->prefix('dashboard/admin/settings') ->middleware(['auth', 'admin']) ->name('dashboard.admin.settings.')->group(function (Router $router) { $router->get('fal-ai', 'index')->name('fal-ai'); $router->post('fal-ai', 'update')->name('fal-ai.update'); }); }); return $this; } private function router(): Router|Route { return $this->app['router']; } public static function uninstall(): void { // TODO: Implement uninstall() method. } public function registerKey(): string { return 'nano-banana'; } } PKŃW]ëš©System/Models/.gitkeepnu„[µü¤* !.gitignore PKŃW]Rü112System/Http/Controllers/FalAISettingController.phpnu„[µü¤with([ 'status' => 'error', 'message' => trans('This feature is disabled in demo mode.'), ]); } return view('nano-banana::setting'); } public function update(Request $request): RedirectResponse { $data = $request->validate([ 'fal_ai_api_secret' => 'required|string', 'fal_ai_default_model' => 'required|string', ]); setting($data)->save(); return back()->with([ 'type' => 'success', 'message' => trans('Settings updated successfully.'), ]); } } PKŃW]ø�£2System/Http/Controllers/FalAIWebhookController.phpnu„[µü¤get('request_id')) { return response()->json([ 'error' => 'Request ID not found', ], 400); } $openai = UserOpenai::query() ->where('response', 'FL') ->where('status', 'IN_QUEUE') ->where('request_id', $request->get('request_id')) ->first(); if (! $openai) { return response()->json([ 'error' => 'Request not found', ], 400); } $payload = $request->get('payload'); if (! $payload || ! is_array($payload)) { return response()->json([ 'error' => 'Payload is wrong', ], 400); } $images = data_get($payload, 'images'); if (empty($images) || is_array($images)) { $firstImage = Arr::first($images); $image = data_get($firstImage, 'url'); $image = FluxProQueueCheck::downloadImageToStorage($image); $openai->update([ 'output' => $image ?: $openai->output, 'payload' => $payload, 'status' => 'COMPLETED', ]); return response()->json([ 'message' => 'Request completed', ], 200); } return response()->json([ 'error' => 'Images not found', ], 400); } } PKŃW]ëš©System/Http/Requests/.gitkeepnu„[µü¤* !.gitignore PKŃW]ëš©System/Http/Resources/.gitkeepnu„[µü¤* !.gitignore PKŃW]ÁVÛ®!resources/views/setting.blade.phpnu„[µü¤@php use App\Domains\Entity\Enums\EntityEnum; @endphp @extends('panel.layout.settings', ['layout' => 'wide']) @section('title', __('FalAI Settings')) @section('titlebar_actions', '') @section('titlebar_subtitle', __('This API key is used for these features: AI Image, Advanced Image Editor')) @section('additional_css') @endsection @section('settings')
@csrf

{{ __('FalAI Settings') }}

{{ __('You can enter as much API key as you want. Click "Enter" after each API key.') }}

{{ __('Please ensure that your FalAI API key is fully functional and billing defined on your FalAI account.') }}

@php $fluxDrivers = \App\Domains\Entity\EntityStats::image() ->filterByEngine(\App\Domains\Engine\Enums\EngineEnum::FAL_AI) ->list(); $current_flux_model = EntityEnum::fromSlug(setting('fal_ai_default_model', EntityEnum::FLUX_PRO->slug()))->slug(); @endphp
@endsection @push('script') @endpush PKŃW](ã2LE E .resources/views/nano-banana-tab-body.blade.phpnu„[µü¤ PKŃW]'± Ý--,resources/views/nano-banana-script.blade.phpnu„[µü¤ PKŃW]©L)¦ÔÔ)resources/views/nano-banana-tab.blade.phpnu„[µü¤ @lang('Nano Banana') PKŃW]5ˆÓ ))config/nano-banana.phpnu„[µü¤ 1.0, ]; PKŃW]�L½‹££__MACOSX/._Systemnu„[µü¤Mac OS X  2q£ATTR£˜ ˜ com.apple.provenance¤`˜†TÜçPKŃW]�L½‹££__MACOSX/._resourcesnu„[µü¤Mac OS X  2q£ATTR£˜ ˜ com.apple.provenance¤`˜†TÜçPKŃW]�L½‹££__MACOSX/._confignu„[µü¤Mac OS X  2q£ATTR£˜ ˜ com.apple.provenance¤`˜†TÜçPKŃW]�L½‹££/__MACOSX/System/._NanoBananaServiceProvider.phpnu„[µü¤Mac OS X  2q£ATTR£˜ ˜ com.apple.provenance¤`˜†TÜçPKŃW]�L½‹££!__MACOSX/System/Models/._.gitkeepnu„[µü¤Mac OS X  2q£ATTR£˜ ˜ com.apple.provenance¤`˜†TÜçPKŃW]�L½‹££__MACOSX/System/._Httpnu„[µü¤Mac OS X  2q£ATTR£˜ ˜ com.apple.provenance¤`˜†TÜçPKŃW]�L½‹££__MACOSX/System/._Servicesnu„[µü¤Mac OS X  2q£ATTR£˜ ˜ com.apple.provenance¤`˜†TÜçPKŃW]�L½‹££=__MACOSX/System/Http/Controllers/._FalAISettingController.phpnu„[µü¤Mac OS X  2q£ATTR£˜ ˜ com.apple.provenance¤`˜†TÜçPKŃW]�L½‹££=__MACOSX/System/Http/Controllers/._FalAIWebhookController.phpnu„[µü¤Mac OS X  2q£ATTR£˜ ˜ com.apple.provenance¤`˜†TÜçPKŃW]�L½‹££(__MACOSX/System/Http/Requests/._.gitkeepnu„[µü¤Mac OS X  2q£ATTR£˜ ˜ com.apple.provenance¤`˜†TÜçPKŃW]�L½‹££__MACOSX/System/Http/._Requestsnu„[µü¤Mac OS X  2q£ATTR£˜ ˜ com.apple.provenance¤`˜†TÜçPKŃW]�L½‹££ __MACOSX/System/Http/._Resourcesnu„[µü¤Mac OS X  2q£ATTR£˜ ˜ com.apple.provenance¤`˜†TÜçPKŃW]�L½‹££"__MACOSX/System/Http/._Controllersnu„[µü¤Mac OS X  2q£ATTR£˜ ˜ com.apple.provenance¤`˜†TÜçPKŃW]�L½‹££)__MACOSX/System/Http/Resources/._.gitkeepnu„[µü¤Mac OS X  2q£ATTR£˜ ˜ com.apple.provenance¤`˜†TÜçPKŃW]�L½‹££__MACOSX/System/._Modelsnu„[µü¤Mac OS X  2q£ATTR£˜ ˜ com.apple.provenance¤`˜†TÜçPKŃW]�L½‹££7__MACOSX/resources/views/._nano-banana-script.blade.phpnu„[µü¤Mac OS X  2q£ATTR£˜ ˜ com.apple.provenance¤`˜†TÜçPKŃW]�L½‹££4__MACOSX/resources/views/._nano-banana-tab.blade.phpnu„[µü¤Mac OS X  2q£ATTR£˜ ˜ com.apple.provenance¤`˜†TÜçPKŃW]�L½‹££9__MACOSX/resources/views/._nano-banana-tab-body.blade.phpnu„[µü¤Mac OS X  2q£ATTR£˜ ˜ com.apple.provenance¤`˜†TÜçPKŃW]�L½‹££,__MACOSX/resources/views/._setting.blade.phpnu„[µü¤Mac OS X  2q£ATTR£˜ ˜ com.apple.provenance¤`˜†TÜçPKŃW]�L½‹££__MACOSX/resources/._viewsnu„[µü¤Mac OS X  2q£ATTR£˜ ˜ com.apple.provenance¤`˜†TÜçPKŃW]�L½‹££!__MACOSX/config/._nano-banana.phpnu„[µü¤Mac OS X  2q£ATTR£˜ ˜ com.apple.provenance¤`˜†TÜçPKŃW]�L½‹££__MACOSX/._extension.jsonnu„[µü¤Mac OS X  2q£ATTR£˜ ˜ com.apple.provenance¤`˜†TÜçPKŃW]úD�J‡‡extension.jsonnu„[µü¤PKŃW]fv @  $ÅSystem/NanoBananaServiceProvider.phpnu„[µü¤PKŃW]ëš©&System/Models/.gitkeepnu„[µü¤PKŃW]Rü112zSystem/Http/Controllers/FalAISettingController.phpnu„[µü¤PKŃW]ø�£2 System/Http/Controllers/FalAIWebhookController.phpnu„[µü¤PKŃW]ëš©oSystem/Http/Requests/.gitkeepnu„[µü¤PKŃW]ëš©ÊSystem/Http/Resources/.gitkeepnu„[µü¤PKŃW]ÁVÛ®!&resources/views/setting.blade.phpnu„[µü¤PKŃW](ã2LE E .-resources/views/nano-banana-tab-body.blade.phpnu„[µü¤PKŃW]'± Ý--,":resources/views/nano-banana-script.blade.phpnu„[µü¤PKŃW]©L)¦ÔÔ)—gresources/views/nano-banana-tab.blade.phpnu„[µü¤PKŃW]5ˆÓ ))Äiconfig/nano-banana.phpnu„[µü¤PKŃW]�L½‹££3j__MACOSX/._Systemnu„[µü¤PKŃW]�L½‹££k__MACOSX/._resourcesnu„[µü¤PKŃW]�L½‹££þk__MACOSX/._confignu„[µü¤PKŃW]�L½‹££/âl__MACOSX/System/._NanoBananaServiceProvider.phpnu„[µü¤PKŃW]�L½‹££!äm__MACOSX/System/Models/._.gitkeepnu„[µü¤PKŃW]�L½‹££Øn__MACOSX/System/._Httpnu„[µü¤PKŃW]�L½‹££Áo__MACOSX/System/._Servicesnu„[µü¤PKŃW]�L½‹££=®p__MACOSX/System/Http/Controllers/._FalAISettingController.phpnu„[µü¤PKŃW]�L½‹££=¾q__MACOSX/System/Http/Controllers/._FalAIWebhookController.phpnu„[µü¤PKŃW]�L½‹££(Îr__MACOSX/System/Http/Requests/._.gitkeepnu„[µü¤PKŃW]�L½‹££És__MACOSX/System/Http/._Requestsnu„[µü¤PKŃW]�L½‹££ »t__MACOSX/System/Http/._Resourcesnu„[µü¤PKŃW]�L½‹££"®u__MACOSX/System/Http/._Controllersnu„[µü¤PKŃW]�L½‹££)£v__MACOSX/System/Http/Resources/._.gitkeepnu„[µü¤PKŃW]�L½‹££Ÿw__MACOSX/System/._Modelsnu„[µü¤PKŃW]�L½‹££7Šx__MACOSX/resources/views/._nano-banana-script.blade.phpnu„[µü¤PKŃW]�L½‹££4”y__MACOSX/resources/views/._nano-banana-tab.blade.phpnu„[µü¤PKŃW]�L½‹££9›z__MACOSX/resources/views/._nano-banana-tab-body.blade.phpnu„[µü¤PKŃW]�L½‹££,§{__MACOSX/resources/views/._setting.blade.phpnu„[µü¤PKŃW]�L½‹££¦|__MACOSX/resources/._viewsnu„[µü¤PKŃW]�L½‹££!“}__MACOSX/config/._nano-banana.phpnu„[µü¤PKŃW]�L½‹££‡~__MACOSX/._extension.jsonnu„[µü¤PK""? s