Worldspace Shader + Bumpmap

Hello everybody! I have a problem, I have a Shader that I copied from a website whose function is to maintain the texture proportion equally on all sides of the object even if this object is resized. It works perfectly, the only problem is that it does not have Bumpmap (normalmap), Metallic, Height map, Occlusion, Detail mask properties. I wanted it to at least have the Bumpmap (normal map) property, but without losing the property of rendering the texture in “Worldspace”.
I don’t know anything about Shaders, I tried to modify this Shader with ChatGpt but without success.
I REALLY need this Shader for my project and I would be grateful if someone could edit this script and add the Bumpmap property. Thank you for your help.

Shader "Legacy Shaders/Diffuse - Worldspace" {
Properties {
    _Color ("Main Color", Color) = (1,1,1,1)
    _MainTex ("Base (RGB)", 2D) = "white" {}
    _Scale("Texture Scale", Float) = 1.0
}
SubShader {
    Tags { "RenderType"="Opaque" }
    LOD 200

CGPROGRAM
#pragma surface surf Lambert

sampler2D _MainTex;
fixed4 _Color;
float _Scale;

struct Input {
    float3 worldNormal;
    float3 worldPos;
};

void surf (Input IN, inout SurfaceOutput o) {
    float2 UV;
    fixed4 c;

    if (abs(IN.worldNormal.x) > 0.5) {
        UV = IN.worldPos.yz; // side
        c = tex2D(_MainTex, UV* _Scale); // use WALLSIDE texture
    }
    else if (abs(IN.worldNormal.z) > 0.5) {
        UV = IN.worldPos.xy; // front
        c = tex2D(_MainTex, UV* _Scale); // use WALL texture
    }
    else {
        UV = IN.worldPos.xz; // top
        c = tex2D(_MainTex, UV* _Scale); // use FLR texture
    }

    o.Albedo = c.rgb * _Color;
}
ENDCG
}

Fallback "Legacy Shaders/VertexLit"
}
Properties {
...
    _BumpMap("Normal", 2D) = "bump" {}
...
}
sampler2D _BumpMap;

void surf (Input IN, inout SurfaceOutput o) {
    float2 UV;

    if (abs(IN.worldNormal.x) > 0.5) {
        UV = IN.worldPos.yz; // side
    }
    else if (abs(IN.worldNormal.z) > 0.5) {
        UV = IN.worldPos.xy; // front
    }
    else {
        UV = IN.worldPos.xz; // top
    }

    fixed4 c = tex2D(_MainTex, UV* _Scale); // use WALLSIDE texture
    o.Normal = UnpackNormal(tex2D(_BumpMap, UV*_Scale));
    o.Albedo = c.rgb * _Color;
}